自己所在的公司,支付做的算是比较多的。仅仅两个月,已经对接了至少8种以上的支付平台,其实支付都原理大致都是一样的。携带参数到网关地址,然后回调函数(异步),完成逻辑部分。今天我就针对自己所做的支付,进行一次总结。

1.看看各大支付的主要流程:支付宝和微信(因为国内这两个用的比较多)

支付宝:携带用户提交的参数,对支付宝网关发起请求,返回支付界面,用户输入密码和账户支付,支付宝确认支付后,对商户提交的同步和异步地址发起请求。完成通知支付后的逻辑代码。(一般以异步为准),交互的过程会有验签的过程,确认彼此的身份信息。

微信支付:商户提交信息到微信的网关地址,产生返回信息页面(有的是跳转地址,有的是二维码展示url),然后展示给用户,用户进行支付,支付完后,微信对商户发起通知(异步为准)。

但是我们今天要讲述的并不是这些支付的过程。我们对接的是银行支付。当然其中也不排除是第四方支付机构,我们的接入方式也是按照对方的规则来对接的。我写这篇文章的主要目的就是对过程进行归纳,思路仅供参考。主要讲述三部分(携带参数,页面跳转,回调函数执行)

2.携带参数到网关地址:

这一步骤,我们按照对接的文档都会有详细的说明,不过一般以下参数是每一个支付都会有的:很多商户号和密钥,在对接的凭条都可以获取到,主要是看看签名的生成,因为这个是比较重要的。

我们看看代码部分:至于支付的名字,我们就不说了,这里只是设计到支付的共同的逻辑:

我们主要看另种加密方法:

  1. 字典序加密钥:这里我们使用md5加密,参数字典排序,最后生成32位字符串,有的是大写,有的是小写,看文档要求。

2.证书+私钥:这里我们使用了openssl_sign生成签名,当然解密的时候我们还需要使用对应的函数解密。

3.参数到网关地址,支付方所做出的反应(一种是跳转到支付页面,有一种是返回json,需要对接方自己跳转):

我们主要看自己提交给网关地址后,支付方会返回什么信息,如果是HTML页面,那么直接显示页面,开始我们的支付,如果返回的是json数据,那么我们需要对数据进行处理,然后开始跳转或者显示二维码图像。一般后一种我们需要在自己的服务器发起post请求,然后后端进行处理json,然后返回给前端。

对于第一种,比较简单,所以我们就不详细的叙述了,因为他会自己跳转,针对第二种,我们需要进行服务器发起请求,我们大致看看代码的实现:

4.回调通知:(此处有同步和异步回调,一般的支付平台都会建议使用异步通知地址)

当我们支付完成,或者支付失败,都会有支付的状态返回给商户,这个是支付机构对我们提交参数的反应(同步地址或者异步地址),同步直接跳转到商户指定页面,异步是支付方主动向商户服务器发起请求,一般都是频繁发起几次,如果没有反应就自动给关闭。返回一般携带的参数有:

1.字典序+密钥:

和加密的方法一直,我们看看代码:和我们第一步是类似的,对参数进行字典序,然后结合密钥加密即可。具体的加密方法,可以参考各自的支付文档。这种方法比较简单,仅仅是对参数加密。

2.非对称的加密方式:需要使用openssl_verify结合平台公钥,进行解密。这样就知道身份的正确性。

如果验签通过,那么接下来就要执行状态的判断,判断是否是成功的状态,如果是,那就执行商户自己的逻辑代码。

那么这样我们就对接完了支付。市场上大部分的支付都是这样。无非是大同小异,不过都会有说明的文档,我们可以静下心来慢慢完成对接。主要的就是签名的验证要细心。因为生成的规则确实千变万化,还有一些细处的考察。

到这里,我们就完成了支付的全部介绍,其中有很多知识需要我们去挖掘,比如生成签名和解密签名的函数的原理,比如模拟发起请求的函数。大家可以认真的挖掘其中的知识点。这样我们会对支付的过程理解的更好。与所有的程序爱好者共勉.......

