微信公众号支付jsapi




微信后台配置,需要注意的是不需要精确到servlet,只需精确到项目名称就好


Next


//此处根据网页授权接口得到openid
		String openid = "";
		
		String device_info = "设备1";// 终端设备号
		String body = "Ipad mini  16G  白色";// 商品描述
		String detail = "Ipad mini  16G  白色";// 商品详情
		String attach = "附加";// 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
		int total_fee = 1;// 总金额
		
		
		try {
			// outTradeNo 订单号
			UnifiedOrderBean order = new UnifiedOrderBean(ParamConfig.appID
					, ParamConfig.mchID, device_info,
					PayUtil.getRandomStringByLength(32), null, body, detail,
					attach, PayUtil.getTradeNo(), "CNY", total_fee, Util
							.getIpAdd(), PayUtil.getYmdhms(), PayUtil
							.getAfterTimeByNow(1800000), "WXG", req
							.getRequestURL().toString(), "JSAPI", null, null, openid);
			
			
			order.setSign(Signature.getSign(order));
			
			HttpRequest http = new HttpRequest();
			String retOrder = http.sendPost("https://api.mch.weixin.qq.com/pay/unifiedorder", order);
			
			log.i("jsapi返回数据,	"+retOrder);
			Map<String, Object> mapOrder = XMLParser.getMapFromXML(retOrder);
			
			
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("appId", ParamConfig.appID);
			map.put("timeStamp", PayUtil.getTime_stamp());
			map.put("nonceStr", PayUtil.getRandomStringByLength(32));
			map.put("package", "prepay_id="+mapOrder.get("prepay_id"));
			map.put("signType", "MD5");
			map.put("paySign", Signature.getSign(map));
			
			req.setAttribute("map",map);
			
			
			req.getRequestDispatcher("/jsapi.jsp").forward(req, resp);
			
			
		} catch (Exception e) {
			e.printStackTrace();
			log.e(e.getMessage());
		}




<pre name="code" class="html"><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>jsapi</title>
		<meta name="viewport"
			content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
			<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
		<script type="text/javascript">
		
				function jsApiCall(){
				   WeixinJSBridge.invoke(
				       'getBrandWCPayRequest', {
				           "appId": "${map.appId}",
						    "timeStamp": "${map.timeStamp}",
						    "nonceStr": "${map.nonceStr}",
						    "package": "${map.package}",
						    "signType": "${map.signType}",
						    "paySign": "${map.paySign}"
				       },
				       function(res){
				          if (res.err_msg == "get_brand_wcpay_request:ok") {
                         	 alert("支付成功");
                        	 // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 
	                     }
	                     else if (res.err_msg == "get_brand_wcpay_request:cancel") {
	                         alert("cancel");
	                         // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 
	                     }
	                     else if (res.err_msg == "get_brand_wcpay_request:fail") {
	                         alert("fail");
	                         // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 
	                     }
				       }
				   ); 
				}
				
				function callpay()
		        {
			        if (typeof('WeixinJSBridge') == "undefined"){
		                if( document.addEventListener ){
		                    document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
		                }else if (document.attachEvent){
		                    document.attachEvent('WeixinJSBridgeReady', jsApiCall); 
		                    document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
		                }
		            }else{
		                jsApiCall();
		            }
		        }
			</script>
	</head>

	<body>
		<button style="width:210px; height:30px; background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer;  color:white;  font-size:16px;" type="button" οnclick="callpay()" >wx pay test</button>

	</body>
</html>


 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值