lotuashvili/laravel-tbcpay

此包已被废弃且不再维护。没有建议的替代包。
此包的最新版本(v1.2.0)没有提供许可证信息。

Laravel TBC支付

v1.2.0 2022-06-16 16:02 UTC

This package is auto-updated.

Last update: 2024-06-19 13:25:46 UTC


README

Laravel TbcPay

Latest Stable Version Total Downloads Downloads Month

此包允许您在Laravel应用程序中使用TBC支付。

Laravel TbcPay

目录

安装

composer require lotuashvili/laravel-tbcpay

适用于Laravel <= 5.4

如果您使用Laravel 5.4或更低版本,您需要在您的 config/app.php 文件中手动添加服务提供者。打开 config/app.php 并将 TbcPayServiceProvider 添加到 providers 数组中。

'providers' => [
    # Other providers
    Lotuashvili\LaravelTbcPay\TbcPayServiceProvider::class,
],

然后运行

php artisan vendor:publish --provider="Lotuashvili\LaravelTbcPay\TbcPayServiceProvider"

并运行迁移

php artisan migrate

交易类型(SMS / DMS)

此系统中存在两种交易类型: SMSDMS

SMS - 是一种直接支付方式,钱在1个事件中收费,一旦客户输入信用卡详情并点击继续。
DMS - 是一种两步法,首先事件在卡片上锁定资金(最多30天),第二次事件捕获资金(例如,当产品被发送给客户时进行第二次事件)。

每天,商户必须关闭营业日。

生成和放置证书

TBC以 .p12 格式提供SSL证书,我们需要将其转换为 .pem 格式。使用以下命令:

openssl pkcs12 -in *.p12 -out tbcpay.pem

转换后,将证书(.pem 文件)放置在 storage/certificates 文件夹中。可以取任何名字(例如此示例中的 tbcpay.pem)并在 .env 中指定名称和密码。

TBCPAY_CERTIFICATE_NAME=tbcpay.pem
TBCPAY_CERTIFICATE_PASS=YourPassword123

之后,将 storage/certificates 文件夹添加到您的 .gitignore

环境

设置环境变量

注意:请指定证书文件名而不是完整路径。证书放置在 storage/certificates 文件夹中。

使用ISO 4217标准设置默认货币。所有货币列表:http://en.wikipedia.org/wiki/ISO_4217(默认为981 - GEL)。

TBCPAY_DEBUG=true
TBCPAY_CERTIFICATE_NAME=tbcpay.pem
TBCPAY_CERTIFICATE_PASS=YourPassword123
TBCPAY_DEFAULT_CURRENCY=981

配置

金额单位

您可以从配置或 .env 文件中更改默认金额单位。金额单位用于在发送请求到TBC之前乘以最终金额。TBC银行要求金额以分(或Tetri)为单位,而不是USD(或GEL)。

默认情况下,单位设置为100,因此您可以将金额以GEL的形式传递,例如 $amount = 300 将重定向到具有 300GEL 金额的结账页面。

如果将单位设置为 1,则将重定向到具有 3GEL 金额的结账页面。

要更改金额单位,请在 .env 文件中将 TBCPAY_AMOUNT_UNIT=1 设置为或在 config/tbc.php 中直接更改 amount_unit

商户URL

如果有一天TBC更新了商户和提交URL,您只需简单地从 .envconfig/tbc.php 中覆盖旧URL。

.env 中设置 TBCPAY_MERCHANT_URLTBCPAY_FORM_URL 或直接在 config/tbc.php 中设置 merchant_urlform_url

调试

只需通过在 .env 中设置 TBCPAY_DEBUG=true 启用调试,默认情况下所有日志都会在 tbc_logs 表中。您可以使用 Lotuashvili\LaravelTbcPay\Models\TbcLog 模型访问它们。

使用方法

设置路由和控制器

发布文件后,将创建 app/Http/Controllers/TbcPayController。请随意修改控制器。

打开 routes/web.php 并定义路由(移除变量以使用默认值)。

<?php

use Lotuashvili\LaravelTbcPay\TbcPay;

// Other routes

TbcPay::routes(
    $controller, // Default: 'TbcPayController'
    $successMethod, // Default: 'success'
    $failMethod // Default: 'fail'
);