支付相关的知识点(移动支付,银行支付,第三,四方支付)相关推荐

  1. 五分钟了解支付、交易、清算、银行等专业名词的含义?

    五分钟了解支付.交易.清算.银行等专业名词的含义? 1. 支付类名词 01 支付应用 02 支付场景 03 交易类型 04 支付类型(按通道类型) 05 支付类型(按业务双方类型) 06 支付方式 0 ...

  2. 码云上不错的几个支付相关的项目

    阅读文本大概需要15分钟. 网上支付相关的额业务场景无处不在,如果能掌握支付相关的核心技术,对于升职涨薪有莫大的好处.目前国内支付以支付宝和微信这两种支付为首,其他支付则可以忽略不计.有些网友以这两种 ...

  3. 支付宝当面付扫码支付支付后不回调_码云上不错的几个支付相关的项目

    阅读文本大概需要15分钟. 网上支付相关的额业务场景无处不在,如果能掌握支付相关的核心技术,对于升职涨薪有莫大的好处.目前国内支付以支付宝和微信这两种支付为首,其他支付则可以忽略不计.有些网友以这两种 ...

  4. 什么是第四方支付(聚合支付)

    ​第四方支付,也称为聚合支付,是指在没有支付许可牌照的情况下,通过聚合各种第三方支付平台.合作银行.合作电信运营商及其他服务商接口等多种支付工具的综合支付服务. 第四方支付是一个电子支付及其增值服务的 ...

  5. 聚合支付/免签支付/第四方支付/在线扫码支付/个人收款/第三方收款接口详解,能给用户提供什么价值,背景介绍

    随着互联网的发展,电子商务变成21世纪非常主流的一种经营模式,既然是线上商城必然离不开线上支付,从最早的银行卡支付.银联支付,到现在的扫码支付.一键支付.支付方式百花绽放,各大巨头纷纷推出越来越便捷的 ...

  6. 企业级正规php第三方api,ThinkPHP新版企业级php第三方api第四方支付平台程序源码商业版 带接口文件等...

    更新升级添加:1x - 添加登录注册页面2x - 添加环迅IPS支付方式3x - 添加易宝支付 程序详情:企业级正规php第三方api第四方支付平台程序源码完整开源全套带安装教程企业级正规php第三方 ...

  7. 第四方支付如何盈利?

    众多投资者对第四方支付的发展寄以厚望,认为是当前资本寒冬之际的重要破冰途径,那么第四方支付究竟是什么?"第四方支付",是指在没有支付许可牌照的情况下,通过聚合各种第三方支付平台.合 ...

  8. 聚合支付与第四方支付平台的本质区别

    聚合支付和第四方支付平台是现今移动支付领域中的两种常见支付方式,它们在实际应用中有很多相同之处,并且都带来了人们生活中的便利.然而,这两种支付方式也存在本质上的区别,下面我将从不同角度对它们进行比较和 ...

  9. 第三方支付和第四方支付有什么区别?

    四方支付 什么叫做第四方支付,第四方支付=聚合支付,同时也算是第三方支付平台服务的一个延伸.是指很多家支付机构的微二维码或者其他支付通道,实现「一码多用」.从这一方面帮助商户解决多种支付方式带来的麻烦 ...

最新文章

  1. jQuery中$(document).ready()和window.onload的区别
  2. 修改oracle 的dbname,在oracle 10g上修改dbname的实验
  3. ArrayListd的长度问题
  4. ai音响怎么连接网络_网络适配器未连接怎么办
  5. 用c 语言写出五子棋的代码,C语言案例:控制台版本的五子棋游戏【代码】
  6. CTU 2019 Open Contest I.SixPack (WA39)
  7. 【图像处理】【去模糊】图像去模糊之初探--Single Image Motion Deblurring
  8. 《iOS取证实战:调查、分析与移动安全》一3.6 iPhone操作系统
  9. 谈谈你怎么理解产品经理
  10. 人群疏散matlab程序,人群疏散方法及系统与流程
  11. 高仿计算器 双页面浏览器 谷歌内核网页版宝贝类目查询
  12. 自给自足实现web网络文字游戏【追梦西游】(一)
  13. 【项目二、蜂巢检测项目】二、模型改进:YOLOv5s-ShuffleNetV2
  14. git错误--ssh: Could not resolve hostname ssh.github.com: Name or service not known--解决方式
  15. ​从机械工程师到机器学习工程师,我也是个数据科学家了
  16. 泛微使用代码关联附件
  17. 铂西学习日记---进程与线程
  18. 酒店管理系统数据库设计
  19. php imap 安装_PHP安装IMAP扩展
  20. C语言:srand函数与rand函数的使用(纯干货)【易懂】

热门文章

  1. iOS 仿QQ录音以及振幅动画实现
  2. 微博转发数据-关键字段及含义
  3. 电力系统三相短路故障分析simulink仿真加报告
  4. Revit开发小技巧——撤销操作
  5. 怎么才能拿到9000月薪?用这位女生的经历告诉你!
  6. 一文搞明白二重积分以及三重积分的对轮换对称性
  7. HCIP(华为高级网络安全工程师)(第十四天)(MPLS协议1)
  8. Python tkinter(六) 标签(Label)组件的属性说明及示例
  9. RabbitMQ初步学习(Mac)
  10. 浅谈领域事件及其应用