最近弄app微信支付开发,关于微信API中服务端统一下单和调取微信支付接口中sign签名的巨坑做介绍:
一、如图:统一下单
该签名方式见微信API:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3
二:如图:调起微信支付接口
这里我是将统一下单接口返回的xml转换成JSON,
if(jsonObject.getString("return_code").equals("SUCCESS")){
String appid = jsonObject.getString("appid");
String partnerid =jsonObject.getString("partnerid");
String prepayid = jsonObject.getString("prepay_id");
String pack= jsonObject.getString("package");
String noncestr = jsonObject.getString("nonce_str");
String timestamp = jsonObject.getString("timestamp");
String signA = "appid=" + appid + "&noncestr=" + noncestr + "&package="
+ pack + "&partnerid=" + partnerid + "&prepayid=" + prepayid + "×tamp=" + timestamp;
String stringSignTemp = signA + "&key=" + Settings.WX_key; // 根据签名格式组装数据,详见微信支付api
String sign = DigestUtils.md5Hex(
WeiXinPayUtil.getContentBytes(stringSignTemp, "UTF-8")).toUpperCase();
重新生成sgin后将其他所需数据一起封装好传给客户端