转载请注明出处:https://blog.csdn.net/Strugglein/article/details/81148814
微信支付的所有源码打包下载请跳: 微信支付相关所有源码下载
上一章介绍了微信支付与app对接,这篇来记录下微信支付后端与小程序对接,话不多说直接上代码
1. 正文
//这个properties是一个读取配置文件中的上面四个参数一个util
HashMap<String, Object> properties = WeChatPayUtil.getProperties();
//封装请求参数
SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
parameters.put("appid", properties.get("wx.appid"));//appid
parameters.put("mch_id", properties.get("wx.mch_id"));//商户号
parameters.put("nonce_str", WeChatPayToolsUtil.CreateNoncestr());//随机字符串
parameters.put("fee_type", "CNY");
parameters.put("openid", openId);
parameters.put("notify_url", properties.get("wx.notify_url"));//回调地址
parameters.put("trade_type", "JSAPI");//交易类型
parameters.put("body", "wechatPay");//订单描述
String ip = "127.0.0.1";//测试使用这个ip
// String ip = WeChatPayToolsUtil.getRemortIP(request);//实际使用这个获取本机ip
parameters.put("spbill_create_ip", ip);//ip
parameters.put("out_trade_no", userOrder.getId() + "");//商户的订单号
parameters.put("total_fee", String.valueOf(param.getFee()));
// 设置签名
String sign = WeChatPayToolsUtil.createSign(properties.get("wx.partnerKey").toString(), parameters);
parameters.put("sign", sign);
// 封装请求参数结束
String requestXML = WeChatPayToolsUtil.getRequestXml(parameters); // 获取xml结果
logger.debug("封装请求参数是:" + requestXML);
// 调用统一下单接口
InputStream in = null;
try {
in = WeChatPayToolsUtil.sendXMLDataByPost(GetConstantsUtil.WECHAT_UNDIFYURL, requestXML).getEntity().getContent();
} catch (IOException e) {
new IOException(Constants.Exception_Head + "统一下单异常");
}
//处理返回结果转为map
Map<String, String> resultmap = getElementValue(in);
logger.debug("调用统一下单接口:" + resultmap.toString());
if (resultmap.get("return_code").equals("SUCCESS")) {
if (resultmap.get("result_code").equals("SUCCESS")) {
//这里主要是获取一个叫做prepay_id的字段,如果返回说签名失败或者什么的,根据msg提示操作
}
}
这里主要有两个关键参数
openid:
用户标识 是通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,具体参考:https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html?t=20161122
trade_type:
交易类型 小程序取值如下:JSAPI
2.小程序端:
在小程序中主要uiy使用wx.requestPayment(OBJECT)
API来拉起微信支付
根据以下格式来请求
wx.requestPayment({
'timeStamp': '',
'nonceStr': '',
'package': '',
'signType': 'MD5',
'paySign': '',
'success':function(res){
},
'fail':function(res){
}
})
具体参考:https://developers.weixin.qq.com/miniprogram/dev/api/api-pay.html#wxrequestpaymentobject
3 .回调接口以及工具类
回调接口就是使用我的上一篇文章里的回调接口就可以,然后其他的一些工具类也是可以在我的上一篇文章中获取 https://blog.csdn.net/strugglein/article/details/81143244
微信本来就是一个坑很多的一个接入,如果有其他的不了解的地方可以下面评论或者邮箱私信我都可以,一定看到就会回复的,我把所有的包括微信支付,退款,回调,查询,关闭的代码打了个包放到了
https://download.csdn.net/download/strugglein/10560640,如果有有土豪玩家或者有不想拷代码的同志可以支持我一下
谢谢大家~~~~
虚心的去学习,自信的去工作~