踩坑!!!微信JSAPI支付

    xiaoxiao2023-12-19  155

    public Map<String, String> order(HttpServletRequest request,String orderNo,String totalFee,String openid){ System.out.println("***WxPayController.order()"); Map<String, Object> retMap = new HashMap<String, Object>(); Map<String, String> payMap = new HashMap<String, String>(); RestTemplate rest = new RestTemplate(); rest.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8"))); try { Map<String, String> paramMap = new HashMap<String, String>(); paramMap.put("appid", appid); //公众账号ID paramMap.put("mch_id", mch_id); //商户号 paramMap.put("nonce_str", WXPayUtil.generateNonceStr()); //随机字符串 paramMap.put("body", desc); //商品描述 paramMap.put("out_trade_no", orderNo); //商户订单号 paramMap.put("total_fee", totalFee); //标价金额 paramMap.put("spbill_create_ip", getIpAddress(request));//终端IP paramMap.put("notify_url", notify_url); //通知地址 paramMap.put("trade_type", "JSAPI"); //交易类型 paramMap.put("openid", openid); String sign = WXPayUtil.generateSignature(paramMap, key); paramMap.put("sign", sign); String mapToXml = WXPayUtil.mapToXml(paramMap); String postForObject = rest.postForObject(new URI(unifiedorder_url), mapToXml, String.class); System.out.println("***postForObject:\n"+postForObject); String prepayId = "";//预支付id if (postForObject.indexOf("SUCCESS") != -1) { Map<String, String> map = WXPayUtil.xmlToMap(postForObject); prepayId = (String) map.get("prepay_id"); } //todo payMap里面的key!不能有下划线!否则会导致后端验签成功前端验签失败!搞了我24小时才解决!!! payMap.put("appId", appid); payMap.put("timeStamp", System.currentTimeMillis()+""+""); payMap.put("nonceStr", WXPayUtil.generateNonceStr()); payMap.put("signType", "MD5"); payMap.put("package", "prepay_id=" + prepayId); String paySign = WXPayUtil.generateSignature(payMap, key); payMap.put("paySign", paySign); System.out.println("***微信创建订单成功"); return payMap; } catch (Exception e) { retMap.put("code", "500"); retMap.put("msg", e.getStackTrace()); e.printStackTrace(); } return payMap; }
    最新回复(0)