快速开发微信小程序之二-微信支付

news/2024/5/1 10:19:35/文章来源:https://blog.csdn.net/qingcai18036/article/details/127183971

一、背景

在面试程序员的时候,有两项经历会带来比较大的加分,第一你是否做过支付金融相关的业务,第二你是否写过底层框架中间件代码,今天我们聊一下微信支付是如何对接的。

二、相关概念

1、微信商户平台
要使用微信支付,第一步就是要先入驻微信商户平台,准备好你的企业营业执照、法人身份证等完成入驻,平台就会给你生成 MCH_ID(商户ID)、MCH_KEY(商户密钥)、然后申请开通支付产品类型、操作证书、绑定银行卡等等。
2、接入模式
直连模式
:商家自行开发系统对接微信支付进行交易,微信支付将资金结算到商户的结算账户.
服务商模式:商家没有自己系统,而是由微信支付官方注册入驻的系统开发商提供协助完成入驻,好像有赞就干了这个事。
3、支付产品类型
JSAPI网页支付:即公众号支付,在公众号网页点支付唤起支付控件。
小程序支付:小程序对接微信支付API 实现用户在小程序内完成交易场景。
另外还有线下付款码支付、扫码支付,这个就是付款的时候常问的话,你扫我还是我扫你?
另外还有AppSDK支付、H5支付等。

三、相关接口

1、统一下单:微信的各种支付产品类型(除付款码)都需要先调用统一下单接口,在微信后台生成预支付交易单,然后按各种不同的支付场景唤起对应的各支付控件。
请求参数:APPID\MCH_ID\随机串、订单编码、商品相关信息、价格、支付成功回调地址等。
返回值:预支付交易会话ID
两次签名概念
第一次签名:调用统一下单接口的签名
第二次签名:对预支付交易会话ID+APPID+随机串签名然后返回给小程序端,小程序端拿到这个签名串调接口唤起支付窗口。
2、wx.requestPayment:小程序端调用requestPayment唤起支付窗口,输入支付密码支付成功,微信服务端就会回调你在预支付时传过去的回调地址。
请求参数:预支付二次签名生成的串。

3、支付回调通知接口
回调时做一下解签,返回商户订单号,微信平台生成的支付单号(便于对账)、实际用户支付金额、支付时间等。
4、申请退款接口
原路退还、超过一年无法退款,可以部分退款,退款接口调用时需要加载操作证书进行双向认证。PS:我们没有给用户提供该接口,而是做在管理系统里,当客户需要退款时打热线电话找客服退,垂直电商和平台电商做法还是有些区别。
5、查询退款接口
微信退款有延迟,零钱支付20分钟原路返回,如果是银行卡3个工作日,PS:不确定现在是否有调整. 

四、微信支付调用时序图

PS:在开发时如果是三方及以上的系统交互最好把时序图画出来,这样便于整体理解,一般开发用的多的就是流程图(产品逻辑)、ER图(数据流)、类图(代码结构)、时序图(代码交互)基本上就差不多了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_19444.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一、mini2440_bsp_led

一、芯片手册 1、板子原理图 2、GPIO使用 (1)GPxCON (2)GPxDAT 二、实现分析 1、初始化led 设置GPBCON(0x56000010)为 0x00015400 2、设置led输出,根据原理图引脚输出低电平时灯被点亮 LED1…

K8s-临时容器 Ephemeral Containers

临时容器 Ephemeral Containers 当由于容器崩溃或容器镜像不包含调试工具而导致 kubectl exec 无用时, 临时容器对于交互式故障排查很有用。尤其是,Distroless 镜像 允许用户部署最小的容器镜像,从而减少攻击面并减少故障和漏洞的暴露。 由于…

C | 枚举?看一遍就够了

CSDN话题挑战赛第2期 参赛话题:学习笔记 啊我摔倒了..有没有人扶我起来学习.... 目录前言枚举1. 枚举的定义2. 枚举的内存大小3. 枚举的优势4. 枚举需要注意的地方前言 结构体、枚举、联合体都是自定义类型,结构体主要知识点结构体内存对齐可参考《C | …

九月SLAM相关论文速递

九月SLAM相关论文速递 论文列表DirectTracker: 3D Multi-Object Tracking Using Direct Image Alignment and Photometric Bundle Adjustment3D VSG: Long-term Semantic Scene Change Prediction through 3D Variable Scene GraphsLeveraging Large Language Models for Robo…

使用服务器跑模型——案例1

案例1 该方法mac,linux,windows都通用。我们使用terminal or cmd进行操作。 假设我们本地具有一个需要跑的模型Unet,我们需要将该模型上传到服务器上跑,步骤如下: 使用tar压缩文件 我们定位到我们需要压缩的模型&a…

