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


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 相关文章推荐
jQuery代码优化 遍历篇
Nov 01 Javascript
基于jquery实现控制经纬度显示地图与卫星
May 20 Javascript
Highcharts 非常实用的Javascript统计图demo示例
Jul 03 Javascript
jQuery中insertBefore()方法用法实例
Jan 08 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
Dec 04 Javascript
Kindeditor在线文本编辑器如何过滤HTML
Apr 14 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
Aug 29 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
May 08 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
Oct 11 Javascript
Vue实现按钮旋转和移动位置的实例代码
Aug 09 Javascript
JS制作简易计算器的实例代码
Jul 04 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
php miniBB中文乱码问题解决方法
2008/11/25 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
pycharm设置注释颜色的方法
2018/05/23 Python
Python对象属性自动更新操作示例
2018/06/15 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
Python利用命名空间解析XML文档
2020/08/10 Python
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
学生周末长期请假条
2014/02/15 职场文书
网络管理员岗位职责
2014/03/17 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
中国合伙人观后感
2015/06/02 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers