clanmax / tinkoff-autopay
用于处理Tinkoff API中自动支付方式的小型库
Requires
- php: ^7.1|^8.0
This package is auto-updated.
Last update: 2024-09-09 05:41:46 UTC
README
小型库,帮助您使用来自Tinkoff API 文档中的方法。
它为Laravel 7.0创建,但实际上可以在Laravel 11和几乎所有其他PHP应用程序上工作。
它使用了一些Laravel-Tinkoff功能。
它能做什么
只是基本的事情。例如,我们可以
- 添加客户
- 获取客户数据
- 删除客户
- 获取客户卡列表
- 删除客户卡
- 扣款
您必须确保您已经拥有使用此类函数的权限。您可以向自己的Tinkoff银行经理询问。
支持哪些方法
为了更清晰,它使用以下方法
初始化
添加客户
获取客户
删除客户
获取卡列表
删除卡
扣款
此库版本0.01未实现初始化
方法。但在0.02中已实现。
可能在不久的将来,我将添加完成授权
方法,但目前还不确定。
计划
完成授权
可能将工作- 目前库不返回用户的附加值(电子邮件、IP等)。将修复它。
它是如何工作的
通过composer安装库
composer require clanmax/tinkoff-autopay
使用use
通过控制器连接库
use ClanMax\TinkoffAutopay;
逻辑
逐步说明如何使用Charge
准备
- 添加客户(顺便说一句,它将在
初始化
方法中自动添加) - 带有
CustomerKey
和Recurrent
参数请求初始化
(0.01中未包含) - 将用户重定向到
PaymentURL
值中的支付表单
扣款
- 不带
CustomerKey
和Recurrent
参数请求初始化
- 保存
PaymentID
- 请求
GetCardList
并从您想要使用的卡中获取RebillId
- 使用
PaymentID
、RebillId
和OperationInitiatorType请求Charge
在这种情况下,用户将自动扣款,支付将立即批准。
如何使用
确保您已经从您的银行账户中获取了终端密钥和终端密码。要使用FinishAuthorize
方法,您可以在将您的终端工作模式切换到移动应用程序时获取公钥。
$terminalKey = "16009807012222DEMO"; // demo may help to deploy $terminal_password = "password"; $terminalurl = "https://securepay.tinkoff.ru/v2/"; $bank = new TinkoffAutopay($terminalurl,$terminalKey,$terminal_password);
首次支付
向初始化
发送带有两个附加参数的POST
请求
{ "Recurrent": "Y", "CustomerKey": "clanmax", "OperationInitiatorType": "2" // just example. check https://www.tinkoff.ru/kassa/dev/payments/#section/Peredacha-priznaka-iniciatora-operacii }
其中CustomerKey
是已添加客户的名称,Recurrent
只是带有Y
例如
$payment = [ 'OrderId' => '2223', 'Amount' => '1000', 'Language' => 'ru', 'Reccurent' => 'Y', 'CustomerKey' => "clanmax", 'Description' => 'One month pay', 'Email' => 'me@email.com', 'Phone' => '+79517474837', 'Name' => 'Vlad', 'Taxation' => 'usn_income' ]; $items[] = [ 'Name' => 'Something you gonna pay', 'Price' => '1000', 'Tax' => 'none', ]; $bank->Init($payment,$items);
返回将如下所示
{ 'Success' = '1', 'Status' = 'NEW', 'PaymentURL' = "https://securepay.tinkoff.ru/new/58NbcI0s", 'PaymentId' = '360127329' }
仅为了确保商品中的税可能是
- osn — 一般
- usn_income — 简化(收入)
- usn_income_outcome — 简化(收入减去支出)
- patent — 专利
- envd — 假定收入税
- esn — 单一农业税
扣款
几个步骤
- 向
初始化
发送POST
请求,但不包含Recurrent
和CustomerKey
- 从那里获取
PaymentId
$charge = $bank->Charge($PaymentId,$RebillId);
添加客户
您必须始终在客户付款之前添加客户。一个客户可能有通过初始化
方法连接的许多卡。
$customer = $bank->AddCustomer($CustomerKey);
获取客户
返回现有客户。您必须使用之前用过的名字。
$customer = $bank->GetCustomer($CustomerKey);
删除客户
仅删除用户的所有数据。请确保您不再使用此用户的RebillId
。
$customer = $bank->RemoveCustomer($CustomerKey);
获取卡片列表
您将使用此方法来获取RebillId
。返回用户通过Init
方法保存的卡片列表。
$cards = $bank->GetCardList($CustomerKey);
删除卡片
如果您的客户端有很多卡片,但您尚未准备好使用它们,而不是删除用户,您可以只删除卡片。只需从GetCardList
获取卡片号码。
$cards = $bank->RemoveCard($CardId, $CustomerKey);
查找错误
我建议您始终以这种方式检查所有请求以查找错误。
$bank->error ?:
错误
保留一些信息,您可能可以使用它来向用户显示(但请注意)。
获取令牌
在某些时候,您可能需要令牌进行测试。您可以使用TinkoffKey类中的方法。
它是如何工作的
- 连接类
- 更改您的数据(或发送您自己的数据)
- 获取数据
use ClanMax\TinkoffKey; $test = new TinkoffKey; return $test;