雷法森-电商 / payment-sdk
电商支付API SDK
v1.1.55
2023-03-23 06:50 UTC
Requires
- php: >=5.6.0
- ext-curl: *
- ext-json: *
Requires (Dev)
- php-mock/php-mock-phpunit: ^1.1
- phpdocumentor/phpdocumentor: 2.8.*
- phpunit/phpunit: 5.7.27
- squizlabs/php_codesniffer: 3.5.*
README
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 扩展