v1.2.3 2023-12-19 10:57 UTC

README

Build Status Coverage Status Total Downloads Latest Stable Version License

库提供了向 TransactPRO 网关 API 发送请求的能力。
库由我维护,而不是由 TransactPRO。因此,请直接在此(GitHub)提交所有请求、问题和疑问。库按原样提供。
您必须自己将库集成到项目中,我只提供基本的功能来发送请求。

安装

Composer

推荐的安装方式是通过 Composer
运行命令行命令 composer require transact-pro/gate 或将其添加到您的 composer.json 文件中

"require": {
    "transact-pro/gate": "^v1.1"
}

然后进行安装

$ composer.phar install

手动

您可以手动下载库并使用自动加载器。

require_once 'lib/autoloader.php'

用法

创建网关客户端

基本客户端

use TransactPRO\Gate\GateClient;

$gateClient = new GateClient(array(
    'apiUrl'    => 'https://www.payment-api.com',
    'guid'      => 'AAAA-AAAA-AAAA-AAAA',
    'pwd'       => '111'
));

禁用 SSL 检查的客户端

use TransactPRO\Gate\GateClient;

$gateClient = new GateClient(array(
    'apiUrl'    => 'https://www.payment-api.com',
    'guid'      => 'AAAA-AAAA-AAAA-AAAA',
    'pwd'       => '111',
    'verifySSL' => false
));

操作

GateClient 实例提供多种操作,如 'charge' 或 'status_request'。所有传递给操作的数据都将进行验证,如果缺少必填字段,则将引发异常。请检查集成手册,以获取有关每个操作的所需数据的更多信息。

初始化

$response = $gateClient->init(array(
    'rs'                      => 'AAAA',
    'merchant_transaction_id' => '1',
    'user_ip'                 => '127.0.0.1',
    'description'             => 'Test description',
    'amount'                  => '100',
    'currency'                => 'LVL',
    'name_on_card'            => 'Vasyly Pupkin',
    'street'                  => 'Main street 1',
    'zip'                     => 'LV-0000',
    'city'                    => 'Riga',
    'country'                 => 'LV',
    'state'                   => 'NA',
    'email'                   => 'email@example.lv',
    'phone'                   => '+371 11111111',
    'card_bin'                => '511111',
    'bin_name'                => 'BANK',
    'bin_phone'               => '+371 11111111',
    'merchant_site_url'       => 'http://www.example.com'
));

收费

$response = $gateClient->charge(array(
    'f_extended'                  => '5',
    'init_transaction_id'         => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'cc'                          => '5111111111111111',
    'cvv'                         => '111',
    'expire'                      => '01/20',
    'browser_accept_header'       => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    'browser_java_enabled'        => true,
    'browser_javascript_enabled'  => true,
    'browser_language'            => "en-US",
    'browser_color_depth'         => "24",
    'browser_screen_height'       => "1080",
    'browser_screen_width'        => "1920",
    'browser_tz'                  => "-180" ,
    'browser_user_agent'          => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
));

初始化 DMS

$response = $gateClient->initDms(array(
    'rs'                      => 'AAAA',
    'merchant_transaction_id' => microtime(true),
    'user_ip'                 => '127.0.0.1',
    'description'             => 'Test description',
    'amount'                  => '100',
    'currency'                => 'LVL',
    'name_on_card'            => 'Vasyly Pupkin',
    'street'                  => 'Main street 1',
    'zip'                     => 'LV-0000',
    'city'                    => 'Riga',
    'country'                 => 'LV',
    'state'                   => 'NA',
    'email'                   => 'email@example.lv',
    'phone'                   => '+371 11111111',
    'card_bin'                => '511111',
    'bin_name'                => 'BANK',
    'bin_phone'               => '+371 11111111',
    'merchant_site_url'       => 'http://www.example.com'
));

挂起

$response = $gateClient->makeHold(array(
    'f_extended'          => '5',
    'init_transaction_id' => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'cc'                  => '5111111111111111',
    'cvv'                 => '111',
    'expire'              => '01/20'
));

收费挂起

$response = $gateClient->chargeHold(array(
    'init_transaction_id' => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg'
));

取消 DMS

$response = $gateClient->cancelDms(array(
    'init_transaction_id' => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'amount_to_refund'    => '100'
));

取消请求

$response = $gateClient->cancelRequest(array(
    'init_transaction_id' => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg'
));

退款

$response = $gateClient->refund(array(
    'init_transaction_id' => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'amount_to_refund'    => '100'
));

状态请求

