项目中需要对接微信支付记录下;
项目中对接微信支付是 微信公众号关联商户号的账号;
先上微信支付对接文档 微信支付文档地址,有需要的童鞋可以先自行了解一下;
从微信公众号后台获取基本数据,哪里获取自行登录 微信公众号登录;
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>
前端对接的 uni-app,具体怎么唤醒微信不清楚,按照前端要求跟微信文档返回数据给前端,后端对接前端就两步操作 微信APP支付文档
1.调用微信统一下单接口,通过接口获取预支付 prepay_id ,图中xml转实体,map转xml,以及加密参数
可引用上方maven中的 WXPayUtil 中有对应方法
2.上面接口成功返回,在把实体中prepay_id与其他参数整合成调起支付接口所需要的参数返回给前端,我这边直接返回了json字符串给前端
3.将json数据返回给前端后,前端拉起微信支付,当用户支付成功后微信会通过第一步中 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);
至此整个支付流程已经对接完毕