微信H5支付是让用户在非微信浏览器中使用的一种支付方式;
项目中对接微信支付是 微信公众号关联商户号的账号;
先上微信支付对接文档 微信支付文档地址,有需要的童鞋可以先自行了解一下;
从微信公众号后台获取基本数据,哪里获取自行登录微信公众号登录;
1.appid :公众号ID
2.mchid:商户号
3.key:商户号密钥
微信支付下单接口是统一的地址:https://api.mch.weixin.qq.com/pay/unifiedorder
微信加密规则自行了解微信加密规则
添加一个微信的工具类方便操作,maven地址
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
</dependency>
后端对接微信就一步操作,调用微信统一下单接口获取支付链接返回给前端就好了 微信H5下单文档
具体代码如下图,图中xml转实体,map转xml,以及加密参数 ,可引用上方maven中, WXPayUtil 中有对应方法
前端跳转链接唤醒微信,当用户支付成功后微信会通过第一步中 notify_url(异步通知地址)回调到服务器,通知该订单支付状态
回调自己处理对应业务逻辑后需要返回给微信一个处理成功的通知,否则微信回在一段时间不间断通知你的服务器,以下就是返回内容,直接response.write(resXml ) 就可以了;
String resXml = "<xml>" +
"<return_code><![CDATA[SUCCESS]]></return_code>"
+ "<return_msg><![CDATA[OK]]></return_msg>"
+ "</xml> ";
//获取request中的回调参数 并转成map
InputStream inStream = request.getInputStream();
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
String resultxml = new String(outSteam.toByteArray(), "utf-8");
outSteam.close();
inStream.close();
Map<String, String> paramMap = WXPayUtil.xmlToMap(resultxml);
至此整个支付流程已经对接完毕