小程序支付完之后通知回调接受失败

已经支付成功,但是回调函数得时候出错
图片说明

图片说明

yml回调域名配置
图片说明

回调代码

 public void notify(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String wxRetXml = PaymentUtils.getRequestData(request);
        Map<String, String> wxRetMap = PaymentUtils.xmlToMap(wxRetXml);
        Assert.notNull(wxRetMap, ExceptionMessage.XML_DATA_INCORRECTNESS.getMessage());

        // 当返回的return_code为SUCCESS则回调成功
        if ("SUCCESS".equalsIgnoreCase(wxRetMap.get("return_code"))) {
            // 通知微信收到回调
            String resXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
            BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
            out.write(resXml.getBytes());
            out.flush();
            out.close();

            // TODO 保存订单流水 具体细节待实现
           // orderBillService.save(new OrderBill());

            log.info("notify success"+"通知结束");
        } else {
            log.error("notify failed");
        }
    }

小程序代码

wx.request({
              url: 'http://127.0.0.1:8080/api/wx/pay/notify',
              method: 'GET',
              header: {
                'Authorization': 'bearer ' + this.data.token.data.access_token,
                "Content-Type": "application/x-www-form-urlencoded"
              },
              success: res => {
                console.log('支付完成后返回的', res)
              }

            })

2个回答

你这个回调方法写得有问题吧,我之前写的微信支付是先要对微信返回信息做签名检验的,检验通过而且result_code为SUCCESS,是不用给微信服务器返回信息的;如果检验不通过,则返回签名验证错误对应的字符串;如果检验通过,但返回不是SUCESS,那就返回支付失败对应的字符串

 String resXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
            BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
            out.write(resXml)//不知道能直接写 string 吗

https://blog.csdn.net/ihtml5/article/details/87938992

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问