微信支付 postman_小刘同学微信支付接入全笔记

本文记录了作者初次尝试完整实现微信支付的全程,包括接入条件、使用后端开发脚手架renren-fast、微信支付流程、小程序登录验证和创建订单的步骤。通过实例代码分享了调用微信支付API的关键环节,帮助读者理解微信支付的完整流程。
摘要由CSDN通过智能技术生成

    走上“码农”这条路已经快一年半啦,做过不少的Demo和项目,也接触了不少的业务场景,8000w的大数据量处理,QPS500+的并发优化,也算是在开发的这条路上踏出了入门向前的步伐;不过,每个人所处的公司不同,所面对的业务不同,大家逐渐都开始有了自己所擅长处理的业务类型,我也不例外,在经历了疫情期间的跳槽之后,我又开始涉足一个全新的业务领域,而我面对的第一个挑战就是---支付!

    在之前的项目经历中,我有了解过支付的时序,流程,但是碍于没有企业身份,没有亲手调通过全流程支付业务,在我之前的《完整电商后台API》(目前还处于鸽子状态的文章)中,我通过调用别人写好的支付中台(中心)用一种类似于接入第三方跳转的方式完成了支付;上一周,我目前所在的项目功能需要接入支付功能,且项目的核心业务需要对支付的过程进行业务干涉,因此,借助别人封装好的支付中心是无法满足我目前的业务需求的,并且,我也想自己完整的实现一次复杂的支付业务,在经历一天的阅读文档和一天的不断调试之后,我成功的调起了微信支付的完整链路实现了小程序端的支付功能,当然在之后,对于订单逻辑的处理以及安全,鉴权等等机制仍然需要代码的继续迭代,但是调通支付就算是走出了第一步,在本文中,我将这两天的踩坑记录分享给大家,初次尝试,代码如有问题,请大家多多指点。

起源

接入微信支付的条件/必需品

    如何接入微信支付,其实微信官方和网上有许多教程,过程还是比较复杂的,我在这篇文章里就不过多的赘述了,有需要的伙伴可以私聊我,在这里我简单罗列一下接入支付的必需品:

    1、需要接入微信支付首先你需要有一个拥有企业资质的小程序/公众号,公众号是可以挂载小程序的,而且它挂载的小程序也是自动拥有企业资质的。

    2、在拥有企业资质之后,你需要接通微信支付功能,需要申请一个商户号,这个商户号呢,和开通企业资质的过程差不太多,都是鉴别身份用,开通之后,有三个东西需要特别关注,第一时间保存设置:1)API安全数字证书,在开通商户号之后,在开发设置里你就可以看到,需要下载官方的工具生成证书,需要妥善保存;2)API密钥;3)商户号

    在准备好以上开发必需品之后,我们就开始编写我们的前后端服务吧!

01

使用后台开发脚手架

    因为我们想要调通微信支付,我们的整体项目对接口的鉴权还是需要有一定的设计和编码的,无论是使用spring的Security还是Jwt+shiro,编码量都很大,且和我们的主体业务没有实质关联,因此我们这个项目寻找一款后端开发的脚手架renren-fast快速搭建我们的后台项目:

 项目地址:(https://gitee.com/renrenio/renren-fast)

 框架官网:(https://www.renren.io/)

    这是一款轻量级的Spring Boot2.1快速开发平台,整合了Spring Boot、Shiro、MyBatis、Redis、Bootstrap、Vue2.x,可以满足我们常见业务的日常需求

    当然目前市面上后端开发脚手架很多,例如:JEECG就是一款优秀的J2EE脚手架,大家可以根据自己的需求选择,当然啦,你手动从零搭建开发环境也完全没有问题,根据业务需求选择而已。

02

接入微信支付流程

0092d605e016a1df15913f5beb9a518d.png

首先微信支付根据不同的业务场景,给出了不同的解决方案(API/SDK),使用不同的支付方式,都需要在商户号里面进行开通,才能够使用,这一点在你接通了商户号之后,在控制台便可以看到,在这里我不做过多的陈述;我从官方的开发文档中,根据官方流程得到两张时序图:

50e2c048952da96824ea6193ccfc89c5.png

1、首先用户在小程序上面点击微信支付按钮。

2、小程序发起Ajax请求,告诉商户系统,你应该向微信平台申请创建支付订单了。

3、接下来商户系统先要提取小程序提交过来的数据,比如说OpenID是否有效,OpenId是用户拿微信登陆小程序产生的ID值。商户系统在数据库里面要记录这个OpenID值。发起付款的时候,商户系统必须要验证一下,小程序提交过来OpenId在数据库里面是不是存在。如果有人拿POSTMAN模拟小程序提交支付请求,胡乱编了一个OpenId,商户系统必须要能分辨出来。还有就是小程序提交过来的订单编号,商户系统也要验证订单的有效性。

4、商户系统要向微信平台发送生成支付订单的请求,并且上传跟支付相关的各种信息。比如说,发起付款的用户,微信的OpenID是什么?订单的金额是什么?人民币付款,还是美元付款?收款的商户ID是什么等等。

5、微信平台收到这些信息之后,核实之后没有问题,那么微信平台上面就会生成支付订单,并且把订单的信息返回给商户系统。

6、商户系统得到订单信息之后,还要对这些信息生成MD5数字签名。然后商户系统,会把支付订单的参数,返回给小程序。这幅时序图走下来,意味着微信平台上面生成支付订单。

e5e603f55fd6c476599f3d6cfc7d565b.png

大家请看,这幅时序图讲的是用户怎么付款的。刚才说到了,小程序会拿到商户平台返回的支付参数。但是小程序这边也担心,毕竟

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值