tbclla / laravel-revolut-merchant
Revolut 商户 API 的非官方 Laravel 封装
Requires
- guzzlehttp/guzzle: ^6.5
Requires (Dev)
- orchestra/testbench: ^5.1
This package is auto-updated.
Last update: 2024-09-19 20:04:59 UTC
README
Laravel-Revolut (商户)
Revolut 商户 API 的非官方 Laravel 封装。
有关 Revolut 商户 API 的 开放 API 的配套包可以在此找到:here。
需求
- Laravel >=5.8
- PHP >=7.2
入门指南
请按照以下指南安装此包,并阅读 Revolut 的 商户 API 文档 了解 API 提供的功能。
⚠️ 请使用 沙箱账户 设置此包,确保一切正常后再切换到您的真实账户。
安装
通过 Composer 拉取包
composer require tbclla/laravel-revolut-merchant
服务提供者 & 门面
如果您已禁用自动发现,请将服务提供者和门面添加到您的 config/app.php
。
'providers' => [ // ... tbclla\RevolutMerchant\Providers\RevolutMerchantServiceProvider::class, ], 'aliases' => [ // ... 'Merchant' => tbclla\RevolutMerchant\Facades\Merchant::class, ]
发布配置(可选)
如果您想将此包的配置发布到您的配置目录,请使用以下 artisan 命令。
php artisan vendor:publish --provider "tbclla\RevolutMerchant\Providers\RevolutMerchantServiceProvider"
设置环境变量
将以下密钥添加到您的项目 .env
文件中,因为所有配置值都是从那里读取的。
❗请使用您的商户账户中的 API 密钥完成 REVOLUT_MERCHANT_API_KEY
。
REVOLUT_MERCHANT_SANDBOX=true
REVOLUT_MERCHANT_API_KEY=
这样就完成了。
如何使用此包
要使用客户端,您可以实例化一个新的 tbclla\RevolutMerchant\Client
,它接受您的 API 密钥以及是否在沙箱模式下运行
use tbclla\RevolutMerchant\Client; // sandbox $merchant = new Client('your_api_key', true); // production $merchant = new Client('your_api_key'); $merchant->order()->get($orderId);
或者您可以使用门面,它会注入您的环境值。
为了简洁,本文档中的所有示例都使用门面。
use tbclla\RevolutMerchant\Facades\Merchant; Merchant::order()->get($id);
订单
有关如何使用订单端点的更多信息,请参阅 Revolut 的官方订单文档。
创建订单
Merchant::order()->create([ "amount" => 200, "capture_mode" => "MANUAL", "merchant_order_id" => "00122", "customer_email" => "sally.gibson@gmail.com", "description" => "description", "currency" => "GBP", "settlement_currency" => "USD", "merchant_customer_id" => "sally01" ]);
检索订单
$orderId = 'd41c46db-5f82-4dd7-8a22-a43ac517b6df'; Merchant::order()->get($orderId);
捕获订单
Merchant::order()->capture($orderId);
取消订单
Merchant::order()->cancel($orderId);
退款订单
Merchant::order()->refund($orderId, [ "amount" => 100, "currency" => "GBP", "merchant_order_id" => "00122", "description" => null ]);
Web-Hooks
有关更多信息,请参阅 Revolut 的官方 Web-Hooks 文档。
创建 Web-Hook
Merchant::webhook()->create('https://myapp.com/webhook');
撤销 Web-Hook
Merchant::webhook()->revoke();
检索 Web-Hooks
Merchant::webhook()->retrieve();
Revolut Checkout Widget API
要使用结账小部件,您必须在将使用结账小部件的任何页面上嵌入 Revolut 的 脚本。
此包包括一个 @revolutMerchantScript
blade 指令,它将为您嵌入此脚本,并设置正确的源,具体取决于您的配置环境。
<head> <title>Checkout Page</title> @revolutMerchantScript </head> <body> ... </body>
简要示例
以下是一个快速示例,说明如何创建新的付款订单,然后显示付款弹出窗口。
在此示例中,登录用户向 /purchase
路由发送 AJAX 请求,在那里创建一个新的付款订单。然后,将付款订单的 public_id
返回并传递给 RevolutCheckout()
。
PHP
Route::post('/purchase', function() { // Get the logged in user $user = Auth::user(); // Fetch the item being purchased $item = Item::find(request('item_id')); // Create a new payment order $paymentOrder = Merchant::order()->create([ "currency" => "GBP", "description" => $item->name, "amount" => $item->price, "customer_email" => $user->email, "merchant_customer_id" => $user->id, ]); // return the payment order's 'public_id' return $paymentOrder['public_id']; });
JavaScript
❗请记住,任何打算使用RevolutCheckout()
的页面必须在调用RevolutCheckout()
之前包含以下提到的结账小部件脚本(请参阅链接) 之前。
// the user triggers a request to the above route axios.post('/purchase', {"item_id": 123456}).then((response) => { // get the 'public_id' from the response let publicId = response.data; // pass the 'public_id' to RevolutCheckout() RevolutCheckout(publicId).then(function(instance) { // Launch the pop-up instance.payWithPopup({ onSuccess() { ... }, onError(message) { ... } }); }); });
许可证
本项目采用MIT许可证 - 请参阅LICENSE.md文件以获取详细信息