微信支付流程
- 前言
- 微信支付方式
- 接入流程
- 微信支付在开发中的流程
- JSAPI下单
- 小程序调起支付API
- 开发准备
- Cpolar下载安装
- 我的代码实例
- 总结
前言
🔔大多数小伙伴是不是还在好奇微信支付在我们的开发端是如何实现的,其实微信支付的技术我们直接通过引用就能完成,这是博主学习小程序微信支付模块后,总结的微信支付流程,留个笔记供日后复习,同时也希望对大家有所帮助😆
微信支付方式
打钱方式🤤
🌈付款码支付:超市扣上去的那种支付方式(适合店铺)
🌈JSAPI支付:浏览器页面
跳转微信支付
🌈小程序支付:微信小程序中调用微信支付的功能
🌈Native支付:我们扫描商家提供的二维码
🌈APP支付:手机上的APP调用微信支付
🌈刷脸方式:刷脸
微信官方的打钱功能网站:
支付功能网站
让我们开始熟悉使用流程(叫接入流程)
接入流程
👉 提交资料:
📌在线提交营业执照,身份证,银行账户等信息,并通过指引完成身份验证(这里必须是商户
才行,私人
无法获得支付功能)
👉 签署协议:
📌微信团队在工作日内完成审核,会跟你在线签约,签后就能用了
👉 绑定场景:
📌你开通后只有一个商户号,就是你不管由多少个开发的小程序收钱,最后钱都到一个地方
就是将App都绑定到一个商户号上收钱
上边不是开发人员该管的事情,交给管钱的,下面才是开发
微信支付在开发中的流程
先用学的时候的一张图来看看🤔
📌微信小程序:理解为前端点击支付
📌商户系统:后端代码,在其中调用微信的后台服务
📌微信后台:真正实现交易的地方
怎么操作
⭐ 在小程序中发送交易的时候携带用户信息,比如说点菜的时候,提交订单,会将用户数据以及菜品数据发送到后台,后台在保存数据的时候创建一个订单号等信息
⭐然后一般手机上就会出现微信支付,按一下,我们将参数提交比如:订单号
,商户号
(往哪打钱),APP的ID
(微信注册小程序后回产生app的id),回调地址
(成功后微信后台请求我们的程序后台进行一些工作),付款用户的id
,微信后台生成预支付交易单,返回预支付交易会话标识
⭐这时微信后台需要再次确认,它就返回一串签名算法后的字符串,在经过我们的后端进行处理,将数据返回给小程序界面
⭐用户在界面点击确认付款,并输入密码,传递到微信后台完成支付功能,返回支付结果,显示到界面中
用户端点击支付后,后台进行访问JSAPI调用支付接口
JSAPI下单
这是一个接口
,我们后台访问这个接口,传递参数,生成上边说的预支付交易单,并返回交易会话标识
⭐拿到之后,按照上边说的不同的场景(APP支付,JSAPI支付)生成交易串调用支付
📌JSAPI接口:https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi
用POST方式携带参数请求
📌参数是什么呢?上边也说了,我们来看一张官方的请求参数示例:
📌返回数据就是字符串标识:
小程序前端代码中,得到返回的prepay_id
使用微信支付提供的小程序方法调起小程序支付
小程序调起支付API
⭐调用 wx.requestPayment(OBJECT)
方法发起微信支付
官方提供的携带参数:
⭐这些是后端计算后返回给小程序的
了解大致后,在开发过程中有一些准备
开发准备
⭐前边说了,后台需要返回预支付验证字符串,那这肯定是要签名的呀,我们怎么解密
📌我们需要获取微信支付平台证书,商户私钥文件:
这时在微信支付平台注册之后下载下来的
⭐还有一个问题,微信后台如何能够访问到我的后台服务端,他怎么知道地址的
📌获取临时域名(一个公网ip):支付后微信通过该域名回调我们的后台服务
⭐这里我们就需要下载安装Cpolar
它可以帮助我们实现内网穿透
的效果
Cpolar下载安装
🌈首先打开Cpolar官网,进行注册登录
🌈 下载windows版本的软件
🌈双击进行安装
🌈在官网点击验证,进入到验证界面
🌈会给出你的隧道字符串
🌈复制隧道字符串,进入安装位置的cpolar
目录下,其中有cpolar.exe
文件
🌈打开cmd
命令终端
输入命令:
cpolar.exe authtoken 隧道字符串
输入完成会生成一个文件:
这时内网穿透工具的配置文件
🌈这个时候我们就可以获取公网ip
你的后台服务的端口号是多少:我们以8080为例子(我的后台在本地电脑上)
是localhost:8080
还是在上述的命令行中,输入命令
cpolar.exe http 8080
回车之后我们就能够获取到临时的域名
并自动将临时域名映射到我们的本地服务地址上
👉这时我们就可以通过域名来访问到我们的服务后台
虽然我不是商户,但还是有一个小例子的,这也是我学习来的
我的代码实例
🌈首先需要做一些微信的相关配置
我有一个微信支付信息的实体类
@configurationProperties(prefix="")
public class WechatProperties{private String appid;//小程序的appidprivate String secret; //小程序的密钥private String mchid; //商户号private String mchSerialNo; //商户API证书的证书序列号private String privateKeyFilePath; //商户私钥文件private String apiV3Key; //证书的解密的密钥private String weChatPayCertFilePath; //平台证书private String notifyUrl; //支付成功后的回调地址(公网ip)private String refundNotifyUrl; //退款成功的回调地址
}
在给出响应的配置文件:
wechat:appid:secret:mchid:mchSerialNo:privateKeyFilePath:apiV3key:weChatPayCertFilePath:notifyUrl:refundNotifyUrl:
功能实现仅供参考,至于后续的代码实现,哪天我真的商户号再给大家更新
总结
⭐需要根据微信提供了流程图进行开发,主要是注意参数的传递和封装
⭐注意封装商户私钥和认证文件,本地还要进行内网穿透(获得公网ip)
如果觉得博主有什么问题可以跟博主提出一起学习,后续会推出支付代码实体
谢谢大家,希望大家给博主个一键三连,大家一起互相学习
😋