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


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 相关文章推荐
Jquery中ajax方法data参数的用法小结
Feb 12 Javascript
jQuery简易图片放大特效示例代码
Jun 09 Javascript
javaScript实现可缩放的显示区效果代码
Oct 26 Javascript
js替换字符串中所有指定的字符(实现代码)
Aug 17 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
Nov 25 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
Jun 23 Javascript
使用use注册Vue全局组件和全局指令的方法
Mar 08 Javascript
jQuery表单元素过滤选择器用法实例分析
Feb 20 jQuery
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 jQuery
Vue使用Clipboard.JS在h5页面中复制内容实例详解
Sep 03 Javascript
Node.js实现简单管理系统
Sep 23 Javascript
js在HTML的三种引用方式详解
Aug 29 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/10/09 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
Python3.6简单反射操作示例
2018/06/14 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
python 两种方法删除空文件夹
2020/09/29 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
广州地球村科技数据库题目
2016/04/25 面试题
工作中的自我评价如何写好
2013/10/28 职场文书
医大实习自我鉴定
2013/12/07 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2015年财务部工作总结
2015/04/10 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
校园广播站开场白
2015/06/01 职场文书
Redis集群的关闭与重启操作
2021/07/07 Redis