81,092
社区成员
发帖
与我相关
我的任务
分享
String timeStamp = String.valueOf(WXPayUtil.getCurrentTimestamp());
String nonceStr = WXPayUtil.generateNonceStr();
WXPay wxPayClient = WXPayUtil.getWXPayClient();
GarageWXPayConfig config = (GarageWXPayConfig) wxPayClient.getWXPayConfig();
String pkg = "prepay_id=" + idPrepay;
resultMap.put("appId", config.getAppID());
resultMap.put("timeStamp", timeStamp);
resultMap.put("nonceStr", nonceStr);
resultMap.put("package", pkg);
resultMap.put("signType", "MD5");
LogUtils.audit("参与验签的参数", resultMap, config.getKey());
String paySign = WXPayUtil.generateSignature(resultMap, config.getKey());
resultMap.put("paySign", paySign);
public static String generateSignature(final Map<String, String> data, String key, SignType signType)
throws Exception {
Set<String> keySet = data.keySet();
String[] keyArray = keySet.toArray(new String[keySet.size()]);
Arrays.sort(keyArray);
StringBuilder sb = new StringBuilder();
for (String k : keyArray) {
if (k.equals(WXPayConstants.FIELD_SIGN)) {
continue;
}
if (data.get(k).trim().length() > 0) // 参数值为空,则不参与签名
sb.append(k).append("=").append(data.get(k).trim()).append("&");
}
sb.append("key=").append(key);
LogUtils.audit("拼接后的串",sb.toString());
if (SignType.MD5.equals(signType)) {
return MD5(sb.toString()).toUpperCase();
} else if (SignType.HMACSHA256.equals(signType)) {
return HMACSHA256(sb.toString(), key);
} else {
throw new Exception(String.format("Invalid sign_type: %s", signType));
}
}
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":wxInfo.appId, //公众号名称,由商户传入
"timeStamp":wxInfo.timeStamp, //时间戳,自1970年以来的秒数
"nonceStr":wxInfo.nonceStr, //随机串
"package":wxInfo.package,
"signType":"MD5", //微信签名方式:
"paySign":wxInfo.paySign //微信签名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {
alert('ok')
}
}
)
}
Map<String, String> requestMap = new HashMap<String, String>();
// 公众账号ID
requestMap.put("appid", config.getAppID());
// 商户号
requestMap.put("mch_id", config.getMchID());
// 子商户号
requestMap.put("sub_mch_id", merchantId);
// 随机字符串
requestMap.put("nonce_str", WXPayUtil.generateNonceStr());
// 商品描述
requestMap.put("body", payAccountInfoForm.getGarageName()+"-收款");
// 商户订单号
requestMap.put("out_trade_no", idPay);
// 总金额
requestMap.put("total_fee", String.valueOf(totalPrice.multiply(new BigDecimal(100)).intValue()));// 微信的单位为分
// 终端IP
requestMap.put("spbill_create_ip", requestIp);
// 通知地址
requestMap.put("notify_url", wxPayClient.getNotifyUrl());
// 交易类型
requestMap.put("trade_type", "JSAPI");
// 用户标识
requestMap.put("openid", openid);
// 签名类型
requestMap.put("sign_type", "MD5");
// 签名
String sign = WXPayUtil.generateSignature(requestMap, config.getKey(), WXPayConstants.SignType.MD5);
requestMap.put("sign", sign);
LogUtils.audit("请求微信预支付单API参数", requestMap);
Map<String, String> responseMap = wxPayClient.unifiedOrder(requestMap);