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


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 相关文章推荐
一些经常会用到的Javascript检测函数
May 31 Javascript
jQuery中(function(){})()执行顺序的理解
Mar 05 Javascript
JS页面延迟执行一些方法(整理)
Nov 11 Javascript
Javascript学习笔记之数组的构造函数
Nov 23 Javascript
全面解析Bootstrap中transition、affix的使用方法
May 30 Javascript
基于js实现二级下拉联动
Dec 17 Javascript
js读取本地文件的实例
Dec 22 Javascript
vue多层嵌套路由实例分析
Mar 19 Javascript
使用apifm-wxapi快速开发小程序过程详解
Aug 05 Javascript
分享JS表单验证源码(带错误提示及密码等级)
Jan 05 Javascript
tracking.js实现前端人脸识别功能
Apr 16 Javascript
Vue使用Element实现增删改查+打包的步骤
Nov 25 Vue.js
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
PHP 查找字符串常用函数介绍
2012/06/07 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
JS 统计时间
2021/03/09 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
vue 项目引入echarts 添加点击事件操作
2020/09/09 Javascript
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
Python 操作文件的基本方法总结
2017/08/10 Python
python实现多人聊天室
2020/03/31 Python
对python周期性定时器的示例详解
2019/02/19 Python
Python 3.8 新功能全解
2019/07/25 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
门卫人员岗位职责
2013/12/24 职场文书
数控专业自荐书范文
2014/03/16 职场文书
个人委托书怎么写
2014/04/04 职场文书
代理协议书
2014/04/22 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
中学校园广播稿
2015/08/18 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android
Java异常处理try catch的基本用法
2021/12/06 Java/Android
Java数据结构之堆(优先队列)
2022/05/20 Java/Android