微信服务号 微信支付开发
1.发起支付,都是通过h5发起的,首先获取prepay_id
发起支付,需要统一下单的prepay_id
SortedMap parameters = new TreeMap();
parameters.put(\"appid\", ConfigUtil.APPID);
parameters.put(\"mch_id\", ConfigUtil.MCH_ID);
parameters.put(\"nonce_str\", PayCommonUtil.CreateNoncestr());
parameters.put(\"body\", bodyorder);
parameters.put(\"out_trade_no\", outTradeNo);// 用户订单号
parameters.put(\"total_fee\", totalfee);// 标价金额(分)
// parameters.put(\"spbill_create_ip\",IpAddreUtil.getIpAddr(request));
parameters.put(\"spbill_create_ip\", \"192.168.1.1\");// 电脑测试
// parameters.put(\"spbill_create_ip\",NetworkUtil.getIpAddre(request));
parameters.put(\"notify_url\", ConfigUtil.NOTIFY_URL);
parameters.put(\"trade_type\", \"JSAPI\");
parameters.put(\"openid\", openId);
String sign = PayCommonUtil.createSign(\"UTF-8\", parameters);
parameters.put(\"sign\", sign);
String requestXML = PayCommonUtil.getRequestXml(parameters);
String result = CommonUtil.httpsRequestR2s(ConfigUtil.UNIFIED_ORDER_URL, \"POST\", requestXML);
System.out.println(\"第一弹数据\" + result + \"ip地址\" + NetworkUtil.getIpAddre(request));
数据为
第一弹数据
2.拿到prepay_id后,就可以发起支付
支付,需要设置测试路径和真实路径,
发起支付,将参数转为json,在放到respond里,然后h5页面从request里取
SortedMap params = new TreeMap();
params.put(\"appId\", ConfigUtil.APPID);
params.put(\"timeStamp\", Long.toString(new Date().getTime()));
params.put(\"nonceStr\", PayCommonUtil.CreateNoncestr());
System.out.println(\"订单id\" + map.get(\"prepay_id\"));
params.put(\"package\", \"prepay_id=\" + map.get(\"prepay_id\"));
params.put(\"signType\", ConfigUtil.SIGN_TYPE);
String paySign = PayCommonUtil.createSign(\"UTF-8\", params);
// params.put(\"packageValue\", \"prepay_id=\"+map.get(\"prepay_id\"));
// //这里用packageValue是预防package是关键字在js获取值出错
params.put(\"paySign\", paySign); // paySign的生成规则和Sign的生成规则一致
String json = JSONObject.fromObject(params).toString();
System.out.println(\"第二弹数据\" + json);
try {
response.setContentType(\"text/html\" + \";charset=UTF-8\");
response.setHeader(\"Pragma\", \"No-cache\");
response.setHeader(\"Cache-Control\", \"no-cache\");
response.setDateHeader(\"Expires\", 0);
response.getWriter().write(json);
response.getWriter().flush();
} catch (IOException e) {
e.printStackTrace();
} }
上传,支付的html页面
微信支付
-->
苏牌皮草
库存18件
原价:8888元
现价:5000
我要购买