分阶段付款 学php,项目整理-支付宝的支付问题

支付宝作为一个被广泛使用的支付工具,在是用的时候可以被广泛使用。

可以使用demo提取(由于当时开发时SDK下载路径无法下载,直接从DEMO中筛选了需要部分)

------------------我是开始开发思路的分割线--------------------------

本次主要是APP支付的流程。(本宝宝会陆续整理出前后端的详尽资料,抽空写下简单的DEMO)

5fa7955fbd57b91cc178c74d44d15348.png

这里主要整理支付宝后台交互的一些内容。

由于支付宝的签名需要和SDK关联吊起支付宝应用。这里在开始开发前需要确认两端SDK的匹配问题。

----------------------------------我是开始开发SDK文件描述的分割线-------------------------------------

与前端直接引入SDK不同。这里要注意版本的一致或对应问题

支付宝在支付的过程中有需要后台参与的主要两个部分:

一)提交签名等信息

1.预提交订单。返回前端签名后的订单信息。

二)验签名信息

1.验证前端同步的签名信息(伴读项目暂时没有这个模块)

2.获取异步回调的信息

在目前的SDK可以直接使用的类文件是

1.接入SDK的文件

2.主要的SDK接入文件

3.接入SDK生成签名所需要的类文件

9cd3ba63e6a80b737080fe6fae7e3b1f.png

-------------------我是开始开发描述的分割线-----------------------

由于本次项目是基于YII框架的PHP开发,基于框架配置将相关文件配置在项目的核心代码的辅助文件部分

(1)文件引入位置:c**e/c**-**se/he**ers/

此处由于引入相关文件的管理问题,添加Alipay路径进行统一管理。另外参照DEMO。将部分文件统一管理在aop目录下。如上图所示

(2)文件的使用。

首先去掉两眼一抓瞎的整个看文档看DEMO的前提。按照做需要的去一一实现,在实践的问题里找解决方案。

按照之前分析的必要套路:

I)  订单与生成的处理->按要求生成加密字符给前段

II) 支付同步通知(通知到前端,前端主动调取验证接口,验证签名等相应信息)->前端同步信息进行验签返回,成功通知用户支付成功

III) 支付异步回调(支付宝主动回调)->验签,确认订单信息

------------------我是开始开发代码描述的分割线—————————————

首先对于文件的引入。简单阅读示例demo和文档。根据描述配置相关的参数。

支付的业务主要在开放平台存在。在开放平台上申请应用,并申请相关业务支付金额后可以针对改应用进行详尽的设置。https://doc.open.alipay.com/docs/doc.htm?docType=1&articleId=106541这是关于产品签约的相关文档描述以及秘钥的相关配置方式。在正式开始编写代码前你需要:

(1)一个注册好应用,申请好相关业务并签约的平台账号

(2)设置好相关的秘钥。并留有相关秘钥的pem文件(没有也可以,但是一定要留下商户公钥和商户私钥的具体内容)

(3)预留下相关商户信息以便于配置,例如商户ID;APPID;支付宝公钥等

这里由于开发时间的关系没有再次封装,或对配置参数进行封装(后期开始优化,不影响直接使用)

e2ead81242fa5d22a156135c2e83a134.png

上面是支付宝SDK在代码里的使用。

参见新的支付宝文档:

a761e3e15b7db6b5a28250fac00cc157.png

可以看出基本没什么修改的。

我的代码逻辑除了跟随前端业务要求和需求添加商户ID方便后期业务扩展几乎没有修改。

简单讲下,其实在支付宝的支付过程只要前后端的SDK对的上几乎没有坑。平缓进入第二阶段,所以,SDK版本很重要,不要随便下载一个SDK就直接使用啊亲。当然支付只是付款了是不够的!

关于回调

回调分为两部分

(1)同步回调

(2)异步回调

支付宝注重讲解了异步回调。此处也是在项目中主要实现了异步回调的问题。

先来谈谈异步回调

对于异步回调要先明确下异步回调的地址问题。在官方的平台页面上要设置notify_url

