tbclla/laravel-revolut-merchant

Revolut 商户 API 的非官方 Laravel 封装

v1.0 2020-04-19 10:34 UTC

This package is auto-updated.

Last update: 2024-09-19 20:04:59 UTC


README

Latest Stable Version License Build Status Scrutinizer Code Quality

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文件以获取详细信息