$response = $gateClient->statusRequest(array(
    'request_type'        => 'transaction_status',
    'init_transaction_id' => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'f_extended'          => '5'
));

初始化 P2P 交易

$response = $gateClient->initP2P(array(
    'rs'                      => 'AAAA',
    'merchant_transaction_id' => microtime(true),
    'user_ip'                 => '127.0.0.1',
    'description'             => 'Test description',
    'amount'                  => '100',
    'currency'                => 'LVL',
    'name_on_card'            => 'Vasyly Pupkin',
    'street'                  => 'Main street 1',
    'zip'                     => 'LV-0000',
    'city'                    => 'Riga',
    'country'                 => 'LV',
    'state'                   => 'NA',
    'email'                   => 'email@example.lv',
    'phone'                   => '+371 11111111',
    'card_bin'                => '511111',
    'bin_name'                => 'BANK',
    'bin_phone'               => '+371 11111111',
    'merchant_site_url'       => 'http://www.example.com',
    'save_card'               => '1',
    'cardname'                => 'John Doe',
    'recipient_name'          => 'Jane Doe',
    'client_birth_date'       => '06291988',
));

执行 P2P 交易

$response = $gateClient->doP2P(array(
    'f_extended'          => '5',
    'init_transaction_id' => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'cc_2'                => '5111111111111111',
));

初始化 B2P 交易

$response = $gateClient->initB2P(array(
    'rs'                      => 'AAAA',
    'merchant_transaction_id' => microtime(true),
    'user_ip'                 => '127.0.0.1',
    'description'             => 'Test description',
    'amount'                  => '10',
    'currency'                => 'RUB',
    'name_on_card'            => 'John Doe 1',
    'street'                  => 'Main street 1',
    'zip'                     => 'LV-0000',
    'city'                    => 'Riga',
    'country'                 => 'LV',
    'state'                   => 'NA',
    'email'                   => 'noemail@example.lv',
    'phone'                   => '+371 11111111',
    'card_bin'                => '511111',
    'bin_name'                => 'BANK',
    'bin_phone'               => '+371 11111111',
    'client_birth_date'       =>  '15101970',
    'merchant_site_url'       => 'http://www.example.com',
));

执行 B2P 交易

$response = $gateClient->chargeB2P(array(
    'f_extended'          => '5',
    'init_transaction_id' => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'cc_2'                => '5111111111111111',
    'expire2' => '11/22',
));

初始化信用交易

$response = $gateClient->initCredit(array(
    'rs'                      => 'AAAA',
    'merchant_transaction_id' => microtime(true),
    'user_ip'                 => '127.0.0.1',
    'description'             => 'Test description',
    'amount'                  => '100',
    'currency'                => 'LVL',
    'name_on_card'            => 'Vasyly Pupkin',
    'street'                  => 'Main street 1',
    'zip'                     => 'LV-0000',
    'city'                    => 'Riga',
    'country'                 => 'LV',
    'state'                   => 'NA',
    'email'                   => 'email@example.lv',
    'phone'                   => '+371 11111111',
    'card_bin'                => '511111',
    'bin_name'                => 'BANK',
    'bin_phone'               => '+371 11111111',
    'merchant_site_url'       => 'http://www.example.com',
));

执行信用交易

$response = $gateClient->doCredit(array(
    'f_extended'             => '5',
    'init_transaction_id'    => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'cc'                     => '5111111111111111',
    'cvv'                    => '111',
    'expire'                 => '01/20',
    'merchant_referring_url' => 'http://www.payment.example.com/id=example_referring_id',
));

初始化 A2A 交易

$response = $gateClient->initA2A(array(
    'rs'                      => 'AAAA',
    'merchant_transaction_id' =>  microtime(true),
    'user_ip'                 => '127.0.0.1',
    'description'             => 'Test description',
    'amount'                  => '100',
    'currency'                => 'LVL',
    'name_on_card'            => 'Vasyly Pupkin',
    'street'                  => 'Main street 1',
    'zip'                     => 'LV-0000',
    'city'                    => 'Riga',
    'country'                 => 'LV',
    'state'                   => 'NA',
    'email'                   => 'email@example.lv',
    'phone'                   => '+371 11111111',
    'card_bin'                => '511111',
    'bin_name'                => 'BANK',
    'bin_phone'               => '+371 11111111',
    'merchant_site_url'       => 'http://www.example.com',
    'save_card'               => '1',
    'cardname'                => 'John Doe',
    'client_birth_date'       => '29061988',
));

执行 A2A 交易

$response = $gateClient->doA2A(array(
    'f_extended'          => '5',
    'init_transaction_id' => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'cc_2'                => '5111111111111111',
));

