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


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 相关文章推荐
一个选择最快的服务器转向代码
Apr 27 Javascript
js批量设置样式的三种方法不推荐使用with
Feb 25 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
Jan 17 Javascript
JavaScript检测实例属性, 原型属性
Feb 04 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
Dec 27 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
Sep 27 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 Javascript
函数式编程入门实践(一)
Apr 20 Javascript
vue.js多页面开发环境搭建过程
Apr 24 Javascript
three.js利用卷积法如何实现物体描边效果
Nov 27 Javascript
JS求解两数之和算法详解
Apr 28 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
桌面中心(四)数据显示
2006/10/09 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
php实现数据库的增删改查
2017/02/26 PHP
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
python 图片验证码代码分享
2012/07/04 Python
python时间整形转标准格式的示例分享
2014/02/14 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python日期的加减等操作的示例
2017/08/15 Python
基于Python os模块常用命令介绍
2017/11/03 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
Python3中详解fabfile的编写
2018/06/24 Python
django富文本编辑器的实现示例
2019/04/10 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
python实现图片转字符画的完整代码
2021/02/21 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
Solaris操作系统的线程机制
2015/07/28 面试题
单位婚育证明范本
2014/11/21 职场文书
家长评语怎么写
2014/12/30 职场文书
社会实践活动报告
2015/02/05 职场文书
2015年体育部工作总结
2015/04/02 职场文书
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
2021/11/17 Servers