这里的url要是一个接口或一个PHP绝对路径文件。支付宝建议为绝对路径文件。但是这里个人建议仍使用和之前一致的标准接口所继承的类的文件就好。

值得注意的是

(A)这个接口不可以有参数,有cookie等,或者页面跳转重定向,当访问地址的时候是一个白页即可。仍需注意的是,这个地址必须是公网可以自由访问的。避免后期文件类的修改问题。

(B)这个地址要在生成订单的时候直接设置在回调地址的位置。

(C)回调文件会值调取。调取到的参数获取用JSON通知时使用的是$_POST

(D)文件验签的时候记得什么类型的签名就用什么类型验签,一般的签名类型为RAS2,但是DEMO上是RAS哦。

在验签和核实订单信息后就可以修改相应订单信息,记得在数据库中需改目前订单的状态

67c674c7384dd9459d8d2a417a3681f9.png

这是主要验签的核心,这里的第一个参数是支付宝回调到的信息,第二个参数是证书(pem)文件的地址,没有可以写NULL,第三个是签名加密方式。这里我们的是RSA

9584ed6b7a1464dcc40eb2e7b31ec8e6.png

部分代码展示分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac os区别_SN及Mac地址烧录

platform:RK3399 OS:Android 7.1 参考: 1.比特人生 https://blog.csdn.net/ielife/article/details/86719313 2.KrisFei https://blog.csdn.net/kris_fei/article/details/79447343?ops_request_misc%257B%2522request%255Fid%2522%253A%2522158883304619726869022990%2522%25…

linux 查看数据库和表 mysql 命令

2019独角兽企业重金招聘Python工程师标准>>> 查看是否有安装数据库 :rpm -qa|grep -i mysql 如图已安装: 未安装: 查看MySQL版本的四种方法 1 在终端下执行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看…

servlet/filter/listener/interceptor区别与联系

下面从几个方面阐述一下题目中四个概念的区别与联系: 1、概念 2、生命周期 3、职责 4、执行过程 一、概念: 1、servlet:servlet是一种运行服务器端的Java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页…

电脑系统哪个最好用_袪痘袪痘印哪个产品最好 祛痘印最好用的产品十大推荐...

原标题:袪痘袪痘印哪个产品最好 祛痘印最好用的产品十大推荐痘痘下去了,痘印却顽固不化。有些痘印如果不及时修复,会留下疤痕和坑。我们真的不敢去想他们。所以有痘印痘印的时候一定要及时使用护肤品,不要在脸上留下什么遗憾&…

五阿哥钢铁电商平台Docker容器云平台建设实践——你想知道的都在这里!

前言 五阿哥钢铁电商平台(www.wuage.com)是由钢铁行业第一的中国五矿与互联网第一的阿里巴巴联手打造,并充分运用双方股东优势资源,即:阿里巴巴在大数据、电商运营、互联网产品技术上的巨大优势,尤其是在B2…

web浏览器_Web上的分享(Share)API

我认为Web Share API非常酷,简而言之,它会利用您所使用的平台上的原生共享功能(如果该平台支持的话)。我喜欢这个:在iOS上激活的Web Share API远远不止这些东西:为什么?Web Share API只是几行代码。简单!没…

exfat单元分配要设置多少_微软宣布,支持往Linux内核里添加exFAT存储了!跨系统存储的福音...

栗子 发自 凹非寺 量子位 报道 | 公众号 QbitAIexFAT,是微软开发的文件系统,为闪存而生。你的U盘、SD卡、手机等等存储设备,能存4G以上的大文件,很大程度上是它的功劳。可exFAT一直是专有的,微软手握多项专利。所以&am…

Jetbrains 系 IDE 编辑器的代码提示功能

著名的 Jetbrains 可谓编程界的一大福音,众多有名代码编辑器比如 ItelliJ IDEA、PHPStorm、WebStorm、PyCharm 等,均出自这家公司麾下。 对于中国的Java开发者来说,可能使用 Eclipse 的人最多。 使用Idea的程序员也不少, 而且每个人都在鼓吹其…

