微信小程序进行微信支付的步骤昂述


Posted in Javascript onDecember 01, 2016

最近开发微信小程序进入到支付阶段,一直以来从事App开发,所以支付流程还是熟记于心的。但是微信小程序的支付就有点奇怪了,应用的创建是在公众号里,但是文档的介绍却在公众号中无法找到直接入口,甚是不解,而且小程序的师傅到底是属于公众号支付范畴还是app支付范畴也成疑问。下面是小程序支付文档的入口(嵌套在小程序api中):

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1

小程序支付步骤:

1,预支付

2,根据预支付数据+签名——>发起支付

3,支付回调

下面对这3个步骤进行简单描述:

1,预支付。该接口通过前端提交需支付的信息(订单号、价格等)给开发者服务器,开发者服务器在提交到微信,而后返回真正前端需要进行支付的一些信息;eg:

开发者服务器的预支付接口:

https://()htm?total_fee=100&cid=6001&orderCodes=2016120119
{
"sign":"A2****************A6",
"timestamp":"14****************68",
"package":"Sign=WXPay",
"partnerId":"14****************02",
"appid":"wx****************ab",
"nonceStr":"9f****************37",
"prepayId":"wx****************54"
}

2,发起支付(需要注意的是发起支付是不需要上传appid,

但是签名paySign需要appid ,而且放在第一个)

wx.requestPayment({ 
nonceStr: res.data.nonceStr, 
package: "prepay_id="+res.data.prepayId, 
signType: 'MD5', 
timeStamp: res.data.timestamp, 
paySign: sign,//<strong><span style="color:#ff0000;">五个字段参与签名(区分大小写):appId,nonceStr,package,signType,timeStamp(需要注意的是,这5个参数签名排序的顺序按照ASCII字典序排序)</span></strong> 
success: function(res){ 
console.log("支付成功"); 
}, 
fail: function() { 
}, 
complete: function() { 
} 
})

生成签名sign

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1&t=20161122

微信小程序MD5加密工具下载地址:https://code.csdn.net/snippets/2019875/master/download

var MD5Util = require('../../../utils/md5.js');
var sign = ''; 
//<strong><span style="color:#ff0000;">顺序按照ASCII字典序排序</span></strong> 
var signA = "appId="+app.appId+"&nonceStr="+res.data.nonceStr+"&package=prepay_id="+res.data.prepayId+"&signType=MD5&timeStamp="+res.data.timestamp; 
var signB = signA+"&key="+app.key; 
sign = MD5Util.MD5(signB).toUpperCase();

生成签名上面是我的代码,不是很清晰, 下面列出来官方文档的详细描述:

假设传送的参数如下:

appid: wxd930ea5d5a258f4f(需要注意的是appid 在wx.requestPayment({})发起支付是不上传,但是签名时需要)
mch_id: 10000100
device_info: 1000
body: test
nonce_str: ibuaiVcKdpRxkhJA

第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:

stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";

第二步:拼接API密钥:

stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d"
sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7"

此时的sign 用于wx.requestPayment 上传参数paySign。

最终得到最终发送的数据:

<xml> 
<appid>wxd930ea5d5a258f4f</appid> 
<mch_id>10000100</mch_id> 
<device_info>1000<device_info> 
<body>test</body> 
<nonce_str>ibuaiVcKdpRxkhJA</nonce_str> 
<sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign> 
<xml>

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

Javascript 相关文章推荐
指定js可访问其它域名的cookie的方法
Sep 18 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
Nov 30 Javascript
javascript+canvas制作九宫格小程序
Dec 28 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
Jan 18 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
Aug 05 Javascript
修改js confirm alert 提示框文字的简单实例
Jun 10 Javascript
浅谈Node.js:Buffer模块
Dec 05 Javascript
清除输入框内的空格
Dec 21 Javascript
jquery.tableSort.js表格排序插件使用方法详解
Aug 12 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
Nov 09 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
May 03 Javascript
JavaScript中的类型检查
Feb 03 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 #Javascript
bootstrapValidator自定验证方法写法
Dec 01 #Javascript
jQuery生成假加载动画效果
Dec 01 #Javascript
解析AngularJS中get请求URL出现的跨域问题
Dec 01 #Javascript
浅谈js键盘事件全面控制
Dec 01 #Javascript
jstree的简单实例
Dec 01 #Javascript
Vue.JS入门教程之事件监听
Dec 01 #Javascript
You might like
Zend Framework前端控制器用法示例
2016/12/11 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
JsDom 编程小结
2011/08/09 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
js实现旋转木马效果
2017/03/17 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
js实现3D旋转相册
2020/08/02 Javascript
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
py2exe 编译ico图标的代码
2013/03/08 Python
收集的几个Python小技巧分享
2014/11/22 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Python 查看文件的读写权限方法
2018/01/23 Python
Django自定义manage命令实例代码
2018/02/11 Python
python将txt文件读取为字典的示例
2018/12/22 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
pandas-resample按时间聚合实例
2019/12/27 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
python多维数组分位数的求取方式
2020/03/03 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
C语言笔试题回忆
2015/04/02 面试题
远东集团网络工程师面试题
2014/10/20 面试题
中国梦演讲稿开场白
2014/08/28 职场文书
redis三种高可用方式部署的实现
2021/05/11 Redis
Python Numpy库的超详细教程
2022/04/06 Python