lunar/payments-api-sdk

PHP SDK,用于与Lunar HTTP API通信

1.0.1 2024-02-16 09:51 UTC

This package is not auto-updated.

Last update: 2024-09-27 12:56:48 UTC


README

lunar支付API的PHP封装器

要求

PHP 7.1及以后版本。

安装

您可以通过 Composer 安装此包。运行以下命令

composer require lunar/payments-api-sdk

API文档

要查找API参数,您可以访问以下URL

依赖项

这些绑定需要以下扩展才能正常工作

如果您使用Composer,这些依赖项应该会自动处理。如果您手动安装,请确保这些扩展可用。
如果您不想使用curl,您可以创建自己的客户端,从 HttpClientInterface 扩展,并在实例化 Lunar 类时将其作为参数发送。

示例

$lunar = new \Lunar\Lunar($private_secret_key);
 
$payment_intent_id = $lunar->payments()->create( $args ); 
 
// fetch a payment intent
$result = $lunar->payments()->fetch($payment_intent_id);
 
// capture a transaction
$payments = $lunar->payments();
$transaction  = $payments->capture($transaction_id, [
    'amount'   => [
        'decimal'=> '10',
        'currency' => 'EUR'
    ]
]);


// void a transaction
$payments = $lunar->payments();
$transaction  = $payments->cancel($transaction_id, [
    'amount'   => [
        'decimal'=> '10',
        'currency' => 'EUR'
    ]
]);


// refund a transaction
$payments = $lunar->payments();
$transaction  = $payments->refund($transaction_id, [
    'amount'   => [
        'decimal'=> '10',
        'currency' => 'EUR'
    ]
]);

错误处理

当事情出错时,API封装器将抛出错误。所有错误都继承自 ApiException。捕获所有类型错误的非常详细的示例

$lunar = new \Lunar\Lunar($private_secret_key);
try {
    $payments = $lunar->transactions();
    $payments->capture($transaction_id, [
          'amount'   => [
            'decimal'=> '10',
            'currency' => 'EUR'
        ]
    ]);
} catch (\Lunar\Exception\NotFound $e) {
    // The transaction was not found
} catch (\Lunar\Exception\InvalidRequest $e) {
    // Bad (invalid) request - see $e->getJsonBody() for the error
} catch (\Lunar\Exception\Forbidden $e) {
    // You are correctly authenticated but do not have access.
} catch (\Lunar\Exception\Unauthorized $e) {
    // You need to provide credentials (an app's API key)
} catch (\Lunar\Exception\Conflict $e) {
    // Everything you submitted was fine at the time of validation, but something changed in the meantime and came into conflict with this (e.g. double-capture).
} catch (\Lunar\Exception\ApiConnection $e) {
    // Network error on connecting via cURL
} catch (\Lunar\Exception\ApiException $e) {
    // Unknown api error
}

在大多数情况下,捕获 NotFoundInvalidRequest 作为客户端错误,并记录 ApiException 就足够了。

开发

安装依赖项

composer install

测试

如上所述安装依赖项(这将解决 PHPUnit),然后您可以运行测试套件

./vendor/bin/phpunit