小程序支付
YunGouOS
用户在小程序内发起的支付,返回小程序支付所需的package
小程序支付比较特殊,受限于微信官方的政策,个人用户申请的支付接口必须与小程序APPID绑定。
由于个人申请的小程序账户无法认证,故无法完成绑定,所以支付无法在自己的小程序内发起。该问题目前已经反馈给微信官方,等待官方后期优化相关流程。目前采用小程序跳转方式完成支付。
目前我们接口设计上也预留了自己小程序发起的返回结果,只要官方后期优化绑定流程支持个人绑定即可在自己小程序内发起支付。
支付流程:用户小程序A 付款页面点击付款->通过小程序跳转 跳转到 “支付收银” 小程序->支付收银小程序将自动发起微信支付->支付成功后携带支付结果返回用户小程序A
开源小程序集成代码:https://gitee.com/YunGouOS/YunGouOS-PAY-SDK/tree/master/YunGouOS-WxApp-SDK
注意事项:请注意在自己的页面中做交互处理,原则上来说在 “支付收银” 里面我们不提倡跟用户做交互,所有错误均返回给您自己的小程序。请通过App.onShow方法获取到支付结果进行交互
页面展示
参数名
参数类型
是否参与签名
描述
out_trade_no
String
是
订单号(不可重复)
total_fee
String
是
支付金额(范围:0.01~999999)
mch_id
String
是
微信支付商户号
body
String
是
商品简单描述
title
String
否
支付收银小程序页面顶部的title 可自定义品牌名称 不传默认为 “收银台” 如传递参数 “海底捞” 页面则显示 “海底捞-收银台”
attach
String
否
附加数据,回调时候原路返回
notify_url
String
否
异步回调地址,用户支付成功后系统将会把支付结果发送到该地址,不填则无回调
sign
String
是
签名(见签名算法文档)
参数名
参数类型
是否必填
描述
code
int
是
状态【0:成功;1:失败】
data
Object
是
返回数据
cashierParam
Object
是
收银台显示参数
payName
String
是
收款商户名称
minPayParam
String
是
小程序支付所需的package
msg
String
是
消息
"root":{
3 items
"code":
int0
"data":{
2 items
"minPayParam":
string"{"appId":"wxd9634afb01b983c0","nonceStr":"1557499763992","package":"prepay_id=wx102249259845243af79d06200565809317","paySign":"A1D6EBD081B5F5EC332293FE6015E61E","signType":"MD5","timeStamp":"1557499763"}"
"cashierParam":{
1 item
"payName":
string"YunGouOS测试"
}
}
"msg":
string"微信下单成功,请在请在微信小程序内发起支付"
}
第1步:在你的小程序app.json文件中 添加 “支付收银” 小程序的appid为:wxd9634afb01b983c0
"navigateToMiniProgramAppIdList": [
"wxd9634afb01b983c0"
]
第2步:在你的小程序需要支付的页面,执行小程序跳转
let data={
out_trade_no:"我是订单号",
total_fee:"我是付款金额",
mch_id: "我是微信支付商户号",
body: '我是产品描述',
notify_url: '我是回调地址',
sign:'我是签名',
title:'我是收银台页面显示标题'
}
wx.navigateToMiniProgram({
appId: 'wxd9634afb01b983c0',//支付收银小程序的appid 固定值 不可修改
path: '/pages/pay/pay',//支付页面 固定值 不可修改
extraData: data,//携带的参数 参考API文档
success(res) {
// 打开成功业务
}, fail(res) {
//打开失败业务
}
});
第3步:用户无论支付成功或者失败均会返回您的小程序别携带以下参数
extraData: {
code: 0,//支付结果 0表示支付成功、1表示支付失败
msg:'订单号错误'//信息提示
data:{
orderNo: "12345"//您的订单号
},
}
第4步:您的小程序接受参数,进行您的业务处理(注意:获取参数在您的App.onShow方法中获取)
App({
onLaunch(options) {
// Do something initial when launch.
},
onShow(options) {
//参数示例:{"code": 0,"data":{"orderNo":"123456"},"msg": "支付成功"}
let extraData=options.referrerInfo.extraData;
if(extraData){
//不管成功失败 先把支付结果赋值
this.globalData.payStatus=extraData.result;
if(extraData.result==false){
wx.showToast({
title: extraData.msg,//错误提示
icon: 'none',
duration: 3000
});
return;
}
//支付成功
this.globalData.orderNo=extraData.orderNo;
}
},
onHide() {
// Do something when hide.
},
onError(msg) {
console.log(msg)
},
});
第5步:在您的页面中获取支付结果参数(注意:必须在页面的onShow方法中获取)
var app = getApp();
//调用app方法获取返回结果数据
onShow:function(){
//支付完成返回,开始处理数据
if(app.globalData.payStatus!=null&&app.globalData.payStatus!=undefined){
let orderno=app.globalData.orderNo;
//处理您自己的业务
}
}
Original url: Access
Created at: 2019-10-21 13:19:24
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论