⼩程序开发(七)⼩程序⽀付-查询订单
应⽤场景
该接⼝提供所有⽀付订单的查询,商户可以通过查询订单接⼝主动查询订单状态,完成下⼀步的业务逻辑。
需要调⽤查询接⼝的情况:
◆ 当商户后台、⽹络、服务器等出现异常,商户系统最终未接收到⽀付通知;
◆ 调⽤⽀付接⼝后,返回系统错误或未知交易状态情况;
◆ 调⽤被扫⽀付,返回USERPAYING的状态;
◆ 调⽤关单或撤销接⼝API之前,需确认⽀付状态;
接⼝说明
这⾥如果已经做好了统⼀下单,。再做查询订单就是⼀件很简单的事情了。
但是这⾥需要注意的是商户订单号-out_trade_no这个,因为我们在统⼀下单的时候有这个,查村订单也是根据这个区查询,后⾯的关闭订单,退款都可以根据这个去操作。
代码实现制作查询类小程序
总结/* * 根据商户订单号out_trade_no 查询订单 */router.all('/api/wxpay/orderQuery', function (req, res, next) { var param = req.query || req.params; var out_trade_no = param.out_trade_no; var nonce_str = getNonceStr(); var bodyData = '<xml>'; bodyData += '<appid>' + wxConfig.AppID + '</appid>'; bodyData += '<mch_id>' + wxConfig.Mch_id + '</mch_id>'; bodyData += '<nonce_str>' + nonce_str + '</nonce_str>'; bodyData += '<out_trade_no>' + out_trade_no + '</out_trade_no>'; var sign = orderQuerySign( wxConfig.AppID, wxConfig.Mch_id, nonce_str, out_trade_no ); bodyData += '<sign>' + sign + '</sign>'; bodyData += '</xml>'; var urlStr = 'h.weixin.qq/pay/orderquery'; request({ url: urlStr, method: 'POST', body: bodyData }, function (error, response, body) { if (!error && response.statusCode == 200) { var returnValue = {}; parseString(body, function (err, result) { if (urn_code[0] == 'SUCCESS' && sult_code[0] == 'SUCCESS') { returnValue.msg = '操作成功'; returnValue.status = '100'; sult = result; d(JSON.stringify(returnValue)); } else {
returnValue.msg = urn_msg[0]; returnValue.status = '102'; sult = result; d(JSON.stringify(returnValue)); } }); } })});// 查询/关闭订单 签名算法 function orderQuerySign (appid,mch_id,nonce_str,out_trade_no) { var ret = { appid: appid, mch_id: mch_id, nonce_str: nonce_str, out_trade_no: out_trade_no }; var str = raw(ret); str = str + '&key='+key; var md5Str = ateHash('md5').update(str).digest('hex'); md5Str = UpperCase(); return md5Str;};1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
其实代码实现很简单就是看的⽂档就可以。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论