tkmybatis 子查询_真假童子命符箓道长教你如何查询

童子命查询方法一:童子命在相术里,指的是一生都霉运连连如过本命年的人。古代关于真童子命查询有口诀“春秋甲寅子,冬夏卯未辰; 金木乙卯未,水火庚辛壬; 土命逢辰巳,童子定为真”解释上面的口诀…

ECLIPSE配置OSGI服务器

eclipse版本如下: Eclipse Java EE IDE for Web Developers. Version: Mars Release (4.5.0) Build id: 20150621-1200 ------------------------ 1、进入eclipse-----run----run configuration---osgi framework---new 2、取消全选 3、在搜索框中输入 osgi&a…

AD19 add pins to nets错误_为什么我认为Rust的Result错误处理方式不如Exception

由于是对技术的个人评判,欢迎理性讨论。我曾经也当过纯函数式的脑残粉,认为宇宙第一棒的代数数据结构用来处理错误,是无上的优雅和绝对的安全。一个看似人畜无害的接口抛出异常带来的崩溃,是各类疑难杂症的罪魁祸首。综合起来&…

Java @Transient 注解使用

2019独角兽企业重金招聘Python工程师标准>>> 我们建实体类的时候啊,有时候实体类的属性和数据库表字段不一致的时候,比如多一个属性,那你不加这个注解就会报错,因为映射的时候会提示(提示啥我给忘了&#x…

oracle—ebs_采购功能点操作手册,oracle—EBS_采购功能点操作手册

erp实施企业采购模块构架及日常业务操作指导“人力资源”页签可以设置是否“使用审批层次结构”来决定采购单据的审批路径。如不选定,则表示采购单据将使用员工的“主管”结构来进行审批。“员工编号”方法默认自业务组定义时的“员工编号生成”方法设置。1.2采购选…

combobox控件 如何把三角形放大_初中数学|全等三角形全部知识点总结

今天,琦老师为大家整理了[初中数学重要考点,全等三角形的全部知识点],希望帮助大家中考数学快速提分( #小学数学#初中数学#数学)除了图片内容,大米君也为大家分享[如何灵活运用这些知识点的方法]大家记得跟着做起来哦~提高复习效果…

Spring中引入其他配置文件

原文:http://www.cnblogs.com/LiuChunfu/p/5605473.html ------------------------------------------------------------------------------ 一、引入其他 模块XML   在Spring的配置文件,有时候为了分模块的更加清晰的进行相关实体类的配置。 比如…

oracle不要重复记录,Oracle中去重复记录 不用distinct

用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 。select distinct name from t1 能消除重复记录,但只能取一个字段,现在要同时取…

miui游戏驱动程序偏好设置_米粉必看:小米官方教你如何关闭 MIUI 广告 - 小米,MIUI...

IT之家 11 月 9 日消息 小米的 MIUI 在用户心中的口碑一直是比较好的,但该系统也并非完美,被吐槽的较多的一个点就是系统内的广告比较多。今天,小米官方微博 小米服务那些事 分享了几个能够减少 MIUI 广告的方法,米粉不妨了解一下…

Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式。

时间过的很快,写springcloud(十):服务网关zuul初级篇还在半年前,现在已经是2018年了,我们继续探讨Zuul更高级的使用方式。 上篇文章主要介绍了Zuul网关使用模式,以及自动转发机制,但其实Zuul还有更多的应用…

oracle 9 插入日期,oracle date日期类型 精析

一、date1.date、sysdate格式说明展示date类型,展示格式既可以为:YYYY/MM/DD,也可以为YYYY/MM/DD HH24:MI:SS;其存储格式只有一种:YYYY/MM/DD HH24:MI:SS展示格式一:当你只存年月日时,date实际存…

CentOS 7.1下KVM的安装与配置

由于没有物理机可用,在自己的VMware Workation中CentOS 7搭建完成。 首先查看VMware Workation是否支持虚拟化,把红框内打钩即可。 虚拟化开启并安装CentOS系统,建议CentOS安装64bit。我的环境用的是CentOS 7。进入系统,首先查看服…