drewdan/paypal

为 V2 API 简单的 Paypal 客户端

v3.1.1 2024-05-03 19:36 UTC

This package is auto-updated.

Last update: 2024-09-03 20:41:23 UTC


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。如果您在此包中发现错误或其他问题,请在存储库中发起一个问题。