微信服务号 微信支付开发
微信支付,须要通过微信支付验证
眼下。支付仅限服务号,
做微信支付开发,主要看开发文档
统一下单。
订单查询
退款等
1.发起支付。都是通过h5发起的,首先获取prepay_id
发起支付,须要统一下单的prepay_id
SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
parameters.put("appid", ConfigUtil.APPID);
parameters.put("mch_id", ConfigUtil.MCH_ID);
parameters.put("nonce_str", PayCommonUtil.CreateNoncestr());
parameters.put("body", bodyorder);
parameters.put("out_trade_no", outTradeNo);// 用户订单号
parameters.put("total_fee", totalfee);// 标价金额(分)
// parameters.put("spbill_create_ip",IpAddressUtil.getIpAddr(request));
parameters.put("spbill_create_ip", "192.168.1.1");// 电脑測试
// parameters.put("spbill_create_ip",NetworkUtil.getIpAddress(request));
parameters.put("notify_url", ConfigUtil.NOTIFY_URL);
parameters.put("trade_type", "JSAPI");
parameters.put("openid", openId);
String sign = PayCommonUtil.createSign("UTF-8", parameters);
parameters.put("sign", sign);
String requestXML = PayCommonUtil.getRequestXml(parameters);
String result = CommonUtil.httpsRequestR2s(ConfigUtil.UNIFIED_ORDER_URL, "POST", requestXML);
System.out.println("第一弹数据" + result + "ip地址" + NetworkUtil.getIpAddress(request));
数据为
第一弹数据
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx06e68e38fcef451d]]></appid>
<mch_id><![CDATA[1427607202]]></mch_id>
<nonce_str><![CDATA[vOK9ll6ZylQAOiRV]]></nonce_str>
<sign><![CDATA[4D7F2D8D55377493503F8BB9E2F94C8B]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<prepay_id><![CDATA[wx20170105120958d7d94506790707606719]]></prepay_id>
<trade_type><![CDATA[JSAPI]]></trade_type>
</xml>
2.拿到prepay_id后,就能够发起支付
支付,须要设置測试路径和真实路径。
发起支付。将參数转为json,在放到respond里,然后h5页面从request里取
SortedMap<Object, Object> params = new TreeMap<Object, Object>();
params.put("appId", ConfigUtil.APPID);
params.put("timeStamp", Long.toString(new Date().getTime()));
params.put("nonceStr", PayCommonUtil.CreateNoncestr());
System.out.println("订单id" + map.get("prepay_id"))