clanmax/tinkoff-autopay

用于处理Tinkoff API中自动支付方式的小型库

0.3.2 2024-04-09 04:24 UTC

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中已实现。

可能在不久的将来,我将添加完成授权方法,但目前还不确定。

计划

  1. 完成授权可能将工作
  2. 目前库不返回用户的附加值(电子邮件、IP等)。将修复它。

它是如何工作的

通过composer安装库

composer require clanmax/tinkoff-autopay

使用use通过控制器连接库

use ClanMax\TinkoffAutopay;

逻辑

逐步说明如何使用Charge

准备

  1. 添加客户(顺便说一句,它将在初始化方法中自动添加)
  2. 带有CustomerKeyRecurrent参数请求初始化(0.01中未包含)
  3. 将用户重定向到PaymentURL值中的支付表单

扣款

  1. 不带CustomerKeyRecurrent参数请求初始化
  2. 保存PaymentID
  3. 请求GetCardList并从您想要使用的卡中获取RebillId
  4. 使用PaymentIDRebillIdOperationInitiatorType请求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 — 单一农业税

扣款

几个步骤

  1. 初始化发送POST请求,但不包含RecurrentCustomerKey
  2. 从那里获取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;