Java 微信H5支付

微信技术文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

微信平台接口https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

微信公众号支付报错: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:"支付失败"});
				}
			}
        );
}

微信支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/index.html

H5支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1

后端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;
}
发布了15 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/J_M_S_H_T/article/details/85090907