收银台支付接口


收银台方式同样是通过 JSAPI 方式发起的支付,只是简化了开发步骤和流程。适用于微信webview环境


收银台请求步骤:

  1. 构建请求参数
  2. 使用浏览器携带参数跳转至收银台地址
  3. 用户在收银台界面点击按钮发起支付
  4. 服务端接收异步通知

请求地址:https://payjs.cn/api/cashier

请求参数:

字段名称 字段类型 必填参数 说明
mchid string(16) Y 商户号
total_fee int(16) Y 金额。单位:分
out_trade_no string(32) Y 用户端自主生成的订单号,在用户端要保证唯一性
body string(32) N 订单标题
attach string(127) N 用户自定义数据,在notify的时候会原样返回
notify_url string(255) N 接收微信支付异步通知的回调地址。必须为可直接访问的URL,不能带参数、session验证、csrf验证。留空则不通知
callback_url string(32) N 用户支付成功后,前端跳转地址。留空则支付后关闭webview
auto bool N auto=1:无需点击支付按钮,自动发起支付。默认手动点击发起支付
hide bool N hide=1:隐藏收银台背景界面。默认显示背景界面(这里hide为1时,自动忽略auto参数)
logo string(32) N 收银台显示的logo图片url
sign string(32) Y 数据签名 详见签名算法

请求返回:

收银台模式下,请求直接发起收银台支付。用户支付成功后,前台收银台页面自动关闭或跳转至自定义的 callback_url,后台系统会异步通知

特别提醒:支付后回调函数,并不能标示支付状态。用户需进一步完成验单逻辑

请求成功无返回。请求失败返回:

字段名称 字段类型 必填参数 说明
return_code int Y 0:提交失败
status int Y 0:失败
msg string(32) Y 失败原因
return_msg string(32) Y 失败原因,同msg

收银台演示代码:

<?php

$mchid = '**************'; // PAYJS 商户号
$key   = '**************'; // 通信密钥

// 构造订单参数
$order = [
    'mchid'        => $mchid,
    'body'         => '我是一个测试订单标题',
    'total_fee'    => 1,
    'out_trade_no' => 'payjs_jspay_demo_' . time(),
];

// 添加数据签名
$order['sign'] = sign($order, $key);

// 浏览器跳转到收银台
$url = 'https://payjs.cn/api/cashier?' . http_build_query($order);
header('Location: ' . $url);

// 签名函数
function sign($data, $key) {
    array_filter($data);
    ksort($data);
    return strtoupper(md5(urldecode(http_build_query($data) . '&key=' . $key)));
}

?>
powered by Gitbook最后更新: 2019-08-23