接上篇,现在已经获取到微信的openid了,下步需要获取prepay_id。
1、继续微信支付的接口API:把必传的参数列出来:

  • 公众账号ID appid
  • 商户号 mch_id
  • 随机字符串 nonce_str
  • 签名 sign
  • 商品描述 body
  • 商户订单号 out_trade_no
  • 总金额 total_fee 注意单位是
  • 终端IP spbill_create_ip
  • 通知地址 notify_url
  • 交易类型 trade_type
  • 用户标识 openid 网页支付必传
    2、下面构造上述信息;先登录微信商户平台,获取商户号mch_id

    3、设置支付密钥、下载证书:
  • 注意在设置密钥的时候要注意是否已经设置,重设会影响到线上支付。
    4、到此,我们已经拿到了
  • 公众账号ID appid
  • 商户号 mch_id
  • 支付密钥 签名需要
  • 用户标识 openid 网页支付必传
    5、其它根据自身业务需要构造即可。
    6、我们来看签名算法
  • 1)、设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
  • 2)、拼接API密钥:finalStr=”stringA&key=你设置的支付密钥”;
  • 3)、加密:MD5(stringSignTemp).toUpperCase()
    7、到此,看回第一篇中提到的构建微信统一支付请求xml串代码
  /*** 构建微信统一支付请求xml串* @param payParams* @return str*/public static String buildUnifiedOrderReq(Map<String,String> payParams){String payStr = "";payStr += "<xml>";payStr +=    "<appid>"+payParams.get("appid")+"</appid>";payStr +=    "<body>"+payParams.get("body")+"</body>";payStr +=    "<mch_id>"+payParams.get("mch_id")+"</mch_id>";payStr +=    "<nonce_str>"+payParams.get("nonce_str")+"</nonce_str>";payStr +=    "<notify_url>"+payParams.get("notify_url")+"</notify_url>";payStr +=    "<openid>"+payParams.get("openid")+"</openid>";payStr +=    "<out_trade_no>"+payParams.get("out_trade_no")+"</out_trade_no>";payStr +=    "<spbill_create_ip>"+payParams.get("spbill_create_ip")+"</spbill_create_ip>";payStr +=    "<total_fee>"+payParams.get("total_fee")+"</total_fee>";payStr +=    "<trade_type>JSAPI</trade_type>";payStr +=    "<sign>"+payParams.get("sign")+"</sign>";payStr +="</xml>";return payStr;}

8、将业务参数拼接后,我们就能得到要发送的请求串了。
9、请求接口的时候,需要设置证书,注意证书的路径。如果是java开发,这个比较简单。Windows环境的话就要导入证书,这些步骤参照微信支付的帮助文档即可。
10、下一步,需要去微信公众号设置支付测试目录:
参考官方说明即可:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3
11、设置完毕,就到H5微信内调起微信支付了。
12、来到官方说明【注意,有坑】:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6
先把示例代码复制:

function onBridgeReady(){WeixinJSBridge.invoke('getBrandWCPayRequest', {"appId" [:] "wx2421b1c4370ec43b",     //公众号名称,由商户传入     "timeStamp"[:]" 1395712654",         //时间戳,自1970年以来的秒数     "nonceStr" [:] "e61463f8efa94090b1f366cccfbbb444", //随机串     "package" [:] "prepay_id=u802345jgfjsdfgsdg888",     "signType" [:] "MD5",         //微信签名方式:     "paySign" [:] "70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 },function(res){     if(res.err_msg == "get_brand_wcpay_request:ok" ) {}     // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回    ok,但并不保证它绝对可靠。 });
}
if (typeof WeixinJSBridge == "undefined"){if( document.addEventListener ){document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);}else if (document.attachEvent){document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);}
}else{onBridgeReady();
}
  • 坑:示例代码中前面部分的冒号:不是英文下的符号,见代码中,已经用[]标出。
    请复制下面的代码:
function onBridgeReady(){WeixinJSBridge.invoke('getBrandWCPayRequest', {"appId" : appId, /* 微信支付,坑一 冒号是中文字符 */"timeStamp":timeStamp,"nonceStr": nonceStr,"package":pckage,"signType": signType,"paySign":paySign},function(res){     if(res.err_msg == "get_brand_wcpay_request:ok" ) {alert("充值成功");}else{alert(res.err_msg);}}); } if (typeof WeixinJSBridge == "undefined"){if( document.addEventListener ){document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);}else if (document.attachEvent){document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);}}else{onBridgeReady();} 

13、到此,已经完成了80%了。把代码部署到测试服务器。访问测试即可。
14、此部分测试微信开发工具调试不了,所以每一步都要自己把好关。不然调试的时候头都大。
15、最后,把遇到的问题列出来,予以分享:

  • 1、调起支付的时候,一闪而过?
  • 答:请检查签名正确与否
  • 2、支付不了?
  • 答:请检查自己的微信号是否已经加入了测试号中
  • 最后,需要检查费用单位是否是、支付路径大小写、安全支付域名是否正确。

