|

|  How to Use PayPal Invoicing API to Create and Send Invoices in PHP

How to Use PayPal Invoicing API to Create and Send Invoices in PHP

October 31, 2024

Master PayPal Invoicing API in PHP: Create & send invoices effortlessly. Step-by-step guide to integrate, customize, and streamline your billing process.

How to Use PayPal Invoicing API to Create and Send Invoices in PHP

 

Configure Your Environment

 

  • Ensure you have the PayPal PHP SDK installed, which helps in interacting with the PayPal API endpoints. You can install it using Composer:

 

composer require paypal/rest-api-sdk-php

 

  • Have your API credentials ready, including Client ID and Secret, which can be generated from the PayPal Developer Dashboard under the API credentials section.

 

Initialize API Context

 

  • Create an `ApiContext` object which holds your credentials and the environment. This context will be used to make API calls to PayPal:

 

use PayPal\Rest\ApiContext;
use PayPal\Auth\OAuthTokenCredential;

$apiContext = new ApiContext(
    new OAuthTokenCredential(
        'YOUR_CLIENT_ID',     // ClientID
        'YOUR_CLIENT_SECRET'      // ClientSecret
    )
);

$apiContext->setConfig([
    'mode' => 'sandbox', // or 'live' for production mode
    'http.ConnectionTimeOut' => 30,
    'log.LogEnabled' => false,
    'log.FileName' => '',
    'log.LogLevel' => 'FINE', // Available options: DEBUG, INFO, WARN, ERROR
    'validation.level' => 'log',
    'cache.enabled' => true,
]);

 

Create an Invoice in PHP

 

  • Instantiate an `Invoice` object and set the necessary data such as merchant info, billing info, items, and other details:

 

use PayPal\Api\Invoice;
use PayPal\Api\MerchantInfo;
use PayPal\Api\BillingInfo;
use PayPal\Api\InvoiceItem;
use PayPal\Api\ShippingInfo;

$invoice = new Invoice();

$invoice->setMerchantInfo(new MerchantInfo()
    ->setEmail('merchant@example.com')
    ->setFirstName('John')
    ->setLastName('Doe')
    ->setBusinessName('John Doe Online Store')
    ->setPhone('555-555-5555')
);

$billing = new BillingInfo();
$billing->setEmail('customer@example.com');
$invoice->setBillingInfo([$billing]);

$item = new InvoiceItem();
$item->setName('Sample Item')
    ->setQuantity(1)
    ->setUnitPrice(new \PayPal\Api\Currency(array('value' => 10, 'currency' => 'USD')));
$invoice->setItems([$item]);

 

Send the Invoice

 

  • After configuring the invoice object, use the `create` method to create the invoice on PayPal's servers and then send it:

 

try {
    $invoice->create($apiContext);
    $invoice->send($apiContext);
    echo "Invoice sent successfully!";
} catch (Exception $ex) {
    echo "Error creating or sending invoice: " . $ex->getMessage();
}

 

Handle Errors and Exceptions

 

  • Make sure to implement error handling to catch and manage API errors, including logging of exceptions for debugging and resilience:

 

try {
    $invoice->create($apiContext);
    $invoice->send($apiContext);
} catch (\PayPal\Exception\PayPalConnectionException $ex) {
    // This will print the detailed error message
    echo $ex->getData();
} catch (Exception $ex) {
    die($ex);
}

 

  • Review the API logs and responses captured in case of exceptions to improve understanding and error resolution processes.