uniapp 微信支付,小程序支付,支付宝支付问题汇总
背景介绍
uni-app 可以转微信小程序或直接打包 APP ,支付模块使用统一方法 uni.requestPayment 但是不同平台参数不同容易出现混淆错乱。
相关网站
- uni-app 统一支付: https://uniapp.dcloud.net.cn/api/plugins/payment.html
- 小程序支付(v2):https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5
- 微信支付(v2):https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2
- 小程序支付方法:https://developers.weixin.qq.com/miniprogram/dev/api/payment/wx.requestPayment.html
注意事项
uni.requestPayment 方法的 orderInfo 不同平台参数类型不同,文档中参数仅示例并非真实参数值。
- 微信小程序支付时要使用解构赋值,或者一个个get set ,最容易出错的地方
- APP 微信支付时需要的是
orderInfo对象,不能解构赋值 - APP 支付宝支付返回的是
orderInfo字符串 provider参数:alipay支付宝支付wxpay微信支付
- 注意
orderInfo对象中key大小写问题以及驼峰命名容易出错。
微信小程序
orderInfo 参数内容
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 小程序ID | appId | 是 | String | wxd678efh567hg6787 | 微信分配的小程序ID |
| 时间戳 | timeStamp | 是 | String | 1490840662 | 时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间 |
| 随机串 | nonceStr | 是 | String | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 |
| 数据包 | package | 是 | String | prepay_id=wx2017033010242291fcfe0db70013231072 | 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=wx2017033010242291fcfe0db70013231072 |
| 签名方式 | signType | 是 | String | MD5 | 签名类型,默认为MD5,支持HMAC-SHA256和MD5。注意此处需与统一下单的签名类型一致 |
{
"appId": "wx12234578963",
"nonceStr": "e1c0666542b544d6bf8d2228ee45316",
"package": "prepay_id=wx1223457896342cabe60000",
"paySign": "F2141E9E3CFDC91C88876753D66FE238",
"signType": "MD5",
"timeStamp": "1703575999"
}
/**
* 微信小程序支付
*
* @param {Object} orderInfo
*/
mpPay(orderInfo) {
uni.requestPayment({
provider: 'wxpay',
...orderInfo,
success: (res) => {
this.handleSuccess(res)
},
fail: (err) => {
this.handleFail(err)
}
});
},
APP-微信支付
orderInfo 参数内容
| 字段名 | 变量名 | 类型 | 必填 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 应用ID | appid | String(32) | 是 | wx8888888888888888 | 微信开放平台审核通过的应用APPID(请登录open.weixin.qq.com查看,注意与公众号的APPID不同) |
| 商户号 | partnerid | String(32) | 是 | 1900000109 | 微信支付分配的商户号 |
| 预支付交易会话ID | prepayid | String(64) | 是 | WX1217752501201407033233368018 | 微信返回的支付交易会话ID |
| 扩展字段 | package | String(128) | 是 | Sign=WXPay | 暂填写固定值Sign=WXPay |
| 随机字符串 | noncestr | String(32) | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 |
| 时间戳 | timestamp | String(10) | 是 | 1412000000 | 时间戳,请见接口规则-参数规定 |
| 签名 | sign | String(64) | 是 | C380BEC2BFD727A4B6845133519F3AD6 | 签名,详见签名生成算法注意:签名方式一定要与统一下单接口使用的一致 |
{
"appid": "wx12234578963",
"noncestr": "1a1f10e3268f4232434b2b7298a813346",
"package": "Sign=WXPay",
"partnerid": "1604685413",
"prepayid": "wx1223457896323f225454f4a0000",
"sign": "8B49EBBE314AF4F0134A5977AECF155",
"timestamp": "1703575927"
}
/**
* 支付宝-微信-APP支付
*
* @param {Object} orderInfo 订单参数
* @param {Object} provider 支付平台
*/
pay(orderInfo, provider) {
uni.requestPayment({
provider: provider,
orderInfo: orderInfo,
success: (res) => {
this.handleSuccess(res)
},
fail: (err) => {
this.handleFail(err)
}
});
},
App-支付宝支付
orderInfo 参数内容
alipay_sdk=alipay-easysdk-java&app_id=123456789&biz_content=%7B%22out_trade_no%22%3A%22244b98fe9c994bde8705758323f46685%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22subject%22%3A%22%E4%BA%8C%E6%89%8B%E5%95%86%E5%93%81%E6%9C%8D%E5%8A%A1%E8%AF%B7%E7%82%B9%E8%BF%99%E9%87%8C%22%2C%22timeout_express%22%3A%2260m%22%2C%22total_amount%22%3A%220.10%22%7D&charset=UTF-8&format=json&method=alipay.trade.app.pay¬ify_url=https://example.com&sign=OWsEBZ4Njn1wg7fiF8FmYXb8yDZbg8m25vC2Va2waJ201qUHCEOQiH8RV9TL4CRkoX04VIbK4au4fHX0F9kfElmmmR+kccz7IyLYOnVV61fAB+ytgrS99oy+tYcAfvoiF8Zpp9O0t+F7Vb2wer324234343434RHFzTkh2kE+hY8djszbuWX0/5Q2gmGw9Wef+ykqtfMkSL0GifEBU21UbJvlIZuMBL1vNFaDre+XpUr2cm3n5pTXefCXDdJyvYKBx3B04j3jjob2jLkYqZUQbR+cbWdp43S+zzNQcoM/a78RRdrg0pQWm6BGR8DJex0Dz9Gqg==&sign_type=RSA2×tamp=2023-12-26+15:33:57&version=1.0
/**
* 支付宝-微信-APP支付
*
* @param {Object} orderInfo 订单参数
* @param {Object} provider 支付平台
*/
pay(orderInfo, provider) {
uni.requestPayment({
provider: provider,
orderInfo: orderInfo,
success: (res) => {
this.handleSuccess(res)
},
fail: (err) => {
this.handleFail(err)
}
});
},
成功-失败
支付成功返回:requestPayment:ok
handleSuccess(res) {
// "requestPayment:ok" 支付成功
console.log(res);
this.loading = false;
uni.hideLoading()
this.$u.toast('支付成功!')
},
handleFail(res) {
console.log(res);
this.loading = false;
uni.hideLoading()
this.$u.toast('支付失败!')
},
uniapp 微信支付,小程序支付,支付宝支付问题汇总的更多相关文章
- 微信小程序书简易支付
这里结合了上一篇的手机号登录接下来的实现功能 https://www.cnblogs.com/xiaoyantongxue/p/15472915.html 登录后进入课程选择页面 1:数据库填入数据 ...
- 微信公众号中的支付宝支付与微信支付 && 支付宝支付问题(微信bug)
一般,在微信公众号中的商城都是需要支持微信支付和支付宝支付的,当然,较大的公司对于鹅厂和阿里的站队就不说了,所以这里简单记录一下支付宝支付和微信支付的主要流程.说是简单介绍,这是因为确实不难,因为前端 ...
- 微信小程序转支付宝小程序
使用方法: npm install wx-alipay -g wxToalipay --src={{小程序源码目录}} --dest={{支付宝小程序目录,可缺省}} 点击回车后就可将微信小程序转换为 ...
- uniapp之uni-starter小程序多端研发框架搭建与项目实践
随着移动互联网的飞速发展,无数移动APP琳琅满目:在移动App的发展的基础上,衍生了小程序.轻应用技术,它随时可用,但又无需安装卸载.小程序是一种不需要下载安装即可使用的应用,它实现了应用" ...
- HotApp小程序统计,第一个专业的微信第三方小程序统计工具
1.什么是HotApp小程序统计 HotApp小程序统计是第一个微信第三方小程序统计工具,就像做android 和 ios开发的人知道友盟统计一样,小程序也需要有个统计工具. 通过这个工具,可以知道小 ...
- WeTest+微信:小程序云端测试系统上线
日前,微信新增小程序测试系统,可便于开发者检测小程序缺陷,评估小程序产品质量.在小程序发布之前,开发者可将小程序代码提交到测试系统,在不同型号的手机真机上运行,执行完毕后自动生成测试报告.小程序云端测 ...
- 近期热门微信小程序demo源码下载汇总
近期微信小程序demo源码下载汇总,乃小程序学习分析必备素材!点击标题即可下载: 即速应用首发!原创!电商商场Demo 优质微信小程序推荐 -秀人美女图 图片下载.滑动翻页 微信小程序 - 新词 GE ...
- 小程序内嵌H5页面判断微信及小程序环境
判断微信及小程序环境 1.H5页面引入jweixin-1.3.2.js 2. var ua = window.navigator.userAgent.toLowerCase(); if(ua.matc ...
- 微信小程序版博客——开发汇总总结(附源码)
花了点时间陆陆续续,拼拼凑凑将我的小程序版博客搭建完了,这里做个简单的分享和总结. 整体效果 对于博客来说功能页面不是很多,且有些限制于后端服务(基于ghost博客提供的服务),相关样式可以参考截图或 ...
- 类似微信聊天小程序-网易云信,IM DEMO小程序版本
类似微信聊天小程序-网易云信,IM DEMO小程序版本 代码地址: https://github.com/netease-im/NIM_Web_Weapp_Demo 云信IM DEMO 小程序版本 ( ...
随机推荐
- OpenHarmony应用开发—ArkUI组件集合
介绍 本示例为 ArkUI 中组件.通用.动画.全局方法的集合. 效果预览 使用说明: 1.点击组件.通用.动画.全局方法四个按钮或左右滑动切换不同视图. 2.点击二级导航(如通用属性.通用事件等), ...
- 搭载KaihongOS的工业平板、机器人、无人机等产品通过3.2版本兼容性测评,持续繁荣OpenHarmony生态
近日,搭载深圳开鸿数字产业发展有限公司(简称"深开鸿")KaihongOS 软件发行版的工业平板.机器人.无人机等商用产品均通过 OpenAtom OpenHarmony(以下简称 ...
- 深入理解 C++ 语法:从基础知识到高级应用
C++ 语法 让我们将以下代码分解以更好地理解它: 示例 #include <iostream> using namespace std; int main() { cout <&l ...
- Linux Ubuntu安装配置教程
Ubuntu是一个基于Linux的开源操作系统,它遵循GNU通用公共许可证,用户可以自由使用.复制.分发和修改.它提供直观易用的桌面环境,适合新手和有经验用户.Ubuntu有强大的软件中心,支持多硬件 ...
- HarmonyOS Codelab样例—弹窗基本使用
一.介绍 本篇 Codelab 主要基于 dialog 和 button 组件,实现弹窗的几种自定义效果,具体效果有: 1. 警告弹窗,点击确认按钮弹窗关闭. 2. 确认弹窗,点击取消按钮或确认按 ...
- SilentEye qsnctf wp
题目附件(注:文件名为Luminous.jpg) 根据题目提示,使用SilentEye工具 将图片使用SilentEye打开 使用左下角的Decode解密功能 猜测密码为文件名,输入并开始解密 将被加 ...
- 力扣69(java&python)-x的平方根(简单)
题目: 给你一个非负整数 x ,计算并返回 x 的 算术平方根 . 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 . 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0. ...
- 牛客网-SQL专项训练16
①在book表中,将工具书类型(tool)的书的书架序号都减少2,下列语句正确的是(C) 解析: 题目要求的批量更改,insert 是更改数据,排除B,update与set搭配使用,排除选项D,whe ...
- 云原生时代 RocketMQ 运维管控的利器 - RocketMQ Operator
作者 | 刘睿.杜恒 导读:RocketMQ Operator 现已加入 OperatorHub,正式进入 Operator 社区.本文将从实践出发,结合案例来说明,如何通过 RocketMQ Ope ...
- 基于Ganos百行代码实现亿级矢量空间数据在线可视化
简介: 本文介绍如何使用RDS PG或PolarDB(兼容PG版或Oracle版)的Ganos时空引擎提供的数据库快显技术,仅用百行代码实现亿级海量几何空间数据的在线快速显示和流畅地图交互,且无需关注 ...