小程序支付流程图说明(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)的更多相关文章

  1. 微信小程序 微信支付

    微信小程序前端自处理: //时间戳 timeStamp() { return parseInt(new Date().getTime() / 1000) + '' }, //随机数 randomStr ...

  2. 微信小程序------微信支付模块

    最近项目涉及到小程序开发:需要进行微信支付模块,接下来通过叙述,记录一下微信小程序中微信支付模块的开发,以便日后翻阅和使用. 学习指南----------微信支付开发文档:https://pay.we ...

  3. TP5调用小程序微信支付,回调,在待支付中再次调用微信支付

    1,必须要有 $mch_id $key $appid这三个值,是需要去申请的,我是直接用公司的2,购买商品订单号用户openid统一下单名称商品价格(必须以分为单位,调起微信支付)服务器的ip地址(没 ...

  4. 微信小程序——微信支付

    这个讲起来也就比较麻烦一点,因为需要的不仅仅是咱们代码上的技术,嘿嘿! 先整理一下思路.如果想做微信支付: 1.现有一个公司账户(非个人账户),并且实名认证过的. 2.微信号 必须开通微信支付功能. ...

  5. 微信小程序微信支付的一些坑

    使用的是Node.js作为后端 统一下单: appid:这里的appid是调起微信支付的appid mch_id:商户号,需要注意的是商户号要与appid对应 nonce_str:Math.rando ...

  6. 微信小程序微信支付流程

    1.小程序调用wx.login获取登录凭证code wx.login(无请求参数)返回code(有效期5分钟) wx.login({ success:function(res){ //get res. ...

  7. .NET开发微信小程序-微信支付

    前台MD5加密代码 /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algor ...

  8. Taro/JS/H5/小程序:纯前端解决小程序微信支付统一下单和调起支付

    这个文章不会说具体0到1的代码流程,我会着重讲几个问题的解决 准备以下依赖 "md5": "^2.2.1", "xml-js": " ...

  9. Java实现小程序微信支付

    小程序支付流程交互图: 进入小程序,下单,请求下单支付,调用小程序登录API来获取Openid,生成商户订单 // pages/pay/pay.js var app = getApp(); Page( ...

随机推荐

  1. <JVM上篇:内存与垃圾回收篇>04-虚拟机栈

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  2. 浅谈自动特征构造工具Featuretools

    简介 特征工程在机器学习中具有重要意义,但是通过手动创造特征是一个缓慢且艰巨的过程.Python的特征工程库featuretools可以帮助我们简化这一过程.Featuretools是执行自动化特征工 ...

  3. 痞子衡嵌入式:可通过USB Device Path来唯一指定i.MXRT设备进行ROM/Flashloader通信

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是通过USB Device Path来唯一指定i.MXRT设备进行ROM/Flashloader通信. i.MXRT系列高性能微控制器从2 ...

  4. 内网渗透-横向移动($IPC&at&schtasks)

    内网渗透-横向移动 #建立ipc连接并将后门添加至计划任务 前置条件:获取到某域主机权限->得到明文或者hash,通过信息收集到的用户列表当做用户名字典->用得到的密码明文当做密码字典 本 ...

  5. web&HTML

    内容索引 1. web概念概述 2. HTML web概念概述 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务 ...

  6. 使用 CSS perfer-* 规范,提升网站的可访问性与健壮性

    文本将介绍 CSS 媒体查询中新增的几个特性功能: prefers-reduced-motion prefers-color-scheme prefers-contrast prefers-reduc ...

  7. CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存

    CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存来自:互联网 时间:2020-03-22 阅读:114以下情况可能造成Linux内存占用过高服务配置存在直接分配错误,或隐性分 ...

  8. UltraISO制作启动盘安装CentOS7

    UltraISO制作启动盘安装CentOS7 发表于 2020-03-10  |  分类于 DevOps  |  没有评论 简单几个步骤即可完成启动盘的制作,非常便利 准备工具 准备8G优盘(启动盘制 ...

  9. useradd linux系统创建用户和设置密码简单脚本-1

    useradd linux系统创建用户和设置密码简单脚本-1 linux_wangqiang 2019-12-04 20:51:18 65 收藏展开#!/bin/bash#快速创建用户 使用$1第一个 ...

  10. IPMITool和其中常用的命令

    IPMITool和其中常用的命令 # ipmitool -I lanplus -H 10.1.83.14-U ##### -P ##### chassis power status # ipmitoo ...