支付宝作为一个被广泛使用的支付工具,在是用的时候可以被广泛使用。
可以使用demo提取(由于当时开发时SDK下载路径无法下载,直接从DEMO中筛选了需要部分)
------------------我是开始开发思路的分割线--------------------------
本次主要是APP支付的流程。(本宝宝会陆续整理出前后端的详尽资料,抽空写下简单的DEMO)
这里主要整理支付宝后台交互的一些内容。
由于支付宝的签名需要和SDK关联吊起支付宝应用。这里在开始开发前需要确认两端SDK的匹配问题。
----------------------------------我是开始开发SDK文件描述的分割线-------------------------------------
与前端直接引入SDK不同。这里要注意版本的一致或对应问题
支付宝在支付的过程中有需要后台参与的主要两个部分:
一)提交签名等信息
1.预提交订单。返回前端签名后的订单信息。
二)验签名信息
1.验证前端同步的签名信息(伴读项目暂时没有这个模块)
2.获取异步回调的信息
在目前的SDK可以直接使用的类文件是
1.接入SDK的文件
2.主要的SDK接入文件
3.接入SDK生成签名所需要的类文件
-------------------我是开始开发描述的分割线-----------------------
由于本次项目是基于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;支付宝公钥等
这里由于开发时间的关系没有再次封装,或对配置参数进行封装(后期开始优化,不影响直接使用)
上面是支付宝SDK在代码里的使用。
参见新的支付宝文档:
可以看出基本没什么修改的。
我的代码逻辑除了跟随前端业务要求和需求添加商户ID方便后期业务扩展几乎没有修改。
简单讲下,其实在支付宝的支付过程只要前后端的SDK对的上几乎没有坑。平缓进入第二阶段,所以,SDK版本很重要,不要随便下载一个SDK就直接使用啊亲。当然支付只是付款了是不够的!
关于回调
回调分为两部分
(1)同步回调
(2)异步回调
支付宝注重讲解了异步回调。此处也是在项目中主要实现了异步回调的问题。
先来谈谈异步回调
对于异步回调要先明确下异步回调的地址问题。在官方的平台页面上要设置notify_url
这里的url要是一个接口或一个PHP绝对路径文件。支付宝建议为绝对路径文件。但是这里个人建议仍使用和之前一致的标准接口所继承的类的文件就好。
值得注意的是
(A)这个接口不可以有参数,有cookie等,或者页面跳转重定向,当访问地址的时候是一个白页即可。仍需注意的是,这个地址必须是公网可以自由访问的。避免后期文件类的修改问题。
(B)这个地址要在生成订单的时候直接设置在回调地址的位置。
(C)回调文件会值调取。调取到的参数获取用JSON通知时使用的是$_POST
(D)文件验签的时候记得什么类型的签名就用什么类型验签,一般的签名类型为RAS2,但是DEMO上是RAS哦。
在验签和核实订单信息后就可以修改相应订单信息,记得在数据库中需改目前订单的状态
这是主要验签的核心,这里的第一个参数是支付宝回调到的信息,第二个参数是证书(pem)文件的地址,没有可以写NULL,第三个是签名加密方式。这里我们的是RSA
部分代码展示分析。