第三方支付统一接入方案

方案背景及目的

目前大部分商户平台均已接入微信,支付宝等第三放支付平台作为支付渠道,每个商户平台开发者都需要自己去接入支付API或SDK,本方案旨在提供一种相对统一的方式,为各商户平台接入支付渠道,减少部分重复接入劳动

支付渠道

微信,支付宝,浦发银行

支付方式

H5页面支付

 

方案描述

图例说明:

支付配置:商户平台在统一支付平台申请配置各自的唯一标识(payid),默认页面回跳地址,默认通知地址

客户:指购买商品,发起交易的用户,这里限定使用工具为浏览器

商户:商品提供方;需要接入统一支付的平台,负责处理支付前及支付后的业务逻辑

统一接入:对微信,支付宝,浦发银行等支付渠道的调用封装,即本次开发任务

第三方支付:微信,支付宝,浦发银行等

步骤说明

1.用户在商户平台发起商品购买

2.商户预生成订单信息,将配置的h5payid,订单信息提交至统一接入平台,如果不使用默认的回跳和通知地址,则在参数中指定,同时可在参数中指定是否只支持某种支付方式

3.统一接入平台根据输入的payid,订单等参数信息,持久化至数据库,并构建支付页面地址返回给商户

4.商户将用户浏览器重定向到上述步骤的支付页面地址

5.客户在支付页面上选择需要的支付方式,发起支付申请

6.调用第三方支付

7 微信:需要安装微信客户端,微信jsapi调用客户端支付

支付宝:统一支付向支付宝发起支付申请,支付宝返回token,统一平台构建授权URL,重定向至用户浏览器(第8步)

浦发银行:用户在支付页面上选择浦发支付,直接跳转至浦发支付页面

9 用户输入账号授权支付

10 支付完成后,微信,支付宝跳转至指定的商户页面(未指定,则使用默认配置)

11.商户系统处理回调页面对应的业务逻辑

12.商户系统接受支付渠道的异步通知做相应处理

需要商户系统做的事情

1.申请支付渠道相关账号,证书等文件

2.在统一支付平台申请配置h5payid,配置默认回跳页面(return_url),及默认通知地址

3.编写回跳及通知处理逻辑,并提供接口,接口需要实现幂等,同时建议在接口入口处记录通知日志,便于问题回溯定位,建议商户通知处理系统为保持稳定可单独部署或双机配置

4.建议实现补偿定时程序或其他策略,调用统一接入平台提供的单笔业务查询接口,用于订单补偿

需要第三方接入做的事情:

1.实现商户系统接入管理,即管理接入的商户的后h5payid,默认回跳,通知地址等

2.提供商户订单提交接口,用于商户提交订单等信息

3.接入支付渠道

4.提供各支付渠道的单笔业务查询接口

统一接入平台相关数据库及接口设计

数据库:

商户表(一个商户可申请多个h5payid,但需要由商户系统作业务区分)

字段

类型

约束

描述

H5payid

Varchar(12)

pk

商户在接入平台的全局唯一标识

name

Varchar(64)

Not null

商户系统名称

H5paysecret

Varchar(12)

Not null

接入密码

appId

Varchar(64)

商户在微信,支付宝的appid

appsecret

Varchar(64)

商户在微信,支付宝的secret

return_url

Varchar(128)

Not null

默认回跳地址

Notify_url

Varchar(128)

Not null

默认通知地址

Create_time

datetime

申请时间

Modify_time

datetime

修改时间

注:商户系统的银行相关配置可以配置在属性文件中

统一订单表(该订单表不承担为商户系统长期保留订单职责,可以定期清理已结束订单)

字段

类型

约束

描述

Id

long

pk

serialno

Varchar(64)

Not null  unique index

本系统流水号,全局唯一

H5payid

Varchar(12)

Not null

商户在接入平台的全局唯一标识

trade_no

Varchar(64)

Not null

订单在商户系统的唯一编号

price

double

Not null

价格

goodname

Varchar(128)

Not null

商品名称

gooddesc

Varchar(128)

商品描述

ip

Varchar(21)

Not null

订单提交IP(非商户系统IP,由商户传过来的订单提交到商户时候的IP)

Return_url

Varchar(128)

本次订单指定回跳页面地址

Notify_url

Varchar(128)

本次订单指定通知地址

referer

Varcha(128)

商户系统地址

Create_time

datetime

申请时间

Modify_time

datetime

修改时间

统一接入平台接口:

接口通信方式可自定义

1.订单提交接口:

参数:h5payid,h5paysecret,price(价格),goodname(商品名称),return_url(非必填),notify_url(非必填),ip(订单ip),show_url(商品展示页面地址)

逻辑:保存至数据库

返回:支付页面地址,如http://ip:port/unifiedpay/serialno,商户系统重定向到该地址

2.支付页面接口

参数:serialno

逻辑:根据serialno对应的订单信息,及相应的支付规则,构造支付页面返回给浏览器

返回:浏览器页面或微信客户端

3.单笔查询接口

参数:商户系统订单号,支付渠道(wx/alipay/bank,参数可自定义)

逻辑:根据订单号及支付渠道,以及相应的支付账号调用第三方支付的业务查询接口,并判断成功或是失败

返回:成功则返回成功代码,否则返回失败代码及失败原型 代码自定义

可行性待确认:

支付渠道对支付来源页面可能会进行校验,需要确认微信,支付宝的支付授权校验规则

ps:可能需要在微信等支付平台配置授权域名或目录为统一支付平台的地址

接入微信,支付宝,浦发银行的统一支付方案相关推荐

  1. java实现微信支付宝等多个支付平台合一的二维码支付(SSM框架)

    点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] ♪ 点击上方绿标 收听java实现微信支付宝等多个支付平台合一的二维码支付(SSM框架) 整体思路: 实现微信支付宝等支付平台合多为一的二 ...

  2. 第三方支付接入(微信,支付宝)

    第三方API 时间 2022年3月30 目前很多企业在做支付的时候为了方便已经开始直接对接第四方了 但是也有一些开源大神们对支付甚至是整个微信开发提供了API 笔者公司的微信支付目前使用的第三方API ...

  3. androidAPP 接入微信/支付宝支付,获取应用的签名(随笔)

    一.问题: app在开发过程中,接入到支付功能,常见的支付供应商就是微信/支付宝了,在官网注册时就需要一串签名: 二.解决办法:这个需要下载获取签名的工具即可: 下载签名工具 三.具体步骤: 1..安 ...

  4. java实现微信支付宝等多个支付平台合一的二维码支付(maven+spring springmvc mybatis框架)

    首先申明,本人实现微信支付宝等支付平台合多为一的二维码支付,并且实现有效时间内支付有效,本人采用的框架是spring springmvc mybatis 框架,maven管理.其实如果支付,不需要my ...

  5. java实现微信支付宝等多个支付平台合一的二维码支付(maven+spring springmvc mybatis框架)...

    首先申明,本人实现微信支付宝等支付平台合多为一的二维码支付,并且实现有效时间内支付有效,本人采用的框架是spring springmvc mybatis 框架,maven管理.其实如果支付,不需要my ...

  6. 个人开发者一分钟接入微信支付宝支付

    一.零资质的个人收款   市面上有不少通过安装特定收款监听App实现收款回调功能的平台,比如玎玎支付.PaysApi.收小钱等:这些虽然是零资质,而且收费也不是特别高,但是有几个弊端: 需要安装特定的 ...

  7. php接入微信支付宝支付,php 微信公众号接入支付宝支付

    首先登录支付宝开发者平台申请接入了,如下图: 创建应用查看,添加APP支付功能,需要签约上线,如图: 本人主要用到了demo_get.htm和pay.htm,加上ap.js来实现的,pdf仅做参考,可 ...

  8. 给个人网站接入微信支付宝,实现实时回调开通会员和充值功能

    前段时间自己搭建了一个影视资源站,因为是一些付费资源,需要客户付款后开通会员或者充值积分,从而获取资源. 因为我是个人没注册公司,不好开通在线支付渠道.最开始的做法是后台去生成激活码,客户通过微信联系 ...

  9. android微信风格,Android实用View系列-----仿微信支付宝等风格的支付密码输入框的实现...

    开始阅读本篇文章之前先来说一下使用场景吧,我们知道如今移动支付已经占据我们日常支付的90%的份额,以微信支付和支付宝支付为主,也越来越多的APP开始添加支付模块,不管使用哪种支付有一个步骤是少不了的, ...

最新文章

  1. 盘点丨那些顶级的AI机器人“大脑”
  2. 河套酒业集团远程应用K/3系统案例解析
  3. org.springframework.amqp.AmqpConnectException java.net.ConnectException的解决办法
  4. Git学习总结(2)——初识 GitHub
  5. PHP的学习--在sublime中使用XDebug(Ubuntu)
  6. sharepoint_study_7
  7. 【人脸识别】基于matlab GUI肤色人脸识别定位【含Matlab源码 674期】
  8. HeadFirstJava——5_编写程序
  9. 基于javaweb宠物领养平台管理系统设计和实现
  10. PS|如何将Adobe Photoshop(PS)完全卸载
  11. win10无法打开匿名级安全令牌_无法打开匿名级安全令牌
  12. 跳舞的小人 和 盲文
  13. 基于单片机体温心率脉搏检测仪系统设计-毕设资料
  14. Java并发编程Future超详细教程
  15. 3D-Max 软件许可证检出失败 错误20 解决办法
  16. 定时循环发送TCP消息(例如:控制设备的开关机等场景)—— 定时执行专家
  17. 阿里php开发规范,阿里巴巴java开发手册学习记录,php版
  18. mysql密集计算_计算密集型和IO密集型
  19. 2022年河北最新建筑八大员(材料员)模拟题库及答案
  20. 香港上市后,李想依然缺钱

热门文章

  1. PXIe/PXI背板 全混合8槽 4 Link架构 系统带宽14GB/s 单槽4GB/s 兼容主流PXIe厂商PXIe控制器
  2. python中rstrip是什么意思_【详解】python中字符串的strip(),lstrip(),rstrip()的含义...
  3. 明天启程去15PB......
  4. 解读质量分析的七大误区及解决对策
  5. 计算机中术语bug指,为什么计算机故障称为“bug”?
  6. 鲁大师(原Z武器)漏洞修复,你必需知道的
  7. 一键启动车辆点火开关图解大全
  8. 字符串转换为整数”123“-123
  9. 最新研究!美国爱荷华州立大学利用量子计算模拟原子核
  10. ZJOI2006 物流运输