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


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 相关文章推荐
8个实用的jQuery技巧
Mar 04 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
Jun 04 Javascript
js实现圆盘记速表
Aug 03 Javascript
jquery实现拖动效果
Aug 10 Javascript
JS+CSS3模拟溢出滚动效果
Aug 12 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
Apr 28 Javascript
vue router仿天猫底部导航栏功能
Oct 18 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
Oct 24 Javascript
Vue引入sass并配置全局变量的方法
Jun 27 Javascript
react 中父组件与子组件双向绑定问题
May 20 Javascript
layui按条件隐藏表格列的实例
Sep 19 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
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
smarty简单入门实例
2014/11/28 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
js脚本学习 比较实用的基础
2006/09/07 Javascript
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
Python入门_条件控制(详解)
2017/05/16 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
python tensorflow学习之识别单张图片的实现的示例
2018/02/09 Python
Python定时任务sched模块用法示例
2018/07/16 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
Python while循环使用else语句代码实例
2020/02/07 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
python实现猜拳游戏
2020/03/04 Python
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
信息专业本科生个人的自我评价
2013/10/28 职场文书
促销活动总结
2014/04/28 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android