extensopartner/paypal-checkout-sdk

PayPal Checkout REST APIs 的 PHP SDK

1.0.0 2019-02-04 06:59 UTC

This package is not auto-updated.

Last update: 2024-09-23 07:40:21 UTC


README

Home Image

欢迎使用 PayPal PHP SDK。本仓库包含 PayPal 的 PHP SDK 和用于 v2/checkout/ordersv2/payments API 的示例。

这是下一个主要 PayPal SDK 的一部分。它包含一个简化接口,仅提供简单的模型对象和 HTTP 调用的蓝图。此仓库目前包含 PayPal Checkout API 的功能,包括 Orders V2Payments V2

有关更多信息,请参阅PayPal Checkout 集成指南。有关设置 SDK 的更多信息,请参阅设置您的 SDK

先决条件

PHP 5.6 及以上版本

支持 TLS 1.2 的环境(更多信息请访问 TLS-update 网站)

使用方法

二进制文件

使用 PayPal SDK 不必必须分支此仓库。您可以通过PayPal Checkout 服务器 SDK来配置和使用 SDK,而无需分支此代码。

要贡献或引用示例,您可以分支/引用此仓库。

设置凭据

通过访问https://developer.paypal.com/developer/applications 并生成一个 REST API 应用来获取客户端 ID 和客户端密钥。从那里获取 客户端 ID密钥

require __DIR__ . '/vendor/autoload.php';
use PayPalCheckoutSdk\Core\PayPalHttpClient;
use PayPalCheckoutSdk\Core\SandboxEnvironment;
// Creating an environment
$clientId = "<<PAYPAL-CLIENT-ID>>";
$clientSecret = "<<PAYPAL-CLIENT-SECRET>>";

$environment = new SandBoxEnvironment($clientId, $clientSecret);
$client = new PayPalHttpClient($environment);

示例

创建订单

代码

// Construct a request object and set desired parameters
// Here, OrdersCreateRequest() creates a POST request to /v2/checkout/orders
use PayPalCheckoutSdk\Orders\OrdersCreateRequest;
$request = new OrdersCreateRequest();
$request->prefer('return=representation');
$request->body = [
                     "intent" => "CAPTURE",
                     "purchase_units" => [[
                         "reference_id" => "test_ref_id1",
                         "amount" => [
                             "value" => "100.00",
                             "currency_code" => "USD"
                         ]
                     ]],
                     "application_context" => [
                          "cancel_url" => "https://example.com/cancel",
                          "return_url" => "https://example.com/return"
                     ] 
                 ];

try {
    // Call API with your client and get a response for your call
    $response = $client->execute($request);
    
    // If call returns body in response, you can get the deserialized version from the result attribute of the response
    print_r($response);
}catch (HttpException $ex) {
    echo $ex->statusCode;
    print_r($ex->getMessage());
}

示例输出

Status Code: 201
Id: 8GB67279RC051624C
Intent: CAPTURE
Gross_amount:
	Currency_code: USD
	Value: 100.00
Purchase_units:
	1:
		Amount:
			Currency_code: USD
			Value: 100.00
Create_time: 2018-08-06T23:34:31Z
Links:
	1:
		Href: https://api.sandbox.paypal.com/v2/checkout/orders/8GB67279RC051624C
		Rel: self
		Method: GET
	2:
		Href: https://www.sandbox.paypal.com/checkoutnow?token=8GB67279RC051624C
		Rel: approve
		Method: GET
	3:
		Href: https://api.sandbox.paypal.com/v2/checkout/orders/8GB67279RC051624C/capture
		Rel: capture
		Method: POST
Status: CREATED

捕获订单

在捕获之前,订单应由买家使用创建订单响应中返回的批准 URL 进行批准。

执行代码

use PayPalCheckoutSdk\Orders\OrdersCaptureRequest;
// Here, OrdersCaptureRequest() creates a POST request to /v2/checkout/orders
// $response->result->id gives the orderId of the order created above
$request = new OrdersCaptureRequest("APPROVED-ORDER-ID");
$request->prefer('return=representation');
try {
    // Call API with your client and get a response for your call
    $response = $client->execute($request);
    
    // If call returns body in response, you can get the deserialized version from the result attribute of the response
    print_r($response);
}catch (HttpException $ex) {
    echo $ex->statusCode;
    print_r($ex->getMessage());
}

示例输出

Status Code: 201
Id: 8GB67279RC051624C
Create_time: 2018-08-06T23:39:11Z
Update_time: 2018-08-06T23:39:11Z
Payer:
	Name:
		Given_name: test
		Surname: buyer
	Email_address: test-buyer@paypal.com
	Payer_id: KWADC7LXRRWCE
	Phone:
		Phone_number:
			National_number: 408-411-2134
	Address:
		Country_code: US
Links:
	1:
		Href: https://api.sandbox.paypal.com/v2/checkout/orders/3L848818A2897925Y
		Rel: self
		Method: GET
Status: COMPLETED

运行测试

要使用您的客户端 ID 和密钥运行集成测试,请克隆此仓库并运行以下命令

$ composer install
$ CLIENT_ID=YOUR_SANDBOX_CLIENT_ID CLIENT_SECRET=OUR_SANDBOX_CLIENT_SECRET composer integration

示例

您可以尝试创建和捕获订单

要尝试不同示例,请检查此链接

注意:请将 PayPalClient.php 更新为您的沙箱客户端凭据,或在执行示例时将客户端凭据作为环境变量传递。

许可

代码在SDK 许可证下发布