初始化用于无卡 SMS 交易的存储卡

$response = $gateClient->initStoreCardSms(array(
    'rs'                      => 'AAAA',
    'merchant_transaction_id' => '1',
    'user_ip'                 => '127.0.0.1',
    'description'             => 'Test description',
    'amount'                  => '100',
    'currency'                => 'LVL',
    'name_on_card'            => 'Vasyly Pupkin',
    'street'                  => 'Main street 1',
    'zip'                     => 'LV-0000',
    'city'                    => 'Riga',
    'country'                 => 'LV',
    'state'                   => 'NA',
    'email'                   => 'email@example.lv',
    'phone'                   => '+371 11111111',
    'card_bin'                => '511111',
    'bin_name'                => 'BANK',
    'bin_phone'               => '+371 11111111',
    'merchant_site_url'       => 'http://www.example.com'
));

初始化用于无卡信用交易的存储卡

$response = $gateClient->initStoreCardCredit(array(
    'rs'                      => 'AAAA',
    'merchant_transaction_id' => microtime(true),
    'user_ip'                 => '127.0.0.1',
    'description'             => 'Test description',
    'amount'                  => '100',
    'currency'                => 'LVL',
    'name_on_card'            => 'Vasyly Pupkin',
    'street'                  => 'Main street 1',
    'zip'                     => 'LV-0000',
    'city'                    => 'Riga',
    'country'                 => 'LV',
    'state'                   => 'NA',
    'email'                   => 'email@example.lv',
    'phone'                   => '+371 11111111',
    'card_bin'                => '511111',
    'bin_name'                => 'BANK',
    'bin_phone'               => '+371 11111111',
    'merchant_site_url'       => 'http://www.example.com',
));

初始化用于无卡 P2P 交易的存储卡

$response = $gateClient->initStoreCardP2P(array(
    'rs'                      => 'AAAA',
    'merchant_transaction_id' => microtime(true),
    'user_ip'                 => '127.0.0.1',
    'description'             => 'Test description',
    'amount'                  => '100',
    'currency'                => 'LVL',
    'name_on_card'            => 'Vasyly Pupkin',
    'street'                  => 'Main street 1',
    'zip'                     => 'LV-0000',
    'city'                    => 'Riga',
    'country'                 => 'LV',
    'state'                   => 'NA',
    'email'                   => 'email@example.lv',
    'phone'                   => '+371 11111111',
    'card_bin'                => '511111',
    'bin_name'                => 'BANK',
    'bin_phone'               => '+371 11111111',
    'merchant_site_url'       => 'http://www.example.com',
    'save_card'               => '1',
    'cardname'                => 'John Doe',
    'recipient_name'          => 'Jane Doe',
    'client_birth_date'       => '06291988',
));

用于无卡交易的存储卡

$response = $gateClient->storeCard(array(
    'f_extended'          => '5',
    'init_transaction_id' => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'cc'                  => '5111111111111111',
    'expire'              => '01/20'
));

初始循环交易(常规、P2P、信用)

对于常规循环使用

  • initRecurrent

对于 P2P 循环使用

  • initRecurrentCredit

对于信用循环使用

  • initRecurrentP2P

对于信用循环使用

  • initRecurrentA2A

这些请求中的字段相同,请阅读文档以获取详细信息。

示例

$response = $gateClient->initRecurrent(array(
    'rs'                      => 'AAAA',
    'original_init_id'        => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
    'merchant_transaction_id' => microtime(true),
    'amount'                  => '100',
    'description'             => 'Test description',
));

收费循环交易

对于常规循环使用

  • chargeRecurrent

对于 P2P 循环使用

  • doRecurrentCredit

对于信用循环使用

  • doRecurrentP2P

对于 A2A 循环使用

  • doRecurrentA2A

示例

$response = $gateClient->chargeRecurrent(array(
    'f_extended'             => '5',
    'init_transaction_id'    => '13hpf5rp1e0ss72dypjnhalzn1wmrkfmsjtwzocg',
));

响应

响应实例作为操作结果返回。

isSuccess

要检查 curl 请求是否成功,您可以使用 isSuccessful 方法;

$response->isSuccessful(); // Return bool.

getResponseContent

要获取原始响应,您可以使用 getResponseContent

如果请求成功,则 API 响应将被返回。如果不成功,则返回 curl_error。

$response->getResponseContent(); // Return string.
$response->getParsedResponse();  // Parsed response content.

测试

如果您想运行测试,您需要安装开发依赖项

$ composer.phar install --dev

然后使用以下命令运行它们

$ vendor/bin/phpunit