当前位置: 首页 > article >正文

【业务】支付总结和GP支付功能测试

背景

我个人支付相关内容测试很少(不是你想接什么业务就能接到,都是各方利益博弈以后结果),有些内容也是听听技术会议,看看其他qa的xmind通过只言片语里面做个总结。

支付类型

直连支付

概述:提供支付接口的渠道提供的支付方式归类为直连支付,支付页面由我方完成设计和开发;我方可以管理用户的账单地址和历史卡,用户在付款的时候可以点击历史卡和历史账单地址完成付款,灵活性高体验好;上报风控可以提供用户卡信息。

渠道:ingenico,stripe。

ingenico直连支付页面:

跳转支付

概述:不提供支付接口的渠道提供的支付方式归类为跳转支付,支付页面由渠道方完成设计和开发,灵活性低体验相对较差。上报风控无法提供用户卡信息。

渠道:钱海,coda等

点卡支付(代金劵)

概述:支持点卡或者代金劵付款的渠道提供的支付方式归类为点卡支付。渠道方不提供支付接口,点卡支付类似于跳转支付,支付页面由渠道方提供,不同之处在于点卡支付在下单的时候,不确定金额和金币,用户在渠道方页面选择点数或者输入代金劵序列号,验单的时候校正金额和金币。

渠道:mintroute等

mintroute代金劵支付:

app支付

概述:应用内支付,由商店提供的支付方式,通过用户商店账户里绑定的银行卡完成扣款,渠道方不提供支付接口。上报风控无法提供用户卡信息。

渠道:Apple支付,谷歌支付,华为支付,三星支付。

表业务设计

对于功能测试和业务设计来说都是重点,也方便我们理解支付流程。

业务表:

cl_orderxxes:业务订单表,uid/code/money/gmoney/product_id/gold等

cl_orderxx_payloads:业务订单扩展表,存储与各微服务的交互数据,币种/档位信息/优惠卷信息等

cl_order_refund:业务退款表,记录退款以及退款追回的数据

底层微服务表:

cl_sorder_20xx(无金币数据,掉单验单依赖)

cl_pay_20xx(支付流水,状态只能到0)

cl_refund(退款记录,状态<0)

cl_sorder_notice_20xx(异步通知业务端,掉单通知依赖)

cl_channel_webhook_20xx(渠道方异步通知我们)

支付配置表:

把各渠道档位固定信息存储在数据库中,不硬编码。

cl_gear(档位信息)

cl_gear_group(档位组)

cl_gear_rate(汇率)

cl_payment_channel(渠道)

服务功能

payment(支付中心)

支付服务主要负责与渠道方的交互,包括金额/币种的校验,支付/订阅掉单修复,订阅续订,异步通知管理,用户常用渠道管理,卡信息管理等。

paycontroller(支付控制中心)

支付控制中心主要负责权限控制/请求转化/操作日志,业务端的所有请求都需要经过paycontroller才能到达payment。

finance

金融微服务在支付流程中扮演的角色是增加和扣减用户的金币。

seller

售货台微服务主要负责管理渠道/档位/汇率等数据,为用户提供档位列表。

risk(风控服务)

风控服务接收业务端上报的支付事件,对用户的支付行为进行拦截和控制。

PHP服务端

业务端主要负责协调各个微服务,控制并完成支付流程。

支付掉单修复

概述:扫描cl_sorder_20xx表获取指定时间内的未完成订单,根据payment_id调用相应渠道的验单方法,完成验单后,给业务端发送支付通知,触发业务端验单流程和支付完成事件;掉单修复根据订单状态划分两个任务:30分钟任务(status=1)和10分钟任务(status>1)。

支付退款

概述:用户向银行或者渠道方发起拒付申请(退款)申请,通过后渠道方会向payment发送支付拒付(退款)通知,payment在cl_refund表生成退款记录后,向PHP业务端发出退款通知,业务端追回金币并上报风控。

支付对账

概述:支付对账可以在支付流程之外发现掉单和汇率亏损情况。日对账获取双方最近一天内的账单数据,月对账获取双方最近一个月的账单数据,对比双方的账单差异,生成对账报告和对账柱状图,来反映掉单情况和汇率亏损情况。

支付报警

概述:通过分析不同渠道的支付数据,总结分布规律,通过支付转化率曲线图和支付阀值报警,定位支付故障,评估支付渠道方的服务质量。

ps:这个主要考验阈值设定,太高发现不了问题,太低报警太多就不跟进了。

接入一个三方支付渠道流程

花钱和时间总结经验流程

1.了解一下要接入的渠道,如果对方是刚起步,或者未完全开发完毕,建议停止接入。

2.拿到对方的技术文档后,研究一下对方的接入流程是否存在刷单风险(比如支付的参数能否篡改,跳转链接的数据修改后会不会错发金币,支付凭证是否可以多次付款等)。

3.对方的数据与我们的订单能否关联,没有的话怎么防止被刷单。

4.对方的webhook有没有签名,没有的话要尽量做防刷处理。

5.验单的时候,金额/币种/档位ID有的话都要验证,没有的话可以考虑不接了。

6.验单上锁,阻塞锁+乐观锁。

7.掉单修复。

8.如果对方提供服务端对账服务,要接入对账服务。

GooglePlay支付功能测试

我测试客户端逻辑重不多,直接xmind吧测试点,重点还是跟业务交叉点上。支付只是手段,业务才是核心。

GP支付流程

拉取档位->下单->支付成功 ->验单->加金币-> 退款

在进行支付之前, 会判断是否有未消耗订单,如果有未消耗的订单, 点击同一个档位, 需要先修复未消耗的订单, 如果是不同的档位, 则会走正常支付流程; 点击客户端地步的修复, 客户端会把GP sdk 中未消耗的订单,挨个执行1遍


http://www.kler.cn/a/388913.html

相关文章:

  • Python标准库模块的使用:math、datetime
  • RHCE web解析、dns配置、firewalld配置实验
  • JavaEE进阶----SpringMVC(三)---响应的获取
  • 【信号处理】基于联合图像表示的深度学习卷积神经网络
  • 【C++】 C++游戏设计---五子棋小游戏
  • FPGA高速设计之Aurora64B/66B的应用与不足的修正
  • LRU缓存算法
  • Java集合框架之数组列表(ArrayList)
  • SDL事件相关
  • 中安OCR电子行驶证、驾驶证识别,助力便捷出行与智慧交通
  • Objective-C 1.0和2.0有什么区别?
  • git中使用tag(标签)的方法及重要性
  • 股票量化实时行情接口WebSocket接入Python封装
  • netcat工具安装和使用
  • 目前对于后期的打算
  • ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
  • linux笔记(selinux)
  • 欢迎 Stable Diffusion 3.5 Large 加入 Diffusers
  • Android MavenCentral 仓库更新问题
  • 【9692】基于springcloud+vue的智慧养老平台
  • Linux:理解动静态库
  • Linux安装与配置 Gitblit 1.9.3 服务
  • 如何在 Linux 服务器上安装 Git
  • Linux——入门
  • 搭建监控系统Prometheus + Grafana
  • 独立站 API 接口的性能优化策略