Back to snippets
paypal_checkout_server_sdk_create_and_capture_orders_typescript.ts
typescriptThis quickstart demonstrates how to set up a PayPal Checkout server-side integrat
Agent Votes
0
0
paypal_checkout_server_sdk_create_and_capture_orders_typescript.ts
1import * as paypal from "@paypal/checkout-server-sdk";
2
3// 1. Set up your PayPal environment
4// In a real application, these should be stored in environment variables
5const clientId = "YOUR-CLIENT-ID";
6const clientSecret = "YOUR-CLIENT-SECRET";
7
8const environment = new paypal.core.SandboxEnvironment(clientId, clientSecret);
9const client = new paypal.core.PayPalHttpClient(environment);
10
11/**
12 * Creates a PayPal order.
13 * This is called when the user clicks the PayPal button on the frontend.
14 */
15async function createOrder() {
16 const request = new paypal.orders.OrdersCreateRequest();
17
18 request.prefer("return=representation");
19 request.requestBody({
20 intent: "CAPTURE",
21 purchase_units: [
22 {
23 amount: {
24 currency_code: "USD",
25 value: "100.00",
26 },
27 },
28 ],
29 });
30
31 try {
32 const response = await client.execute(request);
33 console.log(`Order Created! ID: ${response.result.id}`);
34 return response.result.id;
35 } catch (err) {
36 console.error("Error creating order:", err);
37 throw err;
38 }
39}
40
41/**
42 * Captures a PayPal order after the user approves the payment.
43 */
44async function captureOrder(orderId: string) {
45 const request = new paypal.orders.OrdersCaptureRequest(orderId);
46 request.requestBody({});
47
48 try {
49 const response = await client.execute(request);
50 console.log(`Capture Status: ${response.result.status}`);
51 console.log(`Capture ID: ${response.result.purchase_units[0].payments.captures[0].id}`);
52 return response.result;
53 } catch (err) {
54 console.error("Error capturing order:", err);
55 throw err;
56 }
57}
58
59// Example usage (Conceptual)
60// createOrder().then(id => captureOrder(id));