durianpay/dpay-php

用 PHP 编写的 SDK,包装了 Durianpay 的 API 集合

1.0.0 2022-07-20 08:31 UTC

This package is auto-updated.

Last update: 2024-09-27 05:35:22 UTC


README

API 参考

有关 Durianpay API 的完整文档,请访问 我们的文档

入门

如果您已经在项目中设置了 composer,则可以输入以下命令

composer require durianpay/dpay-php

初始化 SDK

通过将仪表板 API 密钥 传递给 Durianpay 类来设置 SDK。

use Durianpay\Durianpay;

Durianpay::setApiKey('<YOUR_API_KEY>');

要查找您的 API 密钥,请转到仪表板 设置 并点击 API 密钥

功能和资源

订单

有关订单 API 的详细信息,请访问我们的 文档

1. 创建订单

$res = \Durianpay\Resources\Order::create($body);

将订单详细信息传递给函数。

示例调用

$res = \Durianpay\Resources\Order::create(
    [
        'amount' => '10000',
        'payment_option' => 'full_payment',
        'currency' => 'IDR',
        'order_ref_id' => 'order_ref_001',
        'customer' => [
            'customer_ref_id' => 'cust_001',
            'given_name' => 'Jane Doe',
            'email' => 'jane_doe@nomail.com',
            'mobile' => '85722173217',
        ],
        'items' => [
            [
                'name' => 'LED Television',
                'qty' => 1,
                'price' => '10000',
                'logo' => 'https://merchant.com/product_001/tv_image.jpg',
            ],
        ]
    ]
);
    
var_dump($res);

2. 获取订单

$res = \Durianpay\Resources\Order::fetch($queryParams);

注意:传递 $queryParams 是可选的。如果 $queryParams 中未指定 limit 属性,则 SDK 会立即将返回的订单数量限制为最新的 五个

示例调用

$res = \Durianpay\Resources\Order::fetch(
    [
        'from' => '2021-01-01',
        'to' => '2022-12-31',
        'skip' => '0',
        'limit' => '8'
    ]
);
    
var_dump($res);

3. 获取单个订单

$res = \Durianpay\Resources\Order::fetchOne($id);

订单 ID 作为参数传递给函数。

示例调用

$res = \Durianpay\Resources\Order::fetchOne('ord_JYF9EqFOiJ8812');
var_dump($res);

4. 创建支付链接

$res = \Durianpay\Resources\Order::createPaymentLink($body);

将订单详细信息传递给函数。此函数将自动将属性 'is_payment_link' => true 添加到请求体中。

示例调用

$res = \Durianpay\Resources\Order::createPaymentLink(
    [
        'amount' => '10000',
        'currency' => 'IDR',
        'customer' => [
            'given_name' => 'John Doe',
            'email' => 'john_doe@nomail.com',
            'mobile' => '01234567890',
            'given_name' => 'John Doe'
        ],
        'items' => [[
            'name' => 'LED Television',
            'qty' => 1,
            'price' => '10000',
            'logo' => 'https://merchant.com/product_001/tv_image.jpg'
        ]]
    ]
);
    
var_dump($res);

支付

有关支付 API 的详细信息,请访问我们的 文档

1. 创建支付订单

$res = \Durianpay\Resources\Payment::charge($type, $request);

将订单详细信息传递给函数。

示例调用

$type = 'EWALLET'; // EWALLET, VA, RETAILSTORE, ONLINE_BANKING, BNPL, or QRIS

$res = \Durianpay\Resources\Payment::charge($type, [
    'order_id' => 'ord_xrc0BvcVIF1680',
    'wallet_type' => 'DANA',
    'mobile' => '01234567890',
    'amount' => '15000'
]);
    
var_dump($res);

2. 获取支付

$res = \Durianpay\Resources\Payment::fetch($queryParams);

注意:传递 $queryParams 是可选的。如果 $queryParams 中未指定 limit 属性,则 SDK 会立即将返回的支付数量限制为最新的 五个

示例调用

$res = \Durianpay\Resources\Payment::fetch();
var_dump($res);

3. 获取单个支付

$res = \Durianpay\Resources\Payment::fetchOne($id);

支付 ID 作为参数传递给函数。

示例调用

$res = \Durianpay\Resources\Order::fetchOne('pay_7UnK1zvIjB5787');
var_dump($res);

4. 检查支付状态

$res = \Durianpay\Resources\Payment::checkStatus($id);

函数将返回支付当前状态(完成、处理中、已取消或失败)。

示例调用

$res = \Durianpay\Resources\Order::checkStatus('pay_7UnK1zvIjB5787');
var_dump($res);

5. 验证支付

$res = \Durianpay\Resources\Payment::verify($id, $verificationSignature);

示例调用

$signature = 'adf9a1a37af514c91225f6680e2df723fefebb7638519bcc7e7c9de02f2a3ab2';
$res = \Durianpay\Resources\Order::checkStatus('pay_7UnK1zvIjB5787', $signature);
var_dump($res);

6. 取消支付

$res = \Durianpay\Resources\Payment::cancel($id);

将立即将支付状态设置为 已取消

示例调用

$res = \Durianpay\Resources\Order::cancel('pay_7UnK1zvIjB5787');
var_dump($res);

7. 计算费用

$res = \Durianpay\Resources\Payment::calculateMDRFees($queryParams);

示例调用

$res = \Durianpay\Resources\Order::calculateMDRFees(['amount' => '50000']);
var_dump($res);

其他 Durianpay 资源

我们正在不断扩展此文档,请保持关注以获取更多功能。同时,您可以先在 https://durianpay.id/docs 上探索我们的文档。

错误处理

我们的 SDK 附带各种异常处理器。在调用函数时,建议始终在 try-catch 块中包装它。

use Durianpay\Exceptions\BadRequestException;

try {
    // Some Durianpay functions
} catch(BadRequestException $error) {
    $errorDesc = $error->getDetailedErrorDesc();
    
    echo $error;
    var_dump($errorDesc);
}