注意:排除 tbcpay/* 路由的 CSRF Token 验证,以避免在成功/失败 URL 上出现 TokenMismatchException

在您的 app/Http/Middleware/VerifyCsrtToken.php 中添加 URL。

<?php

class VerifyCsrfToken extends Middleware
{
    // Other variables

    protected $except = [
        'tbcpay/*',
    ];
}

将成功和失败 URL 发送给 TBC。

成功:http://website.ge/tbcpay/success

失败:http://website.ge/tbcpay/fail

支付

在您的控制器中注入 \Lotuashvili\LaravelTbcPay\TbcPay 类以使用支付。

<?php

class PaymentController
{
    // Other methods
    
    public function pay(\Lotuashvili\LaravelTbcPay\TbcPay $tbcPay)
    {
        // OPTIONAL: Load model and start transaction by model
        // Model relation will be used in tbc_transactions table
        $model = User::first();

        return $tbcPay->init(
            100, // Amount
            981, // Currency (Optional)
            'Biller name', // Name of biller (Optional)
            'Website payment', // Message to be displayed on a payment page (Optional)
            'ge' // Language of the payment page (Optional)
        )->start($model) // Model parameter is optional
         ->sms() // Optional: Specify transaction type (Supported: sms and dms)
         ->view(); // Return final view of TBC payment to redirect to a payment page
    }
}

返回视图后,网站将重定向到支付页面。填写卡详细信息后,您将重定向到您之前指定的成功或失败 URL。

使用其他方法

如果您已开始 DMS 授权(冻结账户上的资金),那么您必须在一段时间后实际对冻结金额进行收费。您需要 makeDms() 函数。

您可以直接通过调用例如 $tbcPay->reverse_transaction() 来访问核心处理器的方法(使用魔法 __call 函数)。请检查所有方法的 PlugAndPay TBC 处理器文档

通过cron关闭营业日

如果您在应用程序中没有运行 cron 作业,请参阅 Laravel 文档

在您的 app/Console/Kernel.php 中注册命令。

protected $commands = [
    // Other commands
    \Lotuashvili\LaravelTbcPay\Commands\CloseDay::class,
];

然后将命令添加到计划任务中(例如,使用 daily(),它将在每天 00:00 运行命令)。

protected function schedule(Schedule $schedule)
{
    // Other commands
    $schedule->command('tbcpay:close-day')
             ->daily();
}

交易历史

默认情况下,所有交易都将在 tbc_transactions 表中可用。您可以使用 Lotuashvili\LaravelTbcPay\Models\TbcTransaction 模型访问它们。

如果您已启用 debug,则所有记录都将存储在 tbc_logs 表中,并且可以使用 Lotuashvili\LaravelTbcPay\Models\TbcLog 模型访问它们。

结果代码

描述
000 批准 批准
001 批准,带有 ID 批准,持卡人身份识别
002 批准 部分金额批准
003 批准 VIP 批准
004 批准 更新跟踪 3
005 批准 账户类型由发卡行指定
006 批准 部分金额批准,账户类型由发卡行指定
007 批准 更新 ICC
100 拒绝 拒绝(一般,无注释)
101 拒绝 拒绝,卡已过期
102 拒绝 拒绝,疑似欺诈
103 拒绝 拒绝,卡片接受者联系收单行
104 拒绝 拒绝,受限卡
105 拒绝 拒绝,卡片接受者联系收单行的安全部门
106 拒绝 拒绝,允许的 PIN 尝试次数超出
107 拒绝 拒绝,参考发卡行
108 拒绝 拒绝,参考发卡行的特殊条件
109 拒绝 拒绝,无效的商户
110 拒绝 拒绝,无效的金额
111 拒绝 拒绝,无效的卡号
112 拒绝 拒绝,需要 PIN 数据
113 拒绝 拒绝,不可接受的费用
114 拒绝 拒绝,没有请求的账户类型
115 拒绝 拒绝,请求的功能不受支持
116 拒绝,无资金 拒绝,资金不足
117 拒绝 拒绝,PIN 不正确
118 拒绝 拒绝,无卡记录
119 拒绝 拒绝,交易不允许持卡人进行
120 拒绝 拒绝,交易不允许终端进行
121 拒绝 拒绝,超出提款金额限制
122 拒绝 拒绝,安全违规
123 拒绝 拒绝,超出提款频率限制
124 拒绝 拒绝,违法行为
125 拒绝 拒绝,卡无效
126 拒绝 拒绝,无效的 PIN 锁定
127 拒绝 拒绝,PIN 长度错误
128 拒绝 拒绝,PIN 键同步错误
129 拒绝 拒绝,疑似伪造卡
180 拒绝 拒绝,持卡人意愿
200 取款 取款(一般,无注释)
201 取款 取款,卡已过期
202 取款 取款,疑似欺诈
203 取款 取款,卡片接受者联系卡发卡行
204 取款 取款,受限卡
205 取款 取款,卡片接受者联系收单行的安全部门
206 取款 取款,允许的 PIN 尝试次数超出
207 取款 取款,特殊条件
208 取款 取款,丢失卡
209 取款 取款,被盗卡
210 取款 取款,疑似伪造卡
300 呼叫收单行 状态消息:文件操作成功
301 呼叫收单行 状态信息:文件操作不支持
302 呼叫收单行 状态信息:无法在文件中找到记录
303 呼叫收单行 状态信息:重复记录,旧记录被替换
304 呼叫收单行 状态信息:文件记录字段编辑错误
305 呼叫收单行 状态信息:文件被锁定
306 呼叫收单行 状态信息:文件操作不成功
307 呼叫收单行 状态信息:文件数据格式错误
308 呼叫收单行 状态信息:重复记录,新记录被拒绝
309 呼叫收单行 状态信息:未知文件
400 接受 接受(用于撤销)
499 批准 批准,无原始消息数据
500 呼叫收单行 状态信息:已核对,平衡
501 呼叫收单行 状态信息:已核对,不平衡
502 呼叫收单行 状态信息:金额未核对,提供总计
503 呼叫收单行 状态信息:核对总计不可用
504 呼叫收单行 状态信息:未核对,提供总计
600 接受 接受(用于行政信息)
601 呼叫收单行 状态信息:无法追踪原始交易
602 呼叫收单行 状态信息:无效的交易参考号
603 呼叫收单行 状态信息:参考号/PAN不兼容
604 呼叫收单行 状态信息:POS照片不可用
605 呼叫收单行 状态信息:已提供所请求的项目
606 呼叫收单行 状态信息:请求无法满足 - 所需文件不可用
680 列表准备就绪 列表准备就绪
681 列表未准备就绪 列表未准备就绪
700 接受 接受(用于收费)
800 接受 接受(用于网络管理)
900 接受 通知已确认,不接受财务责任
901 接受 通知已确认,接受财务责任
902 呼叫收单行 拒绝原因信息:无效交易
903 呼叫收单行 状态信息:重新输入交易
904 呼叫收单行 拒绝原因信息:格式错误
905 呼叫收单行 拒绝原因信息:交换机不支持收单机构
906 呼叫收单行 拒绝原因信息:正在切换
907 呼叫收单行 拒绝原因信息:发卡机构或交换机不工作
908 呼叫收单行 拒绝原因信息:路由找不到交易目的地
909 呼叫收单行 拒绝原因信息:系统故障
910 呼叫收单行 拒绝原因信息:发卡机构已关闭
911 呼叫收单行 拒绝原因信息:发卡机构超时
912 呼叫收单行 拒绝原因信息:发卡机构不可用
913 呼叫收单行 拒绝原因信息:重复传输
914 呼叫收单行 拒绝原因信息:无法追踪到原始交易
915 呼叫收单行 拒绝原因信息:核对切换或检查点错误
916 呼叫收单行 拒绝原因信息:MAC错误
917 呼叫收单行 拒绝原因信息:MAC密钥同步错误
918 呼叫收单行 拒绝原因信息:无可用通信密钥
919 呼叫收单行 拒绝原因信息:加密密钥同步错误
920 呼叫收单行 拒绝原因信息:安全软件/硬件错误 - 尝试再次操作
921 呼叫收单行 拒绝原因信息:安全软件/硬件错误 - 无操作
922 呼叫收单行 拒绝原因信息:消息编号顺序错误
923 呼叫收单行 状态信息:请求进行中
950 不接受 拒绝原因信息:违反商业协议
XXX 未定义 代码应由卡状态代码或停用列表插入原因代码替换

信用