签名说明:
排除sign参数之外,将其它参数(空值除外)按名称进行字母排序,并和它的取值一起组成name=value样式的字符串,然后用&把它们拼装为一个大字符串,针对goods_detail这种值为对象类型的,直接拼对象对应的json串
app_id=MQ100013&app_name=多点&color=#FF0000&goods_detail=[{"bod
y":"body123456","categories_tree":"5263","goods_category":"5689","goods_id":"id123456","goods_name":"name123456","price":"20","quantity":"20","show_url":"url123456"}]&goods_name=矿
泉水&merch_no=833651658120003¬ify_url=http://test.mdun.cn/jd/pay/notice&out_trade_no=test&pn=XN000003&remark=测试交易备注&total_amount=0.05
请求参数(O-非必传 ,M-必传):
参数 | 参数名称 | 类型 | 参数说明 | 样例 | 可空 |
---|---|---|---|---|---|
merch_no | 商户编号 | String | 商户在码钱平台的编号 | a10253390 | M |
out_trade_no | 商户交易订单号 | String | 商户的交易订单编号 | 161018121614000624679888 | M |
total_amount | 订单金额 | String | 订单总金额,以元为单位 | 100 | M |
pn | 支付授权码 | String | 支付授权码(虚拟终端序列号) | 请前往开放平台申请或联系渠道经理协助申请 | M |
appid | 平台分配应用ID | String | 应用备案通过后分配 | 请前往开放平台申请或联系渠道经理协助申请 | M |
appname | 备案应用名称 | String | 应用备案名称 | 请前往开放平台申请或联系渠道经理协助申请 | M |
source | 来源标识 | String | 第三方调用来源 | ||
app:app调用 | |||||
miniapp:小程序调用 | app | M | |||
notify_url | 通知地址 | String | 支付成功后的通知地址 | http://test.mdun.cn/jd/pay/notice | O |
color | 返回按钮颜色 | String | 返回按钮的颜色 | O | |
remark | 交易备注 | String | (v1.05增加) | O | |
limit_pay | 限制贷记卡支付 | String | (v1.19增加)0:不限制贷记卡支付1:禁止使用贷记卡支付。不上送此参数时,limit_pay默认为0,即:不限制贷记卡支付 | O | |
goods_name | 商品名称 | String | 商品名称(支付宝和微信支持) | 矿泉水 | O |
goods_detail | 商品详情 | JSONArray | 商品详细描述,参考下表(商户信息:goods_detail) | [ { “goods_id”: “商品编码”, “wxpay_goods_id”: “1001”, “goods_name”: “”, “quantity”: 1, “price”: 528800 }, { “goods_id”: “商品编码”, “wxpay_goods_id”: “1002”, “goods_name”: “iPhone6s 32G”, “quantity”: 1, “price”: 608800 } ] | O |
sign | 签名 | String | SHA256WithRSA 商户私钥加密 | M |
返回参数(O-非必传 ,M-必传):
参数 | 参数名称 | 类型 | 参数说明 | 样例 | 可空 |
---|---|---|---|---|---|
status | 状态 | String | success:支付成功 | ||
cancel:取消支付 | |||||
fail :支付失败 | M | ||||
msg | 错误描述 | String | 成功/失败均有值 | O |
示例
小程序调起收银台小程序
open() {
var param = 'data={"app_id":"MQ11111","app_name":"多点","color":"#FF0000","goods_detail":[{"goods_id":"id123456","goods_name":"name123456","price":"1","quantity":"20"}],"goods_name":"矿泉水","limit_pay":"1","merch_no":"833102358120220","notify_url":"http://test.mdun.cn/jd/pay/notice","out_trade_no":"miniapp1697700635376","pn":"XN000001","remark":"测试交易备注","source":"miniapp","terminal_info":{"app_version":"23091301","encrypt_rand_num":"928201","secret_text":"968542A5"},"total_amount":"0.01"}&sign=VTkowIfDeSUpy2QYu07UB0U6J5kEuc75s5rRPfwJGis1MSy73EgLUZIhJqKrU/MdlcCwgqRyON/uB/5ZOr/TENw9epRcY3/MLHF5cD9KcqWYGsLhyzYDK6YLe+yCDw0SqyMM7boeuN09nS8MiIVPd1M96aOKJ/wfsBSTdHv+zXAqJAM033etuA3vOUs7nwg5z1pocc5cci7GZVWDKjHOZ+j91+lqMHr9DM+5jSsBjPbmO4DsiGLyuCg4+6lJb1Bf6A6n7iZjOSBIjgXN8tqENGP3XAPxemqIf/iT55QQTsQCyGBFIvV1T4GrNm1yXHSvRjA75bQCgCSBj1xWNbWI6A==';
wx.openEmbeddedMiniProgram({
appId: "wxa9494a95118be376",
path: `/pages/cashier/index?${param}`,
envVersion: "release"
});
}
通过上述方法会调起收银台半屏小程序,在收银台中完成支付后,会回调支付结果,
onShow() {
wx.onAppShow((res) => {
if (res.referrerInfo.extraData) {
console.log(res.referrerInfo.extraData); // {status: "success", msg: "支付成功"}
}
})
}
特殊说明:
一般情况下wx.getEnterOptionsSync()中获取的extraData为收银台小程序返回的支付结果,但是当通过物理返回键或者通过半屏小程序右上角关闭退出(即未通过收银台小程序内按钮退出),extraData内容会为空,调用方小程序会无法获得支付结果,该情况为微信小程序特性,小程序代码无法处理。
如遇到该情况,通过判断场景值为1038且来源小程序为收银台小程序wxa9494a95118be376,即可认定为收银台返回,当前若extraData为空,则需要自行查询订单支付结果
APP调起收银台小程序:
码钱收银原始 ID:gh_495fc43c9560
Android开发示例:
iOS开发示例:
调起方式如上文档,该方式同样适用于小程序打开,此处只展示部分字段,具体字段自行根据业务需求填写:
req.path = "pages/cashier/index?data={"app_id":"MQ10001","app_name":"多点","color":"#FF0000","goods_detail":[{"goods_id":"id123456","goods_name":"name123456","price":"1","quantity":"20"}],"goods_name":"矿泉水","limit_pay":"1","merch_no":"833304458120002","notify_url":"http://test.mdun.cn/jd/pay/notice","out_trade_no":"test1697697220182","pn":"XN000005","remark":"测试交易备注","source":"app","terminal_info":{"app_version":"23091301","encrypt_rand_num":"928201","secret_text":"968542A5"},"total_amount":"0.01"}&sign=EatiG3J2Ppps9QkpqVKvKW2rlxV2E/Vh9nMgJfExPMIwoEjJ3YV5NpIM/nj0c+yArkYVL/9OCEcldj96krNGYjjEeD7BnoeMnOImNx+vhd2Ebsejkf2mvqrx0QYtam0+JcCSzHYSx78cF7aNctvEWZtLwF4EBUA60amIH+dNscxnpri66j2iihG+e5VJIIyN+eMa3VQPrHm/Bnq4Tib/QwzPfFRF47LJhKdLCWCe6Zeg86COQMu6Z+mAUr7+edVpKPV4nCHOMJWQ91nw+c4/Xlwm5dyHTVliXvc6vnHxesDpWEDCYg6QvB2xdSCWF9e/Qfkw7z4y+uv/Jh2WuFh/qw=="
Android小程序回调APP注意事项
WXEntryActivity类文件,需要放置在微信配置应用时填写包名下的wxapi包中,比如当前APP配置包名为“com.allinpaysdk”,则WXEntryActivity需要放在“com.allinpaysdk.wxapi”包中,且该类只能命名为WXEntryActivity,WXEntryActivity以上规范为微信要求,不能修改,否则影响小程序回调APP
特殊说明:
上述文档有说明小程序回调APP说明,但是该回调仅限于在小程序内点击按钮返回APP时有效,但是当通过物理返回键返回APP、任务列表切换回APP、通过半屏小程序右上角关闭退出(即未通过收银台小程序内按钮退出),该回调并不会触发,该情况为微信小程序特性,小程序代码无法处理。
如遇到该情况,建议在APP跳转小程序时新建变量保存跳转标识,在APP内监听到重新打开APP且标志存在,则需要自行查询订单支付结果。