drewdan / paypal
为 V2 API 简单的 Paypal 客户端
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.4
- laravel/framework: ^10.0.
- netresearch/jsonmapper: ^v4.0.0
Requires (Dev)
- ext-json: *
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
- spatie/laravel-ray: ^1.35
README
此 Laravel 包通过生成 API 请求并使用可用的类创建接口,与 PayPal API 进行交互。
我创建了此包,因为当时我找不到适合我需求的包(虽然这可能是因为我的 Google 技能不足。)- 因此我创建了它。
此包使用的 API 文档可以在以下位置找到: https://developer.paypal.com/docs/api/payments/v2/
安装
最佳安装方式是通过 composer
composer require drewdan/paypal
使用以下命令发布配置文件
php artisan vendor:publish --tag=drewdan-paypal-config
订单
订单类是您用于从客户处创建和捕获付款的类。
创建订单
use Drewdan\Paypal\Services\Orders\Order;
$order = new Order;
$purchaseUnits = [
[
'amount' => [
'currency_code' => 'GBP',
'value' => 12.50,
],
],
];
$applicationContext = [
'brand_name' => 'My Online Shop',
'shipping_preference' => 'NO_SHIPPING',
'user_action' => 'PAY_NOW',
'return_url' => 'https:///return',
'cancel_url' => 'https:///cancel',
];
$paypalOrder = $order->create($purchaseUnits, 'CAPTURE', $applicationContext);
return redirect($paypalOrder->getLinkByRel('approve')->href);
上述代码片段将创建一个价值 £12.50 的 PayPal 订单,并返回一个 PaypalOrder 实例。此对象包含一个辅助方法,可以访问请求返回的 PayPal 链接。您可以使用此方法将用户重定向到 PayPal 进行付款。
应用程序上下文的参数可以在以下位置找到 https://developer.paypal.com/docs/api/orders/v2/#definition-order_application_context
这将授权付款,但不会捕获它。要捕获付款,您需要订单 ID,该 ID 将在用户重定向回时通过 GET 请求传递。您可以使用适合您应用程序的任何机制来跟踪此订单 ID。
捕获付款
use Drewdan\Paypal\Services\Orders\Order;
$order = new Order;
//first retrieve the order from Paypal
$paypalOrder = $order->show(request()->PayerID);
//here you could do any validation you wish to verify the order is correct, checking the order amount etc before capturing the payment
$order->capture($paypalOrder);
完成此操作后,您将已捕获付款。
捕获
退款已捕获的付款
付款完成后,有时您可能需要退款,例如,如果您无法履行订单。Captures 类具有显示现有已捕获付款或退款的 功能。
退款方法接受以下参数
use Drewdan\Paypal\Services\Payments\Captures;
$client = new Captures;
$capture = $client->refund('captureId', 5.99, 'GBP', 'Some reason', 'Invoice 123');
显示已捕获的付款
此调用将显示已捕获付款的详细信息。它们通过捕获 ID 获取。理想情况下,当您捕获付款时,您会将其捕获 ID 存储在数据库中,针对给定的订单,这样您就可以在未来进行退款或查看有关捕获的详细信息。
use Drewdan\Paypal\Services\Payments\Captures;
$client = new Captures;
$capture = $client->show('captureId');
贡献
欢迎贡献。如果您想添加任何内容,请发起一个 Pull Request。如果您在此包中发现错误或其他问题,请在存储库中发起一个问题。