phpjuice / paypal-checkout-sdk
PayPal's PHP SDK for Checkout REST APIs
Installs: 33 944
Dependents: 0
Suggesters: 0
Security: 0
Stars: 58
Watchers: 5
Forks: 8
Open Issues: 1
Requires
- php: ^8.1|^8.2|^8.3
- ext-json: *
- brick/money: ^0.5.2
- phpjuice/paypal-http-client: ^1.0
Requires (Dev)
- laravel/pint: ^1.18
- pestphp/pest: ^1.18
- phpstan/phpstan: ^0.12
README
This Package is a PHP SDK wrapper around version 2 of the PayPal rest API. It provides a simple, fluent API to create and capture orders with both sandbox and production environments supported.
To learn all about it, head over to the extensive documentation.
Installation
PayPal Checkout SDK Package requires PHP 7.4 or higher.
INFO: If you are using an older version of php this package may not function correctly.
The supported way of installing PayPal Checkout SDK package is via Composer.
composer require phpjuice/paypal-checkout-sdk
Setup
PayPal Checkout SDK is designed to simplify using the new PayPal checkout api in your app.
Setup Credentials
Get client ID and client secret by going to https://developer.paypal.com/developer/applications and generating a REST API app. Get Client ID and Secret from there.
Setup a Paypal Client
Inorder to communicate with PayPal platform we need to set up a client first :
Create a client with sandbox environment :
// import namespace use PayPal\Http\Environment\SandboxEnvironment; use PayPal\Http\PayPalClient; // client id and client secret retrieved from PayPal $clientId = "<<PAYPAL-CLIENT-ID>>"; $clientSecret = "<<PAYPAL-CLIENT-SECRET>>"; // create a new sandbox environment $environment = new SandboxEnvironment($clientId, $clientSecret); // create a new client $client = new PayPalClient($environment);
Create a client with production environment :
// import namespace use PayPal\Http\Environment\ProductionEnvironment; use PayPal\Http\PayPalClient; // client id and client secret retrieved from PayPal $clientId = "<<PAYPAL-CLIENT-ID>>"; $clientSecret = "<<PAYPAL-CLIENT-SECRET>>"; // create a new sandbox environment $environment = new ProductionEnvironment($clientId, $clientSecret); // create a new client $client = new PayPalClient($environment);
INFO: head over to the extensive documentation.
Usage
Create an Order
// Import namespace use PayPal\Checkout\Requests\OrderCreateRequest; use PayPal\Checkout\Orders\AmountBreakdown; use PayPal\Checkout\Orders\Item; use PayPal\Checkout\Orders\Order; use PayPal\Checkout\Orders\PurchaseUnit; // Create a purchase unit with the total amount $purchase_unit = new PurchaseUnit(AmountBreakdown::of('100.00')); // Create & add item to purchase unit $purchase_unit->addItem(Item::create('Item 1', '100.00', 'USD', 1)); // Create a new order with intent to capture a payment $order = new Order(); // Add a purchase unit to order $order->addPurchaseUnit($purchase_unit); // Create an order create http request $request = new OrderCreateRequest($order); // Send request to PayPal $response = $client->send($request); // Parse result $result = json_decode((string) $response->getBody()); echo $result->id; // id of the created order echo $result->intent; // CAPTURE echo $result->status; // CREATED
INFO: head over to the extensive documentation.
Capture an Order
// Import namespace use PayPal\Checkout\Requests\OrderCaptureRequest; // Create an order capture http request $request = new OrderCaptureRequest($order_id); // Send request to PayPal $response = $client->send($request); // Parse result $result = json_decode((string) $response->getBody()); echo $result->id; // id of the captured order echo $result->status; // CAPTURED
INFO: head over to the extensive documentation.
Changelog
Please see the changelog for more information on what has changed recently.
Contributing
Please see CONTRIBUTING.md for details and a todo list.
Security
If you discover any security related issues, please email author instead of using the issue tracker.
Credits
License
license. Please see the Licence for more information.