vlsv / sber-pay-qr-api-client
用于操作 SberPay QR API 的客户端
v1.0.1
2022-12-22 20:01 UTC
Requires
- php: ^8.1
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- guzzlehttp/guzzle: ^7.1
- symfony/serializer-pack: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- overtrue/phplint: ^5.3
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.26
README
用于操作 SberPay QR API/Плати QR 的客户端
通过 QR 码支付是一种使用图形码的现代支付接收方式。QR 码支付服务允许使用 SberPay QR(在 СберБанк Онлайн 应用中)、Плати QR(在银行合作伙伴的应用中)和 СБП QR(快速支付系统)进行支付。[了解更多关于此服务](https://api.developer.sber.ru/product/PlatiQR/doc/v1/QR_API_doc1)。
该客户端实现了 QR.API(卖家 QR)平台的服务
- creation - 创建订单并生成用于该订单的动态 QR 码(根据客户要求):QR 码已包含该订单的金额。
- status - 查询订单状态:获取支付状态和操作详情。
- revocation - 取消未付款订单:买家未在规定时间内付款(通常网站上有 20 分钟的等待时间),或选择了其他支付方式。
- cancel - 取消/退款财务操作。
- registry - 查询操作登记册。
依赖项
向 API 发送请求需要 Sber API Registry access_token
。获取它的方法之一是使用库 vlsv/sber-api-registry-oauth-client。
安装库
composer require vlsv/sber-pay-qr-api-client
获取证书
官方文档
准备证书
openssl pkcs12 -in {path_to_certificate}/cert.p12 -out {path_to_certificate}/cert.pem -nodes
或者,作为替代方案,可以以 .p12
格式传递证书,在这种情况下,还需要指定其密码。
使用 API
创建订单
请参考 TestCaseBase.php 查看客户端配置示例
$orderParamsType = (new \Vlsv\SberPayQrApiClient\Entity\RequestCreationOrderParamsType()) ->setPositionName('some_position_name') ->setPositionCount(1) ->setPositionDescription('some_position_description') ->setPositionSum(190000); $requestCreation = (new \Vlsv\SberPayQrApiClient\Entity\RequestCreation()) ->setMemberId('some_member_id') ->setOrderCreateDate(new DateTimeImmutable()) ->setOrderParamsType([$orderParamsType]); try { /** @var \Vlsv\SberPayQrApiClient\Entity\ResponseCreation $responseCreation */ $responseCreation = $this->apiClient->makeRequest( accessToken: 'personal_temporary_access_token', apiEndpoint: \Vlsv\SberPayQrApiClient\Entity\ApiEndpoint::CREATION, requestObject: $requestCreation, ); } catch (ApiException $exception) { echo $exception->getMessage(); exit(); } // Идентификатор заказа на стороне эквайера. // Необходим для дальнейшей работы с API. echo $responseCreation->getOrderId(); // Ссылка на форму оплаты - QR-код. echo $responseCreation->getOrderFormUrl();
请参阅 ResponseCreation 了解对象响应的所有方法
查询订单状态
$requestStatus = (new \Vlsv\SberPayQrApiClient\Entity\RequestStatus()) ->setOrderId('5cf8cb8b-37e3-42e9-8f69-306fa72e106f') ->setTid('83457dda-332c-46f4-b928-8d4bd9ee3afe'); try { /** @var \Vlsv\SberPayQrApiClient\Entity\ResponseStatus $responseStatus */ $responseStatus = $this->apiClient->makeRequest( accessToken: 'personal_temporary_access_token', apiEndpoint: \Vlsv\SberPayQrApiClient\Entity\ApiEndpoint::STATUS, requestObject: $requestStatus, ); } catch (\Vlsv\SberPayQrApiClient\Entity\ApiException $exception) { echo $exception->getMessage(); exit(); } // Состояние заказа на стороне эквайера. echo $responseStatus->getOrderState()->value;
请参阅 ResponseStatus 了解对象响应的所有方法
其他方法以类似方式操作。
测试
所有组。
composer tests
功能测试和单元测试。
composer tests-feature && composer tests-unit