Java micro-channel pay H5

Micro-channel technical documentation  https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

WeChat platform interface https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

No public micro-channel payment error: get_brand_wcpay_request: fail

function onBridgeReady(appId,timeStamp,nonceStr,package,signType,paySign){
		WeixinJSBridge.invoke(
			'getBrandWCPayRequest', {
				"appId": appId,     //公众号名称,由商户传入
				"timeStamp": timeStamp,         //时间戳,自1970年以来的秒数
				"nonceStr": nonceStr, //随机串
				"package": package,
				"signType": signType,         //微信签名方式:
				"paySign": paySign//微信签名
			},
			function(res){
                alert(JSON.stringify(res));
                alert(res.err_code + res.err_msg + res.err_desc);
				if(res.err_msg == "get_brand_wcpay_request:ok" ) {
					pop({
						text:"支付成功!",
						type:"1",
						style:"text-align:center"
					},function(){
						blacks();
					});
					sessionStorage.level_id = 2;
				}else if(res.err_msg == "get_brand_wcpay_request:cancel" ) {
					pop({text:"取消 支付成功"});

				}else if(res.err_msg == "get_brand_wcpay_request:fail"){
					 pop({text:"支付失败"});
				}
			}
        );
}

Micro-channel pay development documents: https://pay.weixin.qq.com/wiki/doc/api/index.html

H5 pay official document: https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1

Backend java:


public static JSONObject wxOnePay(){
    //第一步:获取下单prepay_id
    String prepay_id = null;
    Map<Object, Object> parameters = new HashMap<Object, Object>();
    parameters.put("appid", "");
    parameters.put("mch_id", "");
    parameters.put("nonce_str", PayCommonUtil.CreateNoncestr());//随机字符串
    parameters.put("body", "会员费"); //付费说明
    parameters.put("out_trade_no", "2019022518010127");//下单流水号
	parameters.put("total_fee", "100");//支付金额(以分为单位)
    parameters.put("notify_url", Constants.NOTIFY_URI);// 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
    parameters.put("trade_type", "JSAPI");
    parameters.put("openid", user.open_id); //用户openid
    //签名
    String sign = PayCommonUtil.createSign("UTF-8", parameters);
	parameters.put("sign", sign);
	String requestXML = PayCommonUtil.getRequestXml(parameters);
	Logger.info("requestXML:" + requestXML.toString());
	String result = WeChatUtil.httpRequest2("https://api.mch.weixin.qq.com/pay/unifiedorder", "POST", requestXML.toString());
	Logger.info("result:" + result);

	Map<String, String> map = XMLUtil.doXMLParse(result);
	String returnCode = map.get("return_code");
	String resultCode = map.get("result_code");
	if(returnCode.equalsIgnoreCase("SUCCESS")&&resultCode.equalsIgnoreCase("SUCCESS")) {
		prepay_id = map.get("prepay_id");
    }
    
    //第二步
    
	String timeStamp = PayCommonUtil.getTimeStamp();
	String nonceStr = PayCommonUtil.CreateNoncestr();
    //获取签名
	StringBuilder redirectSignStr = new StringBuilder("appId="+Constants.APPID);
    redirectSignStr.append("&nonceStr="+nonceStr);
	redirectSignStr.append("&package=prepay_id="+prepay_id);
	redirectSignStr.append("&signType=MD5");
	redirectSignStr.append("&timeStamp="+timeStamp);
	redirectSignStr.append("&key="+Constants.WX_API_KEY);
		        
	String paySign =  MD5Util.MD5Encode(redirectSignStr.toString(), "UTF-8").toUpperCase();
	HashMap<String,String> map = new HashMap<String,String>();
	map.put("status", "1");
	map.put("appId", Constants.APPID);
	map.put("timeStamp", timeStamp);
	map.put("nonceStr", nonceStr);
	map.put("package", "prepay_id="+ prepay_id);
	map.put("signType", "MD5");
	map.put("paySign", paySign);
		
    JSONObject jsonObject = JSONObject.fromObject(callbackMap);
    return jsonObject;
}

 

Published 15 original articles · won praise 7 · views 10000 +

Guess you like

Origin blog.csdn.net/J_M_S_H_T/article/details/85090907