transfereasy 的PHP SDK

0.1.0 2024-02-20 03:27 UTC

This package is auto-updated.

Last update: 2024-05-20 04:04:22 UTC


README

欢迎使用 Transfereasy SDK for PHP 。

Transfereasy SDK for PHP SDK可以自动帮您满足能力调用过程中所需的证书校验、加签、验签、发送HTTP请求等非功能性要求。

Transfereasy SDK主要目标是提升开发者在服务端集成Transfereasy的各类能力的效率。

环境要求

  1. Transfereasy SDK for PHP 需要配合PHP 7.4或其以上版本。

  2. 使用 Transfereasy SDK for PHP 之前 ,您需要先前往Transfereasy-商户系统完成开发者接入的一些准备工作,或联系开发支持人员配置等。

  3. 准备工作完成后,注意保存如下信息,后续将作为使用SDK的输入。

产品CODETE的公钥TE的商户号

安装依赖

通过Composer在线安装依赖(推荐)

composer require transfereasy/pay

本地手动集成依赖(适用于自己修改源码后的本地重新打包安装)

  1. 本机安装配置Composer工具。
  2. 在本README.md所在目录下,执行composer install,下载SDK依赖。
  3. 依赖文件会下载到vendor目录下。

使用

以下这段代码示例向您展示了使用Transfereasy SDK for PHP调用一个API的步骤:

  1. 设置config
  2. 发起API调用。
  3. 处理响应或异常。
<?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持续更新,或联系技术支持进行更新。

Transfereasy接口文档

API Doc