|

|  How to Use PayPal Orders API to Create and Capture Orders in PHP

How to Use PayPal Orders API to Create and Capture Orders in PHP

October 31, 2024

Learn to create and capture orders using PayPal Orders API in PHP with our comprehensive step-by-step guide. Enhance your e-commerce solutions effectively.

How to Use PayPal Orders API to Create and Capture Orders in PHP

 

Initialize PayPal SDK

 

  • Install the PayPal PHP SDK for easy interaction with PayPal's API. You can do this by utilizing Composer:
  •  

    composer require paypal/rest-api-sdk-php
    

 

Set Up Environment and Credentials

 

  • Configure your environment variables such as `clientId`, `clientSecret`, and set your mode to `sandbox` or `live` depending on your needs. Ensure you securely store these credentials.

 

$clientId = "YOUR_CLIENT_ID";
$clientSecret = "YOUR_CLIENT_SECRET";
$environment = new \PayPalCheckoutSdk\Core\SandboxEnvironment($clientId, $clientSecret);
$client = new \PayPalCheckoutSdk\Core\PayPalHttpClient($environment);

 

Create an Order

 

  • Define the order details including the amount, currency, and description. Then, create an order by sending a POST request to PayPal's Orders API.

 

use PayPalCheckoutSdk\Orders\OrdersCreateRequest;

$request = new OrdersCreateRequest();
$request->prefer('return=representation');
$request->body = [
    "intent" => "CAPTURE",
    "purchase_units" => [
        [
            "amount" => [
                "currency_code" => "USD",
                "value" => "100.00"
            ]
        ]
    ]
];

try {
    $response = $client->execute($request);
    echo "Order ID: " . $response->result->id;
} catch (HttpException $ex) {
    echo $ex->statusCode;
    print_r($ex->getMessage());
}

 

Capture an Order

 

  • Once the order is approved, execute a capture command on the previously created order. Check for a successful response to confirm the capture.

 

use PayPalCheckoutSdk\Orders\OrdersCaptureRequest;

$request = new OrdersCaptureRequest($response->result->id);
$request->prefer('return=representation');

try {
    $capture = $client->execute($request);
    echo "Capture ID: " . $capture->result->id;
} catch (HttpException $ex) {
    echo $ex->statusCode;
    print_r($ex->getMessage());
}

 

Handle Webhook Events

 

  • To ensure your system acknowledges various events like order completion or payment cancellations, set up webhooks in your PayPal developer account to receive event notifications.
  • Implement logic in your endpoint to respond to PayPal's POST notifications, allowing you to handle asynchronous events effectively.

 

$payload = file_get_contents('php://input');
$headers = getallheaders();
$signatureVerification = new \PayPalCheckoutSdk\Webhooks\WebhookEventVerifySignature();

try {
    $verificationResult = $client->execute($signatureVerification);
    // Process webhook event data here
} catch (Exception $e) {
    http_response_code(400);
    exit();
}

http_response_code(200);

 

Testing and Validation

 

  • Thoroughly test your integration using PayPal's sandbox environment to simulate various order scenarios and transactions without impacting real accounts.
  • After successful validation and testing, switch to the live environment for production use by changing the client environment configuration.