native支付,生成二维码,用户扫码支付
流程图
具体实现
添加依赖
<dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</version> </dependency>
主要是用到这个jar包里面的获取随机字符串,WXPayUtil.generateSignedXml,WXPayUtil.xmlToMap(content)功能
1、商户系统生成微信支付所需信息
String xmlParam=WXPayUtil.generateSignedXml(paramMap,partnerkey);2、发送给微信,商户系统接收微信返回数据,生成二维码
@PostMapping("/wx/submit") public Map wxSubmit(String orderId) throws Exception { OrderInfo orderInfo = orderService.getOrderInfo(orderId); Map paramMap=new HashMap();//组织参数,传给微信 paramMap.put("appid",appid); paramMap.put("mch_id",partner);//商户号 paramMap.put("nonce_str",WXPayUtil.generateNonceStr());//生成随机字符串 paramMap.put("body",orderInfo.genSubject());//商品描述 paramMap.put("out_trade_no", "ATGUIGU-"+orderId+"-"+System.currentTimeMillis());//订单号生成 paramMap.put("total_fee",orderInfo.getTotalAmount().multiply(new BigDecimal(100)).toBigInteger().toString());//标价金额 paramMap.put("spbill_create_ip","127.0.0.1"); paramMap.put("notify_url","http://269026wg43.zicp.vip/wx/callback/notify");//通知地址,支付成功后会通知这里 paramMap.put("trade_type","NATIVE"); String xmlParam=WXPayUtil.generateSignedXml(paramMap,partnerkey);//map转为xml字符串,并且添加签名,两步并一步 HttpClient httpClient = new HttpClient("https://api.mch.weixin.qq.com/pay/unifiedorder");//生成连接 httpClient.setXmlParam(xmlParam);//将参数放入 httpClient.post();//提交给微信 String content = httpClient.getContent(); //得到返回结果的xml Map<String, String> resultMap = WXPayUtil.xmlToMap(content);//转为map if(resultMap.get("code_url")!=null){//取出code_url String code_url = resultMap.get("code_url"); // HashMap<Object, Object> hashMap = new HashMap<>(); return resultMap; }else{ System.out.println(resultMap.get("return_code")); System.out.println(resultMap.get("return_msg")); return null; } }