
支付平台
文章平均质量分 50
目前市面上有很多产品需要接入支付能力.该专栏会讲述一些接入支付遇到的问题
优惠券已抵扣
余额抵扣
还需支付
¥159.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
鲸渔
鲸量授渔
展开
-
外部浏览器跳转到微信并支付(支持app非小程序支付)
浏览器或app跳转到微信支付,目前正常渠道都是开通微信的h5支付或者小程序支付,但这两种方式可能有很多无法开通,这时候就衍生出其他方法.也是本篇文章要描述的内容.这里只需要设置网页授权回调域名即可,在开发阶段这里可能要使用内网穿透,我用的natapp这里需要已经备案的域名解析到内网穿透,并将域名添加到下方图片所示的地方。第六步 接收消息并解析 该接口也和第四步填写的接口一致,只不过接受消息是post请求,验证是get请求,我这里拆开写了,也可以写在一个接口内。第四步 回到第二步创建的应用并设置消息接收。原创 2025-01-09 21:12:07 · 563 阅读 · 0 评论 -
【支付系统】java springboot 生成二维码,二维码中文乱码
支付系统必不可少的就是生成二维码,有时我们会需要将支付链接转换为二维码.用户通过移动设备扫描二维码调起支付. 该篇文章主要使用的是hutool自带的二维码生成功能.上述代码使用了hutool的ImgUtil工具类,参数含义如下。原创 2023-06-28 11:52:53 · 1053 阅读 · 0 评论 -
【支付系统】接入多家支付之策略模式
总结: 以上就是通过策略模式优化 if 操作.这样只要添加一个支付平台,就只需要添加一个实现类即可.该文章省略了前端页面如何获取通道信息的,通常后端加一个支付平台,也需要在数据库中加一条对应的信息,并把这个支付平台的唯一标识存到库里.前端拿到数据库里的通道信息后,用户点击传到后端,具体根据实际业务来。1. 首先用户在页面上下单,会给服务器传递多个必要的参数, 支付方式(微信,支付宝),和支付通道(支付平台).首先页面上的支付方式,一定是动态查询出来的,当用户选择下单,一定要把通道信息发送给服务器.原创 2023-06-21 10:40:14 · 551 阅读 · 0 评论 -
【支付系统】如何实现自己的异步回调通知
接触过支付的可能都会了解到,当用户支付成功之后,支付平台会给我们发送多次通知,告诉我们支付成功,在接受到通知消息后,我们就可以对订单进行操作.以完成整个支付流程 .但如果我们要搭建自己的支付平台,同样的需要给使用我们平台的用户发送通知. 通常这个通知是以多次,不同时间间隔进行发送.避免网络问题,用户接收不到.下面就是使用定时器的方式给用户发送通知.当然前提和其他三方支付一样,用户下单时需要给我传递一个回调的地址.我们需要向这个地址发送多次通知.这里我们采用的是定时器的方式,更简单,更轻便.原创 2023-06-21 09:53:33 · 1554 阅读 · 0 评论 -
【支付系统】如何生成订单号
通常我们都会用数据库中的主键作为订单号,而id的生成方式又以自增,uuid,雪花id最为常见.但是这些并不适合作为订单号.订单号一般要体现出年月日等信息.方便快速定位是哪个时间的订单.如果我们直接使用时间作为id,会有重复的可能.这里就给大家介绍一种最为简单的一种方式.我们数据库中的id依旧是自增id,不过这里加了一个前缀,在使用时我们使用时采用的是拼接的方式.添加订单的时候会将当天的时间同时插入进去.时间+自增id , 这里借用了数据库的自增id,达到不会重复的效果.又能体现时间。原创 2023-06-21 10:08:31 · 1394 阅读 · 1 评论 -
【支付系统】加减余额/库存,防止负数和脏读
扣减余额时,检查当前余额数量和版本号是否一致,如果一致则进行扣减操作并更新版本号,否则说明有其他请求已经进行了余额扣减操作,此时需要重新查询当前余额数量和版本号,然后重新尝试扣减余额。如果获取锁成功,则进行余额扣减操作,扣减完成后释放锁。如果当前余额数量大于0,则进行余额扣减操作,并更新数据库中的余额数量。在使用进行余额扣减时,可能会遇到并发请求同时扣减同一余额的情况,这可能会导致脏读和负数余额的问题。总之,使用分布式锁和乐观锁等机制可以保证余额扣减操作的正确性和并发性,避免出现脏读和负数余额等问题。原创 2023-06-17 22:33:49 · 855 阅读 · 0 评论 -
【支付系统】支付系统中锁的作用-超卖及幂等操作
在支付系统中,最重要的两个步骤为下单和回调.皆需要加锁.下单加锁的作用: 通过下单订单号进行加锁,防止重复下单,或者锁库存防止超卖等回调加锁的作用: 支付系统的回调通常是间隔几秒进行多次发送,为了防止网络积压导致的同时收到多个回调,所以要对回调时携带的订单号进行加锁,确保只对订单执行一次操作.原创 2023-06-12 15:02:52 · 869 阅读 · 0 评论 -
【支付系统】核心支付流程
支付在产品中常见的用处为购买和充值.这两种功能操作大相径庭,其中购买相对充值多了很多步骤,它需要锁商品或者库存,还需要超时未支付取消订单等操作.在这篇文章中主要探讨支付部分,属于购买和充值公共部分.以上时序图并非完整,其实核心步骤就是, 下单-->获取二维码 ,扫码支付 -->异步通知 . 上一篇文章我们讲到了分布式锁,根据业务的不同锁作用的位置也不同.下篇文章我们讲下单时如何使用分布式锁。下面是绘制的简易支付时序图。原创 2023-06-12 14:17:05 · 554 阅读 · 0 评论 -
【支付系统】springboot整合redission分布式锁
在做支付相关的功能时,会大量的使用到锁的概念.为了以后方便扩展这里采用了分布式锁,而放弃使用内存锁.以上则为分布式锁redission的使用方式,下一篇将会讲解redission在支付系统中的用途。在支付系统中用到锁的功能基本为:操作余额,接收支付回调处理订单时,结算等。该文中使用的锁,采用的是相对流行redission进行锁的操作.原创 2023-06-09 16:14:51 · 447 阅读 · 0 评论 -
【支付系统】java springboot 通过ip获取所在地城市信息
我们可以获取到用户发起支付时的ip,我们只需要再获取到用户扫码时的ip进行对比,即可知道当前是否为异地支付.当然我们不能直接对比ip,因为用户通常使用pc端发起支付获取付款码,而支付时采用的是移动端.两端未必处于同一个网络,因此ip也是不同的.如果搭建自己的支付平台,异地支付限制是必不可少的一环.因为市面上一些非法份子,会使用我们平台生成的付款码进行欺诈行为.这也是我们必须杜绝的一种现象.因此限制异地支付就是其中一种手段.4. 使用方式 这里我们获取的是省份,也可以通过实际情况进行调整。原创 2023-06-09 12:07:45 · 599 阅读 · 0 评论 -
【支付系统】java如何获取请求的来源ip
对于接入支付,肯定是要获取用户发起支付请求时的来源ip,目前市面上的三方支付平台大多都需要传递请求来源,因为他们要保证下单和最终付款的ip处于同一个地点(具体规则各个平台不一致,但目的相同).当然如果你要制作自己的支付平台,那肯定是要使用者来传递ip,而不是平台自己获取ip,平台自己获取的ip只是使用者服务器的ip,这样是不准确的有可能会造成无法支付.以上就是获取用户ip来源的实现方式。原创 2023-06-09 11:17:32 · 497 阅读 · 1 评论