微信支付—1.总结可用信息—java前后操作支付
来源:互联网 发布:微信秒红包软件 编辑:程序博客网 时间:2024/06/03 14:28
注释:1、2为准备工作
1.微信支付规则
2.参数规定
3.调用接口
第一步需要先生成一个签名:
第二步在微信端进行调用wx.requestPayment(OBJECT)发起微信支付
现在进行梳理支付,首先暴露一个流程,大家经过研读也应该有看到,这里将对于没有看过开发文档的看客观看:
**
- 1.需要先微信小程序端使用调用登录方法,获取一个code
**
App({ onLaunch: function() { wx.login({ success: function(res) { if (res.code) { //发起网络请求 wx.request({ url: 'https://test.com/onLogin', data: { code: res.code } }) } else { console.log('获取用户登录态失败!' + res.errMsg) } } }); }})
- 2.后端需要相应的调用登录api根据code进行获取一个openid,这个是需要之后在支付中使用
public static JSONObject getSessionKeyOropenid(ReceivePayInfoUtil receivePayInfoUtil,String code) { //微信端登录code值获取oppenid String requestUrl = receivePayInfoUtil.url; Map<String, String> requestUrlParam = new LinkedHashMap<String, String>(); requestUrlParam.put("appid", receivePayInfoUtil.getAppid()); requestUrlParam.put("secret", receivePayInfoUtil.getSecret()); requestUrlParam.put("js_code", code); requestUrlParam.put("grant_type", "authorization_code");//发送post请求读取调用微信 https://api.weixin.qq.com/sns/jscode2session 接口获取openid用户唯一标识 JSONObject jsonObject = JSON.parseObject(HttpSendUtil.sendPostOpen(requestUrl, requestUrlParam)); return jsonObject; } 注:最后的JSONObject方法体重是自定义的http请求,自己封装即可
- 3.根据获取的openid先进行生成一个签名(个人经验–这个签名与之后你发起请求的吧包体字段除去*户key,其他字段一致)
例如:sign=a+b+c+商户key;;;;发送的包体中需要a+b+c+sign(生成的签名)
//证书签名 String A = "appid=" + appid +"&attach="+attach + "&body="+body+"&mch_id=" + mch_id + "&nonce_str=" + nonce_str+"¬ify_url="+notify_url +"&openid="+openid+"&out_trade_no="+out_trade_no +"&total_fee="+total_fee +"&trade_type="+trade_type; String SignTemp = A + "&key=" + receivePayInfoUtil.getKey(); String signmd5 = PayServiceUtil.getStrMd5(SignTemp).toUpperCase(); //根据升序转化成XML Map<String, Object> parameters = new LinkedHashMap<String, Object>(); parameters.put("appid", appid); parameters.put("attach", attach); parameters.put("body", body); parameters.put("mch_id", mch_id); parameters.put("nonce_str", nonce_str); parameters.put("notify_url", notify_url); parameters.put("openid", openid); parameters.put("out_trade_no", out_trade_no); parameters.put("total_fee", total_fee); parameters.put("trade_type", trade_type); parameters.put("sign", signmd5); String requestXML = XML.getMap2Xml(parameters); String a = HttpSendUtil.sendPost(payUrl, requestXML); JSONObject jsonObject1 = XML.toJSONObject(a); jsonObject1.put("key",receivePayInfoUtil.getKey());注:此demo全部为自己封装使用,没有使用太多jar包,相信大家可以看懂,不懂可以直接博客评论私信都可以
- 4.生成签名方式在开发文档中有,拼接,进行md5,然后生成的md5.toUpperCase();
此处写的不好,上面代码有此内容,如果再次粘贴,可能大家会出现更多疑问点,会再次斟酌重写此篇文章
到此,最后再就是微信端调用此处返回的信息,进行再次签名,根据开发文档的再次签名即可,进行使用微信支付接口即可
wx.requestPayment({ 'timeStamp': '', 'nonceStr': '', 'package': '', 'signType': 'MD5', 'paySign': '', 'success':function(res){ }, 'fail':function(res){ }})
微信支付就这样到此为止了,最后告诉大家一个坑,appid,这个id的i为大写,这个问题发生在返回信息的再次签名中(微信的小坑)
阅读全文
1 0
- 微信支付—1.总结可用信息—java前后操作支付
- 微信支付,支付宝支付,银联支付——三大支付总结
- java微信支付总结
- Android支付——微信支付总结
- 【支付信息】支付宝 微信支付 —— A2 iOS
- 微信支付——jaspi支付
- 微信支付——jspi支付
- 微信支付总结
- 微信支付总结
- 微信支付总结
- java --微信支付
- java微信支付
- java 微信支付
- java微信支付
- android 微信、支付宝支付总结
- iOS-集成支付宝支付、微信支付简单总结
- 微信支付 APP支付 Java 服务器端
- 微信支付 APP支付 Java 服务器端
- python之文件读写
- 敏感词过滤
- Laravel应用目录结构
- 关于elasticsearch的先聚合和过滤、先过滤再聚合的详解
- 在百度云购买域名、阿里云购买服务器二者绑定过程
- 微信支付—1.总结可用信息—java前后操作支付
- 微交互:App成功的秘诀
- ReentrantLock的注释中文翻译
- GreenDao数据库
- 线程安全的AtomicLong使用
- JAVA代码实现多级树结构封装对象
- three.js 01-03 之添加光源
- Centos 7 离线安装Cloudera Manager5 和CDH5.13.0
- 详解U-Boot中printf函数的实现