微信支付--网页版-V3-(3)相关推荐

  1. 微信支付--网页版-V3-(1)

    最近要做网页微信公众号网页调微信支付.好了,废话不多说,先看官方的文档: https://pay.weixin.qq.com/index.php/home/login?return_url=%2F 1 ...

  2. 微信支付--网页版-V3-(2)

    接上篇:上篇我们提到需要通过访问一个链接来获取微信用户的openid.接下来,我们看看需要准备哪些工具: 1).微信测试公众号 2).内网穿透工具 3).开发工具 1.微信测试公众号,我们可以用自己的 ...

  3. java微信支付代码_10行代码搞定微信支付(Java版)

    原标题:10行代码搞定微信支付(Java版) 微信支付痛点 对于大多数同学来说,要开发微信支付可不简单.附上微信支付官方文档网页链接 从文档上可以看出,你需要解决很多问题,我就随便挑几个吧. xml与 ...

  4. 微信支付商业版 结算周期_了解商业周期

    微信支付商业版 结算周期 Economics is an inexact science, finance and investing even more so (some would call th ...

  5. 自己动手写油猴脚本 - 简单优化微信读书网页版阅读体验

    1. 微信读书网页版的问题: 内容居中未充满整个body(强迫症),右侧的下滑滚动条影响全屏时候的阅读体验. 2. 解决方法 使用油猴脚本(没有Tampermonkey,请自行百度安装)来修改网页源码 ...

  6. 微信支付网页二维码NATIVE

    微信支付网页二维码NATIVE 微信支付有一个大坑,就是大额支付的时候,会出问题,我再这先说一下 第一步 需要找你的老大,要三个东西 1: appid(公众账号ID) 2:mch_id(商户号)3:k ...

  7. 微信支付python版2.0_刷卡支付-翟东平-专题视频课程

    微信支付python版2.0_刷卡支付-244人已学习 课程介绍         微信支付系列课程将讲解"刷卡支付"."扫码支付"."公众号支付&qu ...

  8. 微信支付java版v2.0_刷卡支付-翟东平-专题视频课程

    微信支付java版v2.0_刷卡支付-1814人已学习 课程介绍         微信支付系列课程将讲解"刷卡支付"."扫码支付"."公众号支付&qu ...

  9. 视频教程-企业微信支付JAVA版_向员工收款-微信开发

    企业微信支付JAVA版_向员工收款 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信息 ...

最新文章

  1. 互联网1分钟 | 0328 阿里巴巴收购企业协作软件Teambition;完美世界:与谷歌达成战略合作,积极探索VR等新游戏类型...
  2. 前端学习(2733):重读vue电商网站43之使用 lodash 中 cloneDeep(obj) 来实现深拷贝
  3. 数据结构--位图 BitMap
  4. MySQL 处理重复数据
  5. centos7 安装 php-fpm_centos7中如何安装 php-fpm(nginx)
  6. 任意形状文本检测:Look More Than Once
  7. java单例模式代码vol_单例模式--java代码实现
  8. H3C Telnet 配置(利用Windows10 cmd)
  9. matlab中fplot和ezplot,Matlab中plot、fplot、ezplot的使用方法和区别
  10. java--分布式ID生成器
  11. NetMeeting不能共享桌面的解决办法
  12. st8s003 c语言编译器,ST系列STM8S003F3P6单片机芯片介绍
  13. PHP之字符串常用函数
  14. 其实,我只是一个工程师
  15. html input 密文,HTML input text框显示为密文
  16. python 批量图片局部高斯模糊(图片水印处理)
  17. java局域网通信_java局域网通信
  18. CVE-2022-1388 BIG-IP_POC-YAML
  19. “降准”带来大牛市? 量化测算PMI 社融 汇率等宏观数据A股择时效果
  20. HTML5期末大作业:个人主页网站设计(6页)代码质量高 学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载

热门文章

  1. Android App 导出APK安装包以及制作App图标讲解及实战(图文解释 简单易懂)
  2. java 广告sdk开发_supersonicads广告sdk逆向分析以及无源码debug java
  3. 【面向对象学习笔记day05】面向对象封装案例2+士兵突击+开发枪类+开发士兵类+身份运算符+is 与 == 区别
  4. 使用word完成海报制作说明书
  5. Vue 按enter键实现登陆
  6. 元宇宙产业委共同主席倪健中带队参访杭州市总工会推动元宇宙合作
  7. 如何将拉勾网(智联招聘)的预览简历导出来
  8. 补码转原数值公式(非常简单实用的公式)
  9. 人脸识别之人脸关键点(仅供本人参考)
  10. 小红书标签怎么添加?小红书标签对作品有什么影响