voronkovich / sberbank-acquiring-client
Sberbank 的收购 REST API 客户端
v2.9
2024-09-19 06:28 UTC
Requires
- php: ^7.1||^8
- ext-json: *
README
用于 Sberbank 和 Alfabank REST API 的 PHP 客户端。
需求
安装
composer require 'voronkovich/sberbank-acquiring-client'
使用
实例化客户端
在大多数情况下,您需要将您的 用户名
和 密码
传递给工厂以实例化客户端
use Voronkovich\SberbankAcquiring\ClientFactory; // Sberbank production environment $client = ClientFactory::sberbank(['userName' => 'username', 'password' => 'password']); // Sberbank testing environment $client = ClientFactory::sberbankTest(['userName' => 'username', 'password' => 'password']); // Alfabank production environment $client = ClientFactory::alfabank(['userName' => 'username', 'password' => 'password']); // Alfabank testing environment $client = ClientFactory::alfabankTest(['userName' => 'username', 'password' => 'password']);
或者您可以使用 令牌
进行身份验证
$client = ClientFactory::sberbank(['token' => 'sberbank-token']);
更高级的示例
use Voronkovich\SberbankAcquiring\ClientFactory; use Voronkovich\SberbankAcquiring\Currency; use Voronkovich\SberbankAcquiring\HttpClient\HttpClientInterface; $client = ClientFactory::sberbank([ 'userName' => 'username', 'password' => 'password', // A language code in ISO 639-1 format. // Use this option to set a language of error messages. 'language' => 'ru', // A currency code in ISO 4217 format. // Use this option to set a currency used by default. 'currency' => Currency::RUB, // An HTTP method to use in requests. // Must be "GET" or "POST" ("POST" is used by default). 'httpMethod' => HttpClientInterface::METHOD_GET, // An HTTP client for sending requests. // Use this option when you don't want to use // a default HTTP client implementation distributed // with this package (for example, when you have'nt // a CURL extension installed in your server). 'httpClient' => new YourCustomHttpClient(), ]);
您还可以使用 Guzzle 的适配器
use Voronkovich\SberbankAcquiring\ClientFactory; use Voronkovich\SberbankAcquiring\HttpClient\GuzzleAdapter; use GuzzleHttp\Client as Guzzle; $client = ClientFactory::sberbank([ 'userName' => 'username', 'password' => 'password', 'httpClient' => new GuzzleAdapter(new Guzzle()), ]);
此外,还有适用于 Symfony 和 PSR-18 HTTP 客户端的适配器。
低级方法 "execute"
您可以使用低级方法 execute
与网关 REST API 交互
$client->execute('/ecomm/gw/partner/api/v1/register.do', [ 'orderNumber' => 1111, 'amount' => 10, 'returnUrl' => 'https:///sberbank/success', ]); $status = $client->execute('/ecomm/gw/partner/api/v1/getOrderStatusExtended.do', [ 'orderId' => '64fc8831-a2b0-721b-64fc-883100001553', ]);
但使用以下列出的快捷方式会更方便。
创建新订单
use Voronkovich\SberbankAcquiring\Currency; // Required arguments $orderId = 1234; $orderAmount = 1000; $returnUrl = 'http://mycoolshop.local/payment-success'; // You can pass additional parameters like a currency code and etc. $params['currency'] = Currency::EUR; $params['failUrl'] = 'http://mycoolshop.local/payment-failure'; $result = $client->registerOrder($orderId, $orderAmount, $returnUrl, $params); $paymentOrderId = $result['orderId']; $paymentFormUrl = $result['formUrl']; header('Location: ' . $paymentFormUrl);
如果您想使用订单的 UUID 标识符(例如,由您的数据库分配),则应将它们转换为十六进制格式
use Ramsey\Uuid\Uuid; $orderId = Uuid::uuid4(); $result = $client->registerOrder($orderId->getHex(), $orderAmount, $returnUrl);
使用 registerOrderPreAuth
方法创建两步订单。
获取现有订单的状态
use Voronkovich\SberbankAcquiring\OrderStatus; $result = $client->getOrderStatus($orderId); if (OrderStatus::isDeposited($result['orderStatus'])) { echo "Order #$orderId is deposited!"; } if (OrderStatus::isDeclined($result['orderStatus'])) { echo "Order #$orderId was declined!"; }
您还可以通过使用您自己的标识符(例如,由您的数据库分配)来获取订单的状态
$result = $client->getOrderStatusByOwnId($orderId);
撤销现有订单
$result = $client->reverseOrder($orderId);
退款现有订单
$result = $client->refundOrder($orderId, $amountToRefund);
使用 QR 码的 SBP 支付
目前仅由 Alfabank 支持,请参阅 文档。
$result = $client->getSbpDynamicQr($orderId, [ 'qrHeight' => 100, 'qrWidth' => 100, 'qrFormat' => 'image', ]); echo sprintf( '<a href="%s"><img src="%s" /></a>', $result['payload'], 'data:image/png;base64,' . $result['renderedQr'] );
查看 Client
源代码以查找用于支付绑定和处理两步支付的方法。
许可
版权(c)Voronkovich Oleg。在 MIT 许可下分发。