雷法森-电商/payment-sdk

电商支付API SDK

v1.1.55 2023-03-23 06:50 UTC

This package is auto-updated.

Last update: 2024-09-08 09:22:12 UTC


README

Build Status Latest Stable Version Total Downloads

SDK模块用于实施雷法森银行的收单。

安装和连接

使用 composer 安装

$ composer require raiffeisen-ecom/payment-sdk

文档

**雷法森银行电商API: https://pay.raif.ru/doc/ecom.html

通过 composer run docs 生成自动文档。

API客户端

使用SDK需要密钥 $secretKey 和商家标识符 $publicId,详细信息请参阅 文档银行网站

<?php

$secretKey = '***';
$publicId = '***';
$ecomClient = new \Raiffeisen\Ecom\Client($secretKey, $publicId);

?>

构造函数参数和客户端属性

  • $secretKey - 密钥,必需,只读访问;
  • $publicId - 商家标识符,必需,读写访问;
  • $host - API主机,默认 https://e-commerce.raiffeisen.ru,读写访问;
  • $options - 额外的 请求参数,只读访问。

示例

用户在支付过程中执行以下操作

  • 选择商店中的商品/服务并将其放入购物车,然后点击“支付”按钮;
  • 合作伙伴打开支付表单;
  • 客户在支付表单中输入信息并确认支付。

设置事件接收URL

方法 postCallbackUrl 设置事件接收地址。在参数中需要指定

  • $callbackUrl - 有效的URL。
<?php

$callbackUrl = 'http://test.ru/';

/** @var \Raiffeisen\Ecom\Client $client */
$client->postCallbackUrl($callbackUrl);

?>

支付表单

方法 getPayUrl 返回支付表单的链接。在参数中需要指定

  • $amount - 订单金额;
  • $orderId - 订单标识符;
  • $query - 额外请求参数。
<?php

$amount = 10;
$orderId = 'testOrder';
$query = [
  'successUrl' => 'http://test.ru/',
];

/** @var \Raiffeisen\Ecom\Client $client */
$link = $client->getPayUrl($amount, $orderId, $query);

echo $link;

?>

输出

https://e-commerce.raiffeisen.ru/pay/?publicId=***&amount=10&orderId=testOrder&successUrl=http%3A%2F%2Ftest.ru%2F

获取交易状态信息

方法 getOrderTransaction 返回交易状态信息。在参数中需要指定

  • $orderId - 订单标识符。
<?php

$orderId = 'testOrder';

/** @var \Raiffeisen\Ecom\Client $client */
$response = $client->getOrderTransaction($orderId);

print_r($response);

?>

输出

Array
(
    [code] => SUCCESS
    [transaction] => Array
    (
        [id] => 120059
        [orderId] => testOrder
        [status] => Array
        (
            [value] => SUCCESS
            [date] => 2019-07-11T17:45:13+03:00
        )
        [paymentMethod] => acquiring
        [paymentParams] => Array
        (
            [rrn] => 935014591810
            [authCode] => 25984
        )
        [amount] => 12500.5
        [comment] => Покупка шоколадного торта
        [extra] => Array
        (
            [additionalInfo] => Sweet Cake
        )
    )
)

处理支付退货

方法 postOrderRefund 创建订单退货。在参数中需要指定

  • $orderId - 订单标识符;
  • $refundId - 订单标识符;
  • $amount - 退货金额。
<?php

$orderId = 'testOrder';
$refundId = 'testRefund';
$amount = 150;

/** @var \Raiffeisen\Ecom\Client $client */
$response = $client->postOrderRefund($orderId, $refundId, $amount);

print_r($response);

?>

输出

Array
(
    [code] => SUCCESS
    [amount] => 150
    [refundStatus] => IN_PROGRESS
)

退货状态

方法 getOrderRefund 返回退货状态。在参数中需要指定

  • $orderId - 订单标识符;
  • $refundId - 订单标识符。
<?php

$orderId = 'testOrder';
$refundId = 'testRefund';

/** @var \Raiffeisen\Ecom\Client $client */
$response = $client->getOrderRefund($orderId, $refundId);

print_r($response);

?>

输出

Array
(
    [code] => SUCCESS
    [amount] => 150
    [refundStatus] => COMPLETED
)

获取订单信息

方法 getOrder 返回订单数据。在参数中需要指定

  • $orderId - 订单标识符。
<?php

$orderId = 'testOrder';

