Appearance
APP 下单
APP 下单接口,适用于 APP 拉起微信小程序完成支付;
对接流程:
1.商户提前准备好小程序(提前申请微信小程序);
2.商户完成微信小程序托管授权 (授权码找商务经理获取);
3.联系对接商务经理协助发布小程序;
4.调试本接口完成预下单;
请求路径 | /pay/apporder |
---|---|
请求方法 | POST |
请求参数
公共参数
参数 | 名称 | 类型 | 必填 | 说明 |
---|---|---|---|---|
key | 标识 | string | 是 | 开发者唯一标识 |
time | 时间戳 | string | 是 | 当前 unix 时间戳,精确到秒 |
sign | 数据签名 | string | 是 | 数据签名,详见 签名算法 |
data | 业务参数 | JSON string | 是 | 业务参数,详见下例表格 |
业务参数
参数 | 名称 | 类型 | 必填 | 说明 |
---|---|---|---|---|
terminal | 终端码 | string | 是 | 终端码,详见控台终端管理 |
sequence | 流水号 | string | 是 | 订单流水号 |
amount | 金额 | string | 是 | 订单金额,保留 2 位小数,如:100.00,最小 0.01 |
notifyurl | 异步通知地址 | string | 否 | 交易异步通知地址 |
appid | 小程序 APPID | string | 是 | 小程序 appid,支付公司小程序已经不给商户用了,所以商户必填自己的 |
subject | 订单主题 | string | 否 | 订单主题 |
detail | 订单详情 | string | 否 | 订单详情 |
remark | 备注 | string | 否 | 备注 |
请求示例
json
{
"data": "{\"amount\":0.1,\"notifyurl\":\"https://tpaas.hbsk.com/test/faked\",\"remark\":\"for testing \",\"sequence\":\"2023050906\",\"terminal\":\"T544357446576893\"}",
"key": "d4247ed86e99865b93a",
"sign": "02bc57e1005f18766c4a4fee21cf15d19795b2cde24fe4e19bfb19fe15ed54e6",
"time": 1683794943
}
返回数据
公共数据
数据 | 名称 | 类型 | 必填 | 说明 |
---|---|---|---|---|
code | 状态码 | int | 是 | 结果状态码 |
text | 操作结果 | string | 否 | 操作结果,为空时不返回此字段 |
time | 时间戳 | int | 是 | 服务器当前 unix 时间戳,精确到秒 |
sign | 数据签名 | string | 是 | 数据签名 |
data | 业务数据 | JSON string | 是 | 业务数据,详见下例表格 |
业务数据
数据 | 名称 | 类型 | 必填 | 说明 |
---|---|---|---|---|
amount | 金额 | string | 是 | 下单金额,精确到 2 位小数,如 1.00 |
remark | 备注 | string | 否 | 备注 |
payment | 支付数据 | JSON | 是 | 支付数据,用于前端发起支付 |
sequence | 流水号 | string | 否 | 下游游水号 |
serial | 流水号 | string | 否 | 上游流水号 |
terminal | 终端码 | string | 是 | 终端码,详见控台终端管理 |
payment
数据 | 名称 | 类型 | 必填 | 说明 |
---|---|---|---|---|
appid | 小程序 appid | string | 否 | 小程序 appid |
path | 小程序 PATH | string | 否 | 支付链接 |
url | 小程序跳转链接 | string | 是 | 微信小程序跳转链接,如:weixin://dl/business/?t=Jm9oFXE9XIo;或者支付宝小程序跳转链接 |
pre_order_id | 预下单订单号 | string | 是 | 预下单订单号 |
返回状态
状态 | 说明 |
---|---|
0 | 下单成功 |
1201001 | 下单失败 |
1201002 | 交易流水号不可重复 |
1001001 | 系统错误 |
1001002 | 无效开发者标识 |
1001003 | 无效签名信息 |
1001004 | 无效请求时间戳 |
1001005 | 暂不支持此交易方式 |
1001051 | 无效支付订单 |
1002052 | 无效应用终端 |
1002053 | 无效支付商户 |
1002054 | 无效支付服务商 |
1002055 | 无效支付通道 |
1002056 | 无效支付通道配置 |
1002057 | 无效支付方式 |
返回示例
json
{
"code": 0,
"data": "{\"amount\":0.1,\"code\":\"2307119993453\",\"feeamount\":0,\"gateway\":\"weixin\",\"method\":\"app\",\"payment\":{\"appid\":\"gh_1ad0a7231d39\",\"path\":\"pages/cashier/cashier\",\"url\":\"weixin://dl/business/?t=Jm9oFXE9XIo\"},\"remark\":null,\"scene\":\"offline\",\"sequence\":\"202306210009238909812375\",\"share\":true}",
"sign": "1b42a9227775e169fdd55e0d26e2f7a5b48ef46f78688c437d8e5e206d156232",
"text": "下单成功",
"time": 1689083411
}
微信小程序接入方式
app 接入微信小程序支付有两种方式。
第一种是使用接口返回的 scheme_code 进行跳转到微信小程序中发起支付,但是这种方式支付结果页无返回按钮,无法小程序内直接返回 app。
第二种是使用微信提供的 SDK,通过原生 SDK 跳转的方式到微信小程序中发起支付,这种方式结果页会有返回按钮,点击返回按钮可以返回原 app,同时也会携带支付结果参数以供参考。但是需要微信开放平台认证并获取对应的 appid 微信开放平台 https://open.weixin.qq.com 。
url 跳转方式接入(scheme)
预下单接口获取 url (weixin://xxxx)
iOS
// iOS
[[UIApplication sharedApplication]openURL:[NSURL URLWithString: scheme_code]];
Android
// Android
Intent intent = new Intent("android.intent.action.VIEW");
intent.setData(Uri.parse(scheme_code));
activity.startActivity(intent);
原生 SDK 跳转方式 iOS 微信 SDK(https://developers.weixin.qq.com/doc/oplatform/Downloads/iOS_Resource.html) 并参考 微信官方说明(https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html) 接入 SDK
Android 微信 SDK(https://developers.weixin.qq.com/doc/oplatform/Downloads/Android_Resource.html) 并参考 微信官方说明(https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/Android.html) 接入 SDK
注:下单接口返回的参数 path 是没有拼接相关参数的,需要开发者将预下单 id 拼接上
参数名 | 值 |
---|---|
p | 预下单订单号 |
s | 固定值为 app |
javascrept
// xxx 替换成接口返回的 pre_order_id s=app 写死即可
path = "pages/cashier/cashier?p=xxx&s=app";
小程序返回参数说明
当小程序内出现返回按钮时,点击返回按钮即可携带参数返回 app 供开发者参考。但最终支付结果请以服务端查询结果为准。
数据 | 名称 | 说明 |
---|---|---|
trans_amt | 支付金额 | 订单支付金额,精确到 2 位小数,如 1.00 |
req_seq_id | 请求流水号 | 请求流水号 |
source | 来源 | 是否是 app 打开小程序,目前值固定 app 。如果微信小程序通过 schema 形式打开该参数无效 |
errcode | 响应码 | 微信无响应码 |
errmsg | 响应信息 | 微信小程序返回非空,为错误原因 |