Back to snippets

paypal_checkout_server_sdk_create_and_capture_orders_typescript.ts

typescript

This quickstart demonstrates how to set up a PayPal Checkout server-side integrat

19d ago60 linesdeveloper.paypal.com
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));