/** @var \Raiffeisen\Ecom\Client $client */
$response = $client->getOrder($orderId);

print_r($response);

?>

输出

Array
(
    [amount] => 12500.5
    [comment] => Покупка шоколадного торт
    [extra] => Array
    (
        [additionalInfo] => sweet cake
    )
    [status] => Array
    (
        [value] => NEW
        [date] => 2019-08-24T14:15:22+03:00
    )
    [expirationDate] => 2019-08-24T14:15:22+03:00
)

取消已发布的订单

方法 deleteOrder 删除订单,如果尚未支付。在参数中需要指定

  • $orderId - 订单标识符。
<?php

$orderId = 'testOrder';

/** @var \Raiffeisen\Ecom\Client $client */
$client->deleteOrder($orderId);

?>

获取收据列表

方法 getOrderReceipts 返回收据列表。在参数中需要指定

  • $orderId - 订单标识符。
  • $receiptType - 非必需,收据类型
    • sell – 入库收据;
    • refund – 退货收据。
<?php

$orderId = 'testOrder';

/** @var \Raiffeisen\Ecom\Client $client */
$response = $client->getOrderReceipts($orderId);

print_r($response);

?>

输出

Array
(
    [0] => Array
    (
        [receiptNumber] => 3000827351831
        [receiptType] => REFUND
        [status] => DONE
        [orderNumber] => testOrder
        [total] => 1200
        [customer] => Array
        (
            [email] => customer@test.ru
            [name] => Иванов Иван Иванович
        )
        [items] => Array
        (
            [0] => Array
            (
                [name] => Шоколадный торт
                [price] => 1200
                [quantity] => 1
                [amount] => 1200
                [paymentObject] => COMMODITY
                [paymentMode] => FULL_PREPAYMENT
                [measurementUnit] => шт
                [nomenclatureCode] => 00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00
                [vatType] => VAT20
                [agentType] => ANOTHER
                [supplierInfo] => Array
                (
                    [phone] => +79991234567
                    [name] => ООО «Ромашка»
                    [inn] => 1234567890
                )
            )
        )
    )
)

获取退货收据

方法 getOrderRefundReceipt 返回退货收据。在参数中需要指定

  • $orderId - 订单标识符;
  • $refundId - 退货标识符。
<?php

$orderId = 'testOrder';
$refundId = 'testRefund';

/** @var \Raiffeisen\Ecom\Client $client */
$response = $client->getOrderRefundReceipt($orderId, $refundId);

print_r($response);

?>

输出

Array
(
    [receiptNumber] => 3000827351831
    [receiptType] => REFUND
    [status] => DONE
    [orderNumber] => testOrder
    [total] => 1200
    [customer] => Array
    (
        [email] => customer@test.ru
        [name] => Иванов Иван Иванович
    )
    [items] => Array
    (
        [0] => Array
        (
            [name] => Шоколадный торт
            [price] => 1200
            [quantity] => 1
            [amount] => 1200
            [paymentObject] => COMMODITY
            [paymentMode] => FULL_PREPAYMENT
            [measurementUnit] => шт
            [nomenclatureCode] => 00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00
            [vatType] => VAT20
            [agentType] => ANOTHER
            [supplierInfo] => Array
            (
                [phone] => +79991234567
                [name] => ООО «Ромашка»
                [inn] => 1234567890
            )
        )
    )
)

支付通知

方法 checkEventSignature 检查支付通知的签名。在参数中需要指定

  • $signature - 头部 x-api-signature-sha256 的内容;
  • $eventBody - 解析请求体的JSON。
<?php

$signature = '***';
$eventBody = [
    'event' => 'payment',
    'transaction' => [
        'id' => 120059,
        'orderId' => 'testOrder',
        'status' => [
            "value" => 'SUCCESS',
            "date" => '2019-07-11T17:45:13+03:00',
        ],
        'paymentMethod' => 'acquiring',
        'paymentParams' => [
            'rrn' => 935014591810,
            'authCode' => 25984,
        ],
        'amount' => 12500.5,
        'comment' => 'Покупка шоколадного торта',
        'extra' => [
            'additionalInfo': 'Sweet Cake',
        ],
    ],
];

/** @var \Raiffeisen\Ecom\Client $client */
$client->checkEventSignature($signature, $eventBody); // true or false

?>

要求

  • PHP v5.6.0 或更高版本
  • PHP json 扩展
  • PHP curl 扩展

许可证

MIT