小程序微信支付(UNIAPP+第三方SDK:binarywang)
小程序支付流程图说明(UNIAPP+第三方SDK:binarywang)
说明:小程序为UNI-APP开发,使用的第三方微信支付SDK为binarywang提供的,此SDK对微信公众号、小程序、微信各种类型的支付、企业微信的相关对接接口都有很好的全面集成,是应用得比较多的一款优秀的SDK。
如图为各个服务相互调用的过程,后续有步骤说明

流程图步骤说明
1、用户在小程序中触发了支付申请(如:点击了付款按钮,唤起微信支付页面,非扫码支付)
2、UNIAPP发起支付申请
用户在小程序(UNIAPP开发)上主动发起了一个向商家支付的申请后,调用UNIAPP的uni.log(obj)方法(无论是否是点击后调用还是点击前调用,均可以根据实际情况来决定,此处只是为了方便流程的讲解),其中参数类型与返回值说明如下图:
参考:https://uniapp.dcloud.io/api/plugins/login

在返回值中,我们得到了临时登录凭证code(只能使用一次),我们便可以根据code来获取用户的openId,由此我们可以获取得到了用户的小程序的openId。
参考:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
3、调用自己的服务创建预支付单
如流程图中的步骤三创建预支付单的接口:gql.createWxPayOrdercode(code, orderId: 1000, trandeType: "JSAPI"),其中code为获取用户小程序的openId的临时凭证,即上一步所获得的code,orderId为自己业务的参数,trandeType为固定值JSAPI(JSAPI支付或小程序支付)。当然此值也可以在后台固定,此处只是为了提示此支付类型。

参考:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_2
4、调用自己的服务创建预支付单
在我们自己定义的接口的做相应的业务校验处理,准备好参数后,调用SDK中创建预支付单的接口wxPayService.createOrder
5、SDK调用微信小程序生单接口
在SDK中会调用微信小程序的生意接口,也就是原生的微信支付接口,在生单接口中有一个参数notify_url,此参数是微信服务器将用户的支付结果回传给我们时调用的url,即此url是我们自己服务对外暴露的url。
参考:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
6、微信小程序将返回的结果返回给SDK

7、SDK将微信小程序返回的结果进行封装加密成唤起微信支付页面所需要的参数
在原生的微信小程序生单接口中,返回参数需要再次的根据相应的规则进行加密后,才能调用API唤起微信支付页面

但是在SDK中,SDK将此加密转换的过程已经帮我们做了,它返回的是已经处理好了的参数,所以我们在前面直接使用这些返回的结果就OK了。
参考:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5
8、9、创建预支付单的接口返回给小程序,唤起微信支付
在我们的小程序中接收到创建预支付单的接口返回值后,便可调用UNIAPP中的uni.requestPayment(OBJECT)方法来响起微信支付,我这边是这样调用的:result为后台返回的结果

