收藏
回答

java接入Native支付时,我获取不到code_url?

client.setXmlParam(WXPayUtil.generateSignedXml(m, WxPayUtils.WX_PAY_PARTNER_KEY));
client.setHttps(true);
//执行post请求发送
client.post();
//4 得到发送请求返回结果
//返回内容,是使用xml格式返回
String xml = client.getContent();
//把xml格式转换map集合,把map集合返回
Map<String,String> resultMap = WXPayUtil.xmlToMap(xml);
//最终返回数据 的封装
Map map = new HashMap();
map.put("no", no);
map.put("price", price);
map.put("result_code", resultMap.get("result_code"));
map.put("code_url", resultMap.get("code_url"));


回答关注问题邀请回答
收藏

2 个回答

  • 朝幕
    朝幕
    2021-06-08
    @Controller
    @RequestMapping("/wxpay")
    public class WxPayController {
        @RequestMapping("/pay")
        public String createPayQRcode(Model model) throws Exception{
    
            String price = "0.01";
            String no = getOrderNo();
            Map m = new HashMap();
            m.put("appid", WxPayUtils.WX_PAY_APP_ID);
            m.put("mch_id", WxPayUtils.WX_PAY_PARTNER);
            m.put("nonce_str", WXPayUtil.generateNonceStr());
            m.put("body","微信支付测试"); //主体信息
            m.put("out_trade_no", no); //订单唯一标识
                m.put("total_fee", getMoney(price));//金额
            m.put("spbill_create_ip", "127.0.0.1");//项目的域名
            m.put("notify_url", WxPayUtils.WX_OPEN_NOTIFY_URL);//回调地址
            m.put("trade_type", "NATIVE");//生成二维码的类型
    
            //3 发送httpclient请求,传递参数xml格式,微信支付提供的固定的地址
            HttpClient client = new HttpClient("https://api.mch.weixin.qq.com/pay/unifiedorder");
            //设置xml格式的参数
            //把xml格式的数据加密
            client.setXmlParam(WXPayUtil.generateSignedXml(m, WxPayUtils.WX_PAY_PARTNER_KEY));
            client.setHttps(true);
            //执行post请求发送
            client.post();
            //4 得到发送请求返回结果
            //返回内容,是使用xml格式返回
            String xml = client.getContent();
            //把xml格式转换map集合,把map集合返回
            Map<String,String> resultMap = WXPayUtil.xmlToMap(xml);
            //最终返回数据 的封装
            Map map = new HashMap();
            map.put("no", no);
            map.put("price", price);
            map.put("result_code", resultMap.get("result_code"));
            map.put("code_url", resultMap.get("code_url"));
    
            model.addAttribute("map",map);
            return "pay";
    
        }
    


    2021-06-08
    有用
    回复
  • ؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
    ؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
    2021-06-08

    呃,你可以把你请求接口传出去的参数的数据

    和接口返回的内容贴一贴,不然这样很难分析你到底什么问题的。

    2021-06-08
    有用
    回复 14
    • 朝幕
      朝幕
      2021-06-08
      我之前在前端访问这个接口,然后报一个
       Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause的错误
      2021-06-08
      回复
    • ؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
      ؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
      2021-06-08回复朝幕
      你可以把下图获取到的xml打日志出来吗?这样你起码知道你调接口微信给你返回了什么
      2021-06-08
      回复
    • ؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
      ؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
      2021-06-08回复朝幕
      致于这个错误,你可以看看你WxPayController.java的第84行,干什么出现的这个空指针异常
      2021-06-08
      回复
    • 朝幕
      朝幕
      2021-06-08回复؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
      第84行是另外一个接口
       //4.判断是否支付成功
              if(resultMap.get("trade_state").equals("SUCCESS")) ,就做了一个这个判断
      2021-06-08
      回复
    • 朝幕
      朝幕
      2021-06-08回复؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
      <xml><return_code><![CDATA[SUCCESS]]></return_code>
      <return_msg><![CDATA[OK]]></return_msg>
      <result_code><![CDATA[FAIL]]></result_code>
      <err_code_des><![CDATA[参数notify_url无效]]></err_code_des>
      <err_code><![CDATA[PARAM_ERROR]]></err_code>
      <mch_id><![CDATA[1510**9361]]></mch_id>
      <appid><![CDATA[wx53***2d0678d22ac]]></appid>
      <nonce_str><![CDATA[Mdq***H2mOP8tdDY]]></nonce_str>
      <sign><![CDATA[7E0B113606**B172E880***6378AC580]]></sign>
      </xml>
      这就是从xml中获取到的,那几个**是我自己打上去的
      2021-06-08
      回复
    查看更多(9)
登录 后发表内容