微信app支付和jsapi支付不同的地方就是不需求获取openid,然后要注意的就是签名,一定要排好序
排序
//再次发送请求微信获取prepay_id
String PostResult = http.sendPost(ConstantUtil.GATEURL, xml);
Map<String, Object> cbMap = XMLParser.getMapFromXML(PostResult);
if (cbMap.get("return_code").equals("SUCCESS") && cbMap.get("result_code").equals("SUCCESS")) {
//这就是预支付id
prepay_id = cbMap.get("prepay_id") + "";
maps = new HashMap<>();
maps.put("appid", tbPayWQ.getAppId().trim());
maps.put("noncestr", nonce_str);
maps.put("package", "Sign=WXPay");
maps.put("partnerid", tbPayWQ.getPartnerId().trim());
maps.put("prepayid", prepay_id);
maps.put("timestamp", new Date().getTime()+"");
/* String signs = "appid=" + tbPayWQ.getAppId().trim() + "&noncestr=" + nonce_str + "&package=Sign=WXPay&partnerid="
+ tbPayWQ.getMchId().trim() + "&prepayid=" + prepay_id + "×tamp=" + new Date().getTime() + "" + "&key="
+ tbPayWQ.getPartnerKey().trim();*/
//参数加密
sign = WXPayUtil.generateSignature(maps, tbPayWQ.getPartnerKey().trim(), WXPayConstants.SignType.MD5);
maps.put("sign", sign);
return new Result<Map<String, String>>().ok(maps);
} else {
return new Result<Map<String, String>>().error(2, "获取参数失败");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
获取预支付id和jsapi一样,排好序后将加密后的签名和需要的参数发给安卓和ios就完成了