微信小程序支付(1)Uni-app平台API接口
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
快速体验
微信小程序版
注:
- 某些平台不能提交简单demo,故补充了一些其他功能;hello uni-app示例代码可从github获取。
实际运行效果如下:
uni.requestPayment(OBJECT)
支付
uni.requestPayment是一个统一各平台的客户端支付API,不管是在某家小程序还是在App中,客户端均使用本API调用支付。
本API运行在各端时,会自动转换为各端的原生支付调用API。
注意支付不仅仅需要客户端的开发,还需要服务端开发。虽然客户端API统一了,但各平台的支付申请开通、配置回填仍然需要看各个平台本身的支付文档。
比如微信有App支付、小程序支付、H5支付等不同的申请入口和使用流程,对应到uni-app,在App端要申请微信的App支付,而小程序端则申请微信的小程序支付。
如果服务端使用uniCloud,那么官方提供了uniPay云端统一支付服务,把App、微信小程序、支付宝小程序里的服务端支付开发进行了统一的封装。
前端统一的uni.requestPayment和云端统一的uniPay搭配,可以极大提升支付业务的开发效率,强烈推荐给开发者使用。uniPay的文档另见:https://uniapp.dcloud.io/uniCloud/unipay
平台差异说明
App |
H5 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节跳动小程序 |
QQ小程序 |
√ |
说明 |
√ |
√ |
√ |
√ |
√ |
OBJECT 参数说明
参数名 |
类型 |
必填 |
说明 |
平台差异说明 |
provider |
String |
是 |
服务提供商,通过 uni.getProvider 获取。 |
|
orderInfo |
String/Object |
是 |
订单数据,注意事项 |
App、支付宝小程序、百度小程序、字节跳动小程序 |
timeStamp |
String |
微信小程序必填 |
时间戳从1970年1月1日至今的秒数,即当前的时间。 |
微信小程序 |
nonceStr |
String |
微信小程序必填 |
随机字符串,长度为32个字符以下。 |
微信小程序 |
package |
String |
微信小程序必填 |
统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=xx。 |
微信小程序 |
signType |
String |
微信小程序必填 |
签名算法,暂支持 MD5。 |
微信小程序 |
paySign |
String |
微信小程序必填 |
签名,具体签名方案参见 微信小程序支付文档 |
微信小程序 |
bannedChannels |
Array<String> |
否 |
需要隐藏的支付方式,详见 百度小程序支付文档 |
百度小程序 |
service |
Number |
字节跳动小程序必填 |
固定值:1(拉起小程序收银台)开发者如果不希望使用字节跳动小程序收银台,service设置为3/4时,可以直接拉起微信/支付宝进行支付:service=3: 微信API支付,不拉起小程序收银台;service=4: 支付宝API支付,不拉起小程序收银台。其中service=3、4,仅在1.35.0.1+基础库(头条743+)支持 |
字节跳动小程序 |
_debug |
Number |
否 |
仅限调试用,上线前去掉该参数。_debug=1时,微信支付期间可以看到中间报错信息,方便调试 |
字节跳动小程序 |
getOrderStatus |
Function |
字节跳动小程序必填 |
商户前端实现的查询支付订单状态方法(该方法需要返回个Promise对象)。 service=3、4时不需要传。 |
字节跳动小程序 |
success |
Function |
否 |
接口调用成功的回调 |
|
fail |
Function |
否 |
接口调用失败的回调函数 |
|
complete |
Function |
否 |
接口调用结束的回调函数(调用成功、失败都会执行) |
注意事项
- APP端,如果你的应用在用户完成支付后;立即给支付的用户push消息通知。会与前端支付回调相互冲突,请延迟执行推送。
- 字节跳动小程序支付接口调整使用时请注意发起头条支付
orderInfo 注意事项
- 百度小程序的 orderInfo 为 Object 类型,详细的数据结构,参考:百度收银台支付。
- 支付宝小程序的 orderInfo(支付宝的规范为 tradeNO) 为 String 类型,表示支付宝交易号。
- 字节跳动小程序的 orderInfo 为 Object 类型,详见:发起头条支付
- 由于头条新版支付接口要求版本较高,在不支持新版支付接口的情况下仍会对应旧版支付接口,此时 orderInfo 对应字节跳动小程序 data, 详见:头条支付旧版接口。用户可以使用 tt.pay 判断是否支持新版接口。另外需要注意字节跳动小程序在1.35.0+版本基础库支持了 canIUse ,在1.19.4+版本基础库支持了新版支付接口 tt.pay ,所以应避免使用 canIUse 判断是否为新版接口。
- App端,支付宝支付 orderInfo 为 String 类型。
- App端,微信支付 orderInfo 为 Object 类型。
- App端,苹果应用内支付 orderInfo 为Object 类型,{productid: 'productid'}。
具体可参考微信官方文档: 移动应用开发
注意微信的App支付、小程序支付、H5支付是不同的体系。微信小程序支付在 微信商户平台 申请支付时,选择公众号支付;普通浏览器里也可以调起微信进行支付,这个在微信叫做H5支付,此功能未开放给普通开发者,需向微信单独申请,详见
manifest.json里配置相关参数
- 在manifest.json - App模块权限选择 中勾选 payment(支付)
- 在 manifest.json - App SDK配置 中,勾选需要的支付平台,目前有微信支付、支付宝支付、苹果应用内支付(IAP),其中微信支付需要填写从微信开放平台获取的AppID
- 这些配置需要打包生效,真机运行仍然是HBuilder基座的设置,可使用自定义基座调试。离线打包请参考离线打包文档在原生工程中配置。
- 配置并打包后,通过uni.getProvider可以得到配置的结果列表,注意这里返回的是manifest配置的,与手机端是否安装微信、支付宝无关。
如果手机端未安装支付宝,调用时会启动支付宝的wap页面登录,如果已安装相应客户端,会启动其客户端登录。
uni-app里开发
示例
微信小程序支付
// 仅作为示例,非真实参数信息。
uni.requestPayment({
provider: 'wxpay',
timeStamp: String(Date.now()),
nonceStr: 'A1B2C3D4E5',
package: 'prepay_id=wx20180101abcdefg',
signType: 'MD5',
paySign: '',
success: function (res) {
console.log('success:' + JSON.stringify(res));
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err));
}});
微信小程序支付(1)Uni-app平台API接口相关推荐
- 打造个人版微信小程序(1)——本地开发api接口调用
如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. 从今天开始,开始打造一个个人版的微信小程序,尽早上线,方便大家使用以及技术讨论.这套小程序包括前台.后台.数据库 ...
- 微信小程序调整的获取用户信息API接口wx.getUserProfile
对于微信小程序更新后的wx.getUserProfile怎么用?小程序怎么获取用户信息 getUserProfile接口文档:https://developers.weixin.qq.com/mini ...
- 使用银联商务实现微信小程序支付
最近公司的小程序需要使用到支付功能,我们使用的是银联商务的支付,那么如何在微信小程序中对接银联商务的微信小程序支付呢?这里我记录下我在微信小程序中实现银联商务的微信小程序支付流程 一:接口部分: 这里 ...
- 计算机毕业设计PHP基于微信小程序寸金校园租车平台(源码+程序+uni+lw+部署)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: phpStudy+ Vscode +Mysql5.7 + HBuilderX+Navicat11+Vue ...
- .NET Core 微信小程序支付——(统一下单)
最近公司研发了几个电商小程序,还有一个核心的电商直播,只要是电商一般都会涉及到交易信息,离不开支付系统,这里我们统一实现小程序的支付流程(与服务号实现步骤一样). 目录 1.开通小程序的支付能力 2. ...
- 不改一行代码,将微信小程序转成商业App?
Web2.0前期的"眼球经济",即以吸引用户长时间观看内容.使用工具为导向,占有用户的"屏幕时间"(Screen time),从中寻求各种"变现&qu ...
- 微信小程序支付错误提示“商户号mch_id或sub_mch_id不存在”
微信小程序支付错误提示"商户号mch_id或sub_mch_id不存在" 今天做微信小程序支付遇到这样一个问题,支付接口返回错误信息出显示"商户号mch_id或sub_m ...
- 微信小程序支付流程(新手教程)
微信小程序支付流程: 一.前期申请准备工作 1.小程序注册,要以公司的以身份去注册一个小程序,才能开通微信支付权限: 个人申请的小程序是不具备"微信支付"功能的! 但个人小程序可以 ...
- 微信小程序支付以及退款功能(超详细)
Springboot整合微信小程序支付 第一步: 第二步:导入微信支付的依赖 第三步:在springboot核心配置文件中配置参数 第四步:创建配置类WxPayAppConfig 第五步:支付方法 s ...
最新文章
- 腾讯Bugly异常崩溃SDK接入
- python(matplotlib)画柱状图(1)
- linux移走一年前的文件,Shell脚本实现删除一年前文件功能分享
- Ubuntu下eclipse部署mysql jdbc驱动
- 数据结构算法(二)_算法基础之前传(递归、时间复杂度、空间复杂度、二分查找)...
- 深入理解面向对象设计的七大原则
- Android之去掉RecycleView和NestedScrollView边缘效果
- python股票预测代码_python用线性回归预测股票价格的实现代码
- flex布局应用与踩坑
- Kubernetes理论02
- 前端-requests-flask对应关系 file
- SQL Server如何保证可空字段中非空值唯一
- 计算机视觉未有深度学习之前
- Rust : WSL下编程
- 喜马拉雅音频下载工具 - xmlyfetcher
- Linux运维工程师简历项目经验
- excel数据处理,表格数据处理成树形结构
- postgresql10中的pg_stat_statements
- 武大2020/4/15-关于选派全日制在校生2020/2021学年秋季赴部分欧洲高校交流学习的通知(三)
- The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
热门文章
- 证券从业考试如何备考1116
- 浙江省初中计算机知识点,浙江省信息技术学业水平考试重要知识点整理归纳
- html中的长度单位
- 服务器保存时提示文档未保存,Word文档保存时常遇到的问题及其解决方法
- php照片管理源码,PHP图片管理 Coppermine Photo v1.5.22 多国语言版
- source insight4.0使用教程
- yarn install报错及解决办法
- Ultimate Colour Control for mac(fcpx终极色彩控制插件)
- Cloud一分钟 |小米瞄上电纸书市场;员工《卫报》开专栏控诉亚马逊;拼多多Q3财报:总收入33.724亿元...
- linux windos 设计理念,Windows 20 概念设计