korobovn / cloud-payments
Cloud Payments PHP客户端
Requires
- php: ^7.1.3
- ext-json: *
- guzzlehttp/guzzle: ~6.0
- illuminate/support: ^5.5 || ^6.0
- psr/http-client: ~1.0
- tarampampam/wrappers-php: ^1.2
Requires (Dev)
- fzaninotto/faker: ^1.9
- laravel/laravel: ^5.5 || ^6.0
- phpstan/phpstan: ^0.11.19
- phpunit/phpunit: ~7.5 || ^8
This package is auto-updated.
Last update: 2024-09-29 05:35:41 UTC
README
Cloud Payments PHP客户端
该包用于方便使用Cloud Payments API。
安装
使用以下命令使用composer安装此包:
$ composer require korobovn/cloud-payments
需要安装
composer
(如何安装composer)。
框架集成
Laravel 5
Laravel 5.5及以上版本使用包自动发现,因此不需要手动注册服务提供者。否则,您必须将服务提供者添加到./config/app.php
中的providers
数组中
'providers' => [ // ... Korobovn\CloudPayments\CloudPaymentsServiceProvider::class, ]
用法
如何获取客户端实例
如果使用Laravel框架,则可以使用make
方法解析来获取ClientInterface
实例。
$client = $this->app->make(Korobovn\CloudPayments\Client\ClientInterface::class);
您可以使用send
方法发送请求
$client->send($request);
其中$request
是RequestInterface
的实例。
您还可以在RequestInterface
实例上调用send
方法。在此之前,您必须使用ClientInterface
调用RequestInterface
上的setClient
方法
$request->setClient($client)->send();
您可以选择您喜欢的方式。
如何创建请求
可用请求列表
加密支付
CryptogramPaymentOneStepRequest
- 用于一步支付;
CryptogramPaymentTwoStepRequest
- 用于两步支付。
创建和发送请求
<?php use Korobovn\CloudPayments\Client\ClientInterface; use Korobovn\CloudPayments\Message\Request\CryptogramPaymentOneStepRequest; use Korobovn\CloudPayments\Message\Request\CryptogramPaymentTwoStepRequest; use Korobovn\CloudPayments\Message\Response\Cryptogram3dSecureAuthRequiredResponse; use Korobovn\CloudPayments\Message\Response\CryptogramTransactionAcceptedResponse; use Korobovn\CloudPayments\Message\Response\CryptogramTransactionRejectedResponse; use Korobovn\CloudPayments\Message\Response\InvalidRequestResponse; /** @var ClientInterface $client */ $client = $this->app->make(ClientInterface::class); $request = CryptogramPaymentOneStepRequest::create(); /* or we can also use: $request = new CryptogramPaymentTwoStepRequest; */ $request ->getModel() ->setAmount(100.0) ->setCurrency('RUB') ->setIpAddress('127.0.0.1') ->setName('CARDHOLDER NAME') ->setCardCryptogramPacket('CARD_CRYPTOGRAM_PACKET'); /** @var InvalidRequestResponse|Cryptogram3dSecureAuthRequiredResponse|CryptogramTransactionRejectedResponse|CryptogramTransactionAcceptedResponse $response */ $response = $request->setClient($client)->send();
在调用send
方法发送请求之前,我们必须填写请求数据模型。为此,在RequestInterface
上调用getModel
方法并使用setter设置值。使用您的IDE的自动完成功能来访问setter。
$response
必须是以下类之一的实例:InvalidRequestResponse
、Cryptogram3dSecureAuthRequiredResponse
、CryptogramTransactionRejectedResponse
、CryptogramTransactionAcceptedResponse
$response
(ResponseInterface
的实例)也有其自己的数据模型。使用getModel
方法和getter来访问数据。
检查响应类型和访问响应数据模型字段
<?php use Korobovn\CloudPayments\Message\Response\CryptogramTransactionAcceptedResponse; if ($response instanceof CryptogramTransactionAcceptedResponse) { $transaction_id = $response->getModel()->getTransactionId(); $status_code = $response->getModel()->getStatusCode(); $token = $response->getModel()->getToken(); }
3-D Secure处理
CompletionOf3dSecureRequest
- 用于完成3-D Secure支付。
可能的答案:InvalidRequestResponse
、Cryptogram3dSecureAuthRequiredResponse
、CryptogramTransactionRejectedResponse
、CryptogramTransactionAcceptedResponse
令牌支付
TokenPaymentOneStepRequest
- 用于一步支付;TokenPaymentTwoStepRequest
- 用于两步支付。
可能的答案:InvalidRequestResponse
、CryptogramTransactionRejectedResponse
、CryptogramTransactionAcceptedResponse
取消支付
CancelPaymentRequest
- 对于两步支付请求取消支付
可能的答案:InvalidRequestResponse
、SuccessResponse
退款
RefundPaymentRequest
- 对已付款项进行退款
可能的答案:InvalidRequestResponse
、RefundPaymentResponse
创建周期性支付订阅
CreateSubscriptionRequest
- 为将来进行的支付创建订阅
可能的答案:InvalidRequestResponse
、SubscriptionResponse
请求订阅信息
获取订阅请求
可能的答案:InvalidRequestResponse
、SubscriptionResponse
搜索订阅
查找订阅请求
可能的答案:InvalidRequestResponse
,SubscriptionsResponse
更改订阅
更新订阅请求
可能的答案:InvalidRequestResponse
、SubscriptionResponse
取消订阅
取消订阅请求
可能的答案:InvalidRequestResponse
、SuccessResponse
无Laravel框架的使用示例
<?php use GuzzleHttp\Client as GuzzleHttpClient; use Korobovn\CloudPayments\Client\Client; use Korobovn\CloudPayments\Message\Request\CryptogramPaymentOneStepRequest; use Korobovn\CloudPayments\Message\Response\CryptogramTransactionAcceptedResponse; use Korobovn\CloudPayments\Message\Response\InvalidRequestResponse; $public_key = ''; $private_key = ''; $client = new Client( new GuzzleHttpClient(), $public_key, $private_key ); $request = CryptogramPaymentOneStepRequest::create(); $request ->getModel() ->setAmount(100.0) ->setCurrency('RUB') ->setIpAddress('127.0.0.1') ->setName('CARDHOLDER NAME') ->setCardCryptogramPacket('CARD_CRYPTOGRAM_PACKET'); $response = $request->setClient($client)->send(); if ($response instanceof CryptogramTransactionAcceptedResponse) { $transaction_id = $response->getModel()->getTransactionId(); } elseif ($response instanceof InvalidRequestResponse) { $error_message = $response->getMessage(); }
如何获取卡加密信息包?
测试
对于包测试,我们使用phpunit
框架。只需在您的终端中输入
$ git clone https://github.com/korobovn/CloudPayments.git ./CloudPayments && cd $_ $ make build $ make composer-install $ make unit-tests
变更日志
变更日志可以在此处找到。
支持
如果您发现任何包错误,请在当前存储库中创建一个问题。
许可
这是一个开源软件,根据MIT许可证授权。