使用Bmob后端云实现的微信支付(后端处理),如何防止重复通知/多次回调

1、复制云函数的完整调用链接

使用Bmob后端云实现的微信支付(后端处理),如何防止重复通知/多次回调

2、将该链接配置为支付成功异步通知的url

使用Bmob后端云实现的微信支付(后端处理),如何防止重复通知/多次回调

3、云函数处理逻辑

        先查看微信支付的开发文档,防止处理逻辑有所遗漏导致一些不必要的麻烦

使用Bmob后端云实现的微信支付(后端处理),如何防止重复通知/多次回调

        下面有我测试的案例,经过我多次测试才找到正确的方法

// request.getParams()获取携带的参数,参数如下:
// {"out_trade_no":"商户单号","trade_status":"1","trade_no":"交易单号"}
JSONObject paramsObj = request.getParams();

// 查询支付订单信息,参数如下:
HttpResponse res = modules.oData.payQuery(paramsObj.getString("out_trade_no"));

if(该订单还未处理) { // 必须判断,防止同个订单被多次处理
    
    // 处理数据...
    
    // 反馈给微信服务器,这一步很重要
    // 测试1:失败,重复通知
    // response.send("<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>");
    // 测试2:失败,重复通知
    // response.send("<xml><return_code>SUCCESS</return_code><return_msg>OK</return_msg></xml>");
    // 测试3:失败,重复通知
    // response.send(true);
    // 测试4:失败,重复通知
    // return;

    // 测试5:成功,微信已响应并停止继续通知
    response.send("SUCCESS");
}