transfereasy / pay
transfereasy 的PHP SDK
0.1.0
2024-02-20 03:27 UTC
Requires
- php: >=7.4
- ext-json: *
- ext-openssl: *
- guzzlehttp/guzzle: ^7.8
- guzzlehttp/psr7: ^2.6
Requires (Dev)
- mockery/mockery: ^1.6
- phpunit/phpunit: ^9.0
README
欢迎使用 Transfereasy SDK for PHP 。
Transfereasy SDK for PHP SDK可以自动帮您满足能力调用过程中所需的证书校验、加签、验签、发送HTTP请求等非功能性要求。
Transfereasy SDK主要目标是提升开发者在服务端集成Transfereasy的各类能力的效率。
环境要求
-
Transfereasy SDK for PHP 需要配合
PHP 7.4
或其以上版本。 -
使用 Transfereasy SDK for PHP 之前 ,您需要先前往Transfereasy-商户系统完成开发者接入的一些准备工作,或联系开发支持人员配置等。
-
准备工作完成后,注意保存如下信息,后续将作为使用SDK的输入。
产品CODE
、TE的公钥
、TE的商户号
安装依赖
通过Composer在线安装依赖(推荐)
composer require transfereasy/pay
本地手动集成依赖(适用于自己修改源码后的本地重新打包安装)
- 本机安装配置Composer工具。
- 在本
README.md
所在目录下,执行composer install
,下载SDK依赖。 - 依赖文件会下载到
vendor
目录下。
使用
以下这段代码示例向您展示了使用Transfereasy SDK for PHP调用一个API的步骤:
- 设置config
- 发起API调用。
- 处理响应或异常。
<?php require 'vendor/autoload.php'; use Transfereasy\Pay\TE; use Transfereasy\Pay\Exception\Exception; //1. 设置config $config = [ 'm_private_key_path' => '',//商户私钥文件路径,如:'./merchant_private_test.key' 't_public_key_path' => '', //TE公钥文件路径 如: './te_public_test.key' 't_merchant_no' => '80000138', // TE商户号 't_product_code' => 'CP0001', // 产品号 'env' => 'test', //设置为测试环境,生产环境可忽略该参数 ]; try { //2. 发起API调用(以收单下单接口为例) $params = [ 'amount' => 100, 'clientIp' => '127.0.0.1', 'currency' => 'HKD', 'notifyUrl' => 'https://demo-test.transfereasy.com/demo/paymentNotify', 'outTradeNo' => 'T2024021811010030', 'storeTerminalId' => 's', 'settleCurrency' => 'HKD', 'productId' => 'xx', 'productInfo' => [ [ 'description' => "测试商品 1 个", 'amount' => 100, 'name' => "测试商品", 'quantity' => 1 ] ], 'returnUrl' => 'https://demo-test.transfereasy.com/demo/returnUrl', 'tradeType' => 'NATIVE' ]; //如果调用V2接口使用TE::transactionV2($config) $get_payment_result = TE::transaction($config)->payment($params); //处理自己的业务逻辑 //... } catch (Exception $e) { echo "调用失败,". $e->getMessage(). PHP_EOL;; }
回调通知
<?php //以laravel 为例子回调处理 public function paymentNotify(Request $request) { Log::info($request->getContent()); Log::info($request->header('Signature')); Log::info($request->header('Timestamp')); $config = [ 'm_private_key_path' => storage_path('app/merchant_private_test.key'),//商户私钥文件路径,如:'./merchant_private_test.key' 't_public_key_path' => storage_path('app/te_public_test.key'), //TE公钥文件路径 如: './te_public_test.key' 't_merchant_no' => '80000138', // TE商户号 't_product_code' => 'CP0009', // 产品号 'env' => 'test', //设置为测试环境,生产环境可忽略该参数 ]; try { $sign = $request->header('Signature'); $timestamp = $request->header('Timestamp'); $get_res = TE::transaction($config)->notify($request->getContent(), $sign, $timestamp); Log::info($get_res); //验签成功后,将返回TE的通知body数组 //return TE::transaction($config)->success(); return Response('SUCCESS', 200); //laravel返回 }catch (Exception $e) { echo "调用失败,". $e->getMessage(). PHP_EOL;; } //return TE::transaction($config)->fail(500, 'error'); return response()->json(['message' => 'error'], 500); }
已支持的API列表
类别 | 接口方法名称 | 版本 |
---|---|---|
收单 | payment(下单) | V1 |
收单 | getSign(获取签名) | V1 |
收单 | search | V1,V2 |
收单 | notify | V1 |
收单 | refund | V1 |
注:更多场景的API持续更新,或联系技术支持进行更新。