⼩程序开发(七)⼩程序⽀付-查询订单
应⽤场景
该接⼝提供所有⽀付订单的查询,商户可以通过查询订单接⼝主动查询订单状态,完成下⼀步的业务逻辑。
需要调⽤查询接⼝的情况:
◆ 当商户后台、⽹络、服务器等出现异常,商户系统最终未接收到⽀付通知;
◆ 调⽤⽀付接⼝后,返回系统错误或未知交易状态情况;
◆ 调⽤被扫⽀付,返回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
其实代码实现很简单就是看的⽂档就可以。