详解微信小程序调用支付接口支付


Posted in Javascript onApril 28, 2019

我前段时间做微信支付,遇到了很多坑,网上也没有讲解的特别明白的,通过借鉴各路人才的经验,最后也完成了,网上有很多讲解,我在这只讲一些注意点和解决的方法。我就讲讲我从完全懵到完成的过程吧。

在微信提供的接口文档中提供了一个微信支付接口,应该是直接调用这个接口就可以发起微信支付

文档路径:https://developers.weixin.qq.com/miniprogram/dev/api/api-pay.html#wxrequestpaymentobject

详解微信小程序调用支付接口支付

但是,当开始信心满满的去看所需参数时,懵逼了,这些参数是什么

详解微信小程序调用支付接口支付

在这些参数中最难理解和获取的就是这两个了,仔细研究后发现,package这个参数的获取要调用微信提供的另一个接口,统一下单接口。原来在微信中支付需要先进行一下预下单。这里的时间戳使用的是秒值,不是毫秒值

文档路径:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1

详解微信小程序调用支付接口支付

这个接口就需要后台通过http请求来调了

详解微信小程序调用支付接口支付

而在这些参数中,有两个参数很眼熟,在第一步发起微信请求时也有这两个参数,后发现这里的随机字符串就是调起支付时用到的随机字符串,而且是必须一致,那么签名呢,要是也认为一样就完全调沟里了,这里的签名我称为一次签名,因为支付的时候要进行第二次签名。签名生成算法有讲解,多读几遍就明白了,我建议读个几十遍。

把这些必填的参数都准备好

很重要的是你要首先有个店铺,就有商户号了

订单号必须唯一哦,通知地址就是当支付成功后微信会回调这个地址,在这里你可以做一些事,比如修改订单状态什么的。

然后就是签名生成,这个很重要:把需要的参数都放到一个map中,然后对这些参数进行排序,然后把商品key拼接到后面进行MD5加密就生成签名了,我还是建议仔细看看签名生成算法,不要想太复杂,就是排序,拼接,加密三步完成。

最后就是准备参数传输了,这里的参数传输是以xml的方式传输,下面就是传输的数据,其实就是一个大的字符串,

你可以这样

String s =“<xml>”

    +"<appid>wxdxxxxxxxxx</appid>"

    +"<mch_id>10000100</mch_id>"

    +"<nonce_str>24jtlk2j3ltjl2kjlkt3j</nonce_str>"

    +"<sign>432l4j5j4325l23k4j5lj34</sign>"

    +"</xml>"

详解微信小程序调用支付接口支付

我就意思一下了,大家懂就行,其实就是一个字符串,完全可以通过遍历参数map来自己拼接的。

然后就是把这个大字符串传过去,以上没问题的话就会返回一个字符串的xml,格式类型咱们拼接的参数。

详解微信小程序调用支付接口支付

从中取出我们需要的东西,最重要的应该就是这个,预下单id,这就是之前咱们需要的package

使用时是这样的:package='prepay_id=201411109120471241k1241240124bk1k24'

然后就是二次签名了,签名生成顺序和第一次是一样的,主要要确定需要哪些参数。

详解微信小程序调用支付接口支付

然后把这些参数返回给前台使用,取出来放进去就行了。

详解微信小程序调用支付接口支付

到这里前端调用一下就发起支付了。

有什么问题欢迎提问

以上所述是小编给大家介绍的微信小程序调用支付接口支付详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
根据经纬度计算地球上两点之间的距离js实现代码
Mar 05 Javascript
jquery实现上下左右滑动的方法
Feb 09 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
Aug 07 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
BootStrap实现带关闭按钮功能
Feb 15 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
Mar 02 Javascript
JS简单实现获取元素的封装操作示例
Apr 07 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
利用hasOwnProperty给数组去重的面试题分享
Nov 05 Javascript
layui的layedit富文本赋值方法
Sep 18 Javascript
vue 更改连接后台的api示例
Nov 11 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
Apr 28 #Javascript
使用webpack编译es6代码的方法步骤
Apr 28 #Javascript
使用异步组件优化Vue应用程序的性能
Apr 28 #Javascript
详解微信小程序获取当前时间及日期的方法
Apr 28 #Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
Apr 28 #Javascript
如何在微信小程序里面退出小程序的方法
Apr 28 #Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
Apr 28 #Javascript
You might like
第十三节--对象串行化
2006/11/16 PHP
请php正则走开
2008/03/15 PHP
基于pear auth实现登录验证
2010/02/26 PHP
20个PHP常用类库小结
2011/09/11 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
php intval函数用法总结
2019/04/14 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
nodejs实现连接mongodb数据库的方法示例
2018/03/15 NodeJs
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
[01:27]2014DOTA2展望TI 剑指西雅图IG战队专访
2014/06/30 DOTA
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
请介绍一下WSDL的文档结构
2013/03/17 面试题
秋天的雨教学反思
2014/04/27 职场文书
介绍长城的导游词
2015/01/30 职场文书