参考:https://uniapp.dcloud.io/api/plugins/payment
10、用户支付完成,调用自己服务接口
用户支付完成后,可以根据实际情况更新自己的业务信息
11、用户支付完成,微信服务器的结果回传
当用户支付完成后,微信服务器会调用生单接口中参数notify_url的值进行结果的回传。此notify_url为我们系统对外暴露的url。我们在此url对应的接口中做相对应的支付结果业务处理。
参考:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7&index=8
为了更好的理解,SDK提供了一个微信支付的DEMO,大家可去clone下来更方便的理解。
小程序微信支付(UNIAPP+第三方SDK:binarywang)的更多相关文章
- 微信小程序 微信支付
微信小程序前端自处理: //时间戳 timeStamp() { return parseInt(new Date().getTime() / 1000) + '' }, //随机数 randomStr ...
- 微信小程序------微信支付模块
最近项目涉及到小程序开发:需要进行微信支付模块,接下来通过叙述,记录一下微信小程序中微信支付模块的开发,以便日后翻阅和使用. 学习指南----------微信支付开发文档:https://pay.we ...
- TP5调用小程序微信支付,回调,在待支付中再次调用微信支付
1,必须要有 $mch_id $key $appid这三个值,是需要去申请的,我是直接用公司的2,购买商品订单号用户openid统一下单名称商品价格(必须以分为单位,调起微信支付)服务器的ip地址(没 ...
- 微信小程序——微信支付
这个讲起来也就比较麻烦一点,因为需要的不仅仅是咱们代码上的技术,嘿嘿! 先整理一下思路.如果想做微信支付: 1.现有一个公司账户(非个人账户),并且实名认证过的. 2.微信号 必须开通微信支付功能. ...
- 微信小程序微信支付的一些坑
使用的是Node.js作为后端 统一下单: appid:这里的appid是调起微信支付的appid mch_id:商户号,需要注意的是商户号要与appid对应 nonce_str:Math.rando ...
- 微信小程序微信支付流程
1.小程序调用wx.login获取登录凭证code wx.login(无请求参数)返回code(有效期5分钟) wx.login({ success:function(res){ //get res. ...
- .NET开发微信小程序-微信支付
前台MD5加密代码 /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algor ...
- Taro/JS/H5/小程序:纯前端解决小程序微信支付统一下单和调起支付
这个文章不会说具体0到1的代码流程,我会着重讲几个问题的解决 准备以下依赖 "md5": "^2.2.1", "xml-js": " ...
- Java实现小程序微信支付
小程序支付流程交互图: 进入小程序,下单,请求下单支付,调用小程序登录API来获取Openid,生成商户订单 // pages/pay/pay.js var app = getApp(); Page( ...
随机推荐
- Docker+Nginx配置SSL
参考阿里云文档教程 前提条件 购买服务器的服务商开启443端口和服务器已开启443端口(https的默认端口) nginx容器已经安装http_ssl_module模块(启用SSL功能) 下面的教程基 ...
- 那些好用的 VS Code 插件,究竟是如何提高编码效率的?
在上一篇文章中我们已经对 vscode 插件有了一个初步的认识与了解了,接下去我们就要"揭秘"一下市面上那些好用的 vscode 插件究竟是如何帮我们提高工作效率的. 本文首发于「 ...
- Java 正则表达式实例操作
Regular Expression正则表达式,简称RegExp,常规通用的表达式,在多个开发语言中都有它的实现,可以通过正则表达式来快速的检索.匹配.查找.替换字符串中的文本. 简单实例 匹配网址 ...
- 用JIRA管理你的项目——(二)JIRA语言包支持及插件支持
昨天兴奋地把JIRA环境搭好,瞅了一眼管理界面--全英文,真是汗! 尚且不说全中文版管理界面让人操作起来多少会有困难,更别说是全英文! 昨天赞叹JIRA语言包支持丰富,今天终于找到了号称100%的语言 ...
- 山东浪潮超越3B4000申泰RM5120-L
龙芯解决方案 首页 > 龙芯业务 > 龙芯解决方案和产品生态 > 整机产品 > 服务器 > 详情 超越申泰RM5120-L 服务器 超越申泰RM5120-L 服务器 20 ...
- 【BIGDATA】Grafana告警之webhook的坑
近日搭建一套基于ELK&Grafana的监控告警平台,目的是将生产端某性能日志导入ES中,通过Grafana进行可视化监测,同时设置告警. 告警内容推送到自建的webhook服务后,转发到指定 ...
- Hive 默认分隔符
引言 Hive 中的默认分隔符是 ^A (\001) ,这是一种特殊的分隔符,使用的是 ASCII 编码的值,键盘是打不出来的 查看 Hive 默认分隔符文件 Linux 上的文件 以 \001 作为 ...
- Linux进阶之使用Oh-My-Zsh打造炫酷终端
Oh My Zsh是基于zsh命令行的一个扩展工具集,提供了丰富的扩展功能.除了功能增强之外,还提供非常丰富的主题.使用Oh-My-Zsh打造酷炫Shell终端的步骤(Deepin系统): 原始终端: ...
- Docker系列——Grafana+Prometheus+Node-exporter服务器告警中心(二)
在前一篇博文中介绍,服务器监控已经部署成功.如果每天都需要人去盯着服务情况,那也不太现实.既然监控平台已经部署好了,是不是可以自动触发报警呢? 在上一篇Prometheus架构中有讲到,核心组件之一: ...
- 第三方数据格式库protobuf
protobuf初识 protobuf是一种高效的数据格式,平台无关.语言无关.可扩展,可用于 RPC 系统和持续数据存储系统. protobuf protobuf介绍 Protobuf是Protoc ...