云原生之容器编排实践-以k8s的Service方式暴露SpringBoot服务

背景 上一篇文章云原生之容器编排实践-SpringBoot应用以Deployment方式部署到minikube以及弹性伸缩中,我们通过 Deployment 完成了将 SpringBoot 应用部署到 minikube 并测试了其弹性伸缩的丝滑体验。但是 Deployment 部署后我们还面临以下问题: 访问时…

Day761.Redis集群方案:Codis -Redis 核心技术与实战

Redis集群方案:Codis Hi,我是阿昌,今天学习记录的是关于Redis集群方案:Codis Redis 的切片集群使用多个实例保存数据,能够很好地应对大数据量的场景。哨兵集群, Redis 官方提供的切片集群方案 Redis Clus…

SPI总线通信——基于STM32MP157A

SPI总线概念 SPI总线是Motorola首先提出的全双工三线/四线同步串行总线,采用主从模式(Master Slave)架构;支持多从机(slave)模式应用,一般仅支持单主机,多从机。 时钟由主机控制&…

java培训技术处理模型数据之 ModelAndView

处理模型数据之 ModelAndView 1 ModelAndView介绍 控制器处理方法的返回值如果为 ModelAndView, 则其既包含视图信息,也包含模型 数据信息。 2)添加模型数据: MoelAndView addObject(String attributeName, Object attributeValue) ModelAndView…

C#-设计模式学习笔记

目录前言:最近得到师傅指点,建议我多学习下设计模式,简单记录下学习过程中的一些知识点1.设计模式(创建型)1.单例模式:1. 单例模式的主要作用2.单例模式能解决的问题3.单例模式的使用场景4.怎么实现单例模式…

Charles安装和抓包原理

进行APP服务器开发,接口测试、bug定位,抓取移动端请求数据包在所难免,公司使用的Charles,后面有机会使用了其它软件再做对比。Charles并不是安装即可用,涉及一些参数配置,特此记录分享。 1 安装、破解Char…

C51之温湿度检测系统(自动开关风扇)

目录 DHT11 温湿度传感器 产品概述 特点 检测模块是否存在 温湿度数据管理系统 uart.c文件 uart.h文件 lcd1602.c文件 lcd1602.H文件 dht11.c文件 dht11.h文件 delay.c文件 delay.h文件 config.h文件 main.c文件 DHT11 温湿度传感器 产品概述 DHT11数字温湿度传感…

2022/10/6——基于stm32mp157a的SPI实验

SPI总线是Motorola首先提出的全双工三线/四线同步串行总线 采用主从模式架构,支持多从机模式应用,但一般仅支持单主机,多从机 时钟由主机控制,在时钟移位脉 冲下,数据按位传输,高位在前,低位在…

网课查题系统-题库量全网最多

网课查题系统-题库量全网最多 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台&#x…

React源码分析4-深度理解diff算法

上一章中 react 的 render 阶段,其中 begin 时会调用 reconcileChildren 函数, reconcileChildren 中做的事情就是 react 知名的 diff 过程,本章会对 diff 算法进行讲解。 diff 算法介绍 react 的每次更新,都会将新的 ReactElem…

Learning With Error(LWE)问题学习

概念 又称误差还原,容错学习问题,即已知一个矩阵AAA以及一个向量,求解 b^Axe\hat{b}A xe b^Axe 这里eee是一个固定数值范围内随机采集的一个随机噪音向量,所以这个问题就转化为通过AAA和b^\hat{b}b^来还原最初的未知向量xxx 可以…

android studio2021.3.1 最新xposed模块编写指南

前言 最新的xposed框架已经从xposed到Edxposed再到Lsposed,虽然xposed的api依然是通用的82版本,但现在网上大多数的在android studio上配置xposed的教程已经有点落后了,因此写下这篇来记录自己安装的流程。lsposed如何安装可以看我之前的小米…

CPU 和 CPU Core 有啥区别?多核 CPU?多个 CPU?单核 CPU 为何也支持多线程呢?

由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。 CPU 组成 CPU 全…

JavaSE --- 学Java你应该知道的历史

目录 一. Java的历史 1. Java的发明人詹姆斯高斯林 2. Java的logo 3. java的发展 二. Java 语言的特性 🐖🐖🐖🐖如果喜欢!!🐂🐂🐂🐂 🐖&#x1f4…

创建PyQt项目需要配置三个的External Tools

1. Qt Designer:Qt设计器 Qt Designer D:\PyQtLearning\venv\Lib\site-packages\QtDesigner\designer.exe $ProjectFileDir$ 2. PyUIC:将.ui文件转换为.py文件 PyUIC D:\PyQtLearning\venv\Scripts\pyuic5.exe -o $FileNameWithoutExtension$.py $Fi…