1.2.3.1 支付宝扫码

转账支付

接入方式

POST 方式

方法名

shop.transfer.pay

参数

公共参数

参数

参数名称

类型

必填

描述

范例

mch_id

商户号

String(64)

商户唯一标识符

10008

sub_mch_id

子商户号

String(64)

子商户,默认为空

10088

method

接口名

String(128)

接口名称

shop.transfer.pay

version

版本号

String(8)

接口版本,固定为:1.0

1.0

timestamp

时间戳

String(128)

发送请求的时间

1515984627

content

业务参数

String(256)

业务请求参数的集合

详见demo

sign

签名字符串

String(256)

商户请求参数的签名串

详见demo

业务请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档

业务参数

参数

参数名称

类型

必填

描述

范例

total_fee

金额

Float(128)

订单转账金额

100.00

order_sn

订单号

String(256)

商家平台订单号

CL1534216626188

goods

商品名称

String(128)

商品名称

转账测试商品

pay_type

支付方式

String(32)

1 支付宝 2 微信

1

user_id

用户别号

String(64)

用户唯一识别号

10

notify_url

异步地址

String(128)

异步通知地址

return_url

同步地址

String(128)

同步通知地址

返回字段

返回参数

参数

类型

是否必填

描述

code

int

状态码,0为成功,其他为失败,详见错误码列表

msg

string

错误信息

data

array

返回数据集

返回订单数据字段列表

参数

类型

是否必填

描述

mch_id

int

商户id

sub_mch_id

string

子账户id,如果存在,否则返回为空

order_no

string

平台订单号

channel_order_no

string

二维码识别号

mch_order_no

string

商户订单唯一订单号

price

float

金额

total_fee

float

总代扣金额

pay_url

string

支付url

rate

string

费率

service_charge

float

服务费

expire_time

float

订单过期时间

响应结果

请求成功

{
    "code":0,
    "msg":"订单创建成功",
    "data":{
        "mch_id":"10000",
        "sub_mch_id":"",
        "order_no":"T100001809271535453396",
        "channel_order_no":"T000180925142202524",
        "mch_order_no":"35471538033744",
        "price":"0.01",
        "total_fee":"0.01",
        "pay_url":"{host}/transfer_pay.html?order_no=TtRSRyHzu7WEU1Gs21bS%2BezHDbSYXV9VZP5NOTes4ehDdYgaEObn54XmlRKjNS%2FNaoOky6HGdoNyQjl19wt%2Bcp7pqooqywyMkc%2BD5B7z383memnYv1FE4jtbn6rKbJwifWzDgkxvPEzjVQwJzP8W1YASoyWgCSPWNDbW%2FUseltE%3D",
        "rate":"0.0100",
        "service_charge":0,
        "expire_time":1538034345
    }
}

请求异常

{
    "code": -1,
    "msg": "[100004] APP服务不在线",
    "data": {}
}

请求参考 DEMO

// 请求操作
public function  agentsRequest()
{
        $mch_id = 10000; // 商户ID
        $sub_mch_id = 100001; // 子商户号
        // 请求内容
        $content = [
            'sub_mch_id' => $sub_mch_id,
            'sub_mch_key' => 'e65f79cf10fb34216477de549d0d57a8',
            'total_fee' => 200,
            'order_sn' => date('YmdHis', time()),
            'goods' => '代付商品00009',
            'pay_type' => 1,
            'user_id' => 1,
            'notify_url' => 'http://newpay.frp.tinywan.top/index/demo_test/transferNotify',
            'return_url' => 'http://newpay.frp.tinywan.top/index/demo_test/transferNotify',
        ];

        // 请求数据
        $data = [
            'mch_id' => $mch_id,
            'sub_mch_id' => $sub_mch_id,
            'method' => 'shop.transfer.pay',
            'version' => '1.0',
            'timestamp' => time(),
            'content' => json_encode($content)
        ];

        // 签名 该方法请详见官方 SDK文档 【接口签名处理】->【生成签名】sign()
        $sign = $this->sign($data, $mch_id);
        Log::debug('[客户端] 签名字符串' . $sign);
        if (!$sign) {
            return ['success' => false, 'message' => '签名失败', 'code' => -1, 'data' => []];
        }
        $data['sign'] = $sign;

        // 将所有参数urlcode编码,防止中文乱码
        foreach ($data as &$item) {
            $item = urlencode($item);
        }
        unset($item);
        $url = 'https://pay.hongnaga.com/api/v1/gateway.do';

        // 发起接口请求
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_TIMEOUT, 60);
        //设置抓取的url
        curl_setopt($curl, CURLOPT_URL, $url);
        //设置头文件的信息作为数据流输出
        curl_setopt($curl, CURLOPT_HEADER, 0);
        //设置获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        //设置post方式提交
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_HTTPHEADER, array("Expect:"));
        //设置post数据
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        //执行命令
        $result = curl_exec($curl);
        //关闭URL请求
        curl_close($curl);
        return $result;
}

// 签名方法
private function sign($data, $mch_id)
{
    // 参数解码
    foreach ($data as $key => &$value) {
        $value = urldecode($value);
    }
    unset($value);
    // 过滤掉无效的参数
    if (isset($data['sign'])) {
        unset($data['sign']);
    }
    // 商户秘钥key,可以通过商户管理平台【商户管理】=》【商户资料】
    $key = "4845c24ee71e78f8e394afae1ce4bc36";
    ksort($data);
    $params_str = urldecode(http_build_query($data));
    $params_str = $params_str . '&key=' . $key;
    return md5($params_str);
}

Last updated