分阶段付款 学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,一经查实,立即删除!

相关文章

使用sqlldr导入文本数据到oracle

1.sqlldr介绍 用法: SQLLDR keywordvalue [,keywordvalue,...]有效的关键字:userid -- ORACLE 用户名/口令 control -- 控制文件名 log -- 日志文件名 bad -- 错误文件名 data -- 数据文件名 dis…

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 里查看…

php mvc 逻辑层在哪,mvc的业务逻辑应该放哪里?

背景: 基于laravel的后台管理系统,CURD密集型业务问题:当直接在控制器方法中调用orm处理业务逻辑时,代码复用性差,控制器层很肥尝试解决1:新建一个model层,将原先在控制器中的处理逻辑移到mode…

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

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

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

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

python中集合符号,Python 集合符号

Android SDK Manager 无法下载更新,或者更新速度超慢,或者待安装包列表不显示解决方法: 转自 http://www.cnblogs.com/tc310/archive/2012/12/21/2828450.html http://jingyan.baidu.com/artic ...AJAX学习AJAX即“Asynchronous Javascript And XML”(异…

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

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

oracle数据导入导出

一、exp/imp与expdp/impdp的区别 1:把用户usera的对象导到用户userb,用法区别在于fromuserusera touseruserb ,remap_schemausera:usera 。例如 imp system/passwd fromuserusera touseruserb file/oracle/exp.dmp log/oracle/exp.log; impdp system/passwd directo…

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

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

Oracle视图添加约束,Oracle创建视图的语法

Oracle创建视图的语法导读:就爱阅读网友为大家分享了多篇关于 "oracle 创建序列语法" 资料,内容精辟独到,非常感谢网友的分享,希望从中能找到对您有所帮助的内容。相关资料一 : Oracle 创建视图的语法Oracle 创建视图的…

linux压缩和解压缩命令

tar命令解包:tar zxvf FileName.tar打包:tar czvf FileName.tar DirNamegz命令解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压:tar zxvf FileName.tar.gz压缩&a…

【Java进阶】Java Lambda 表达式、Stream API完整梳理

一、Lambda表达式 Lambda 表达式是一种匿名函数,它可以用来定义函数式接口的实现。Lambda 表达式可以用来简化代码,提高代码的可读性和可维护性。 1、Lambda 表达式 1.1、语法介绍 Lambda 表达式的语法如下: (parameters) -> express…

使用T-SQL语句操作数据表-删除数据

1.使用 delete 语句删除表中的数据&#xff1a;语法&#xff1a;delete from <表名> [where <删除条件>]delete 是删除的意思 where是选填内容可以不加&#xff0c;但是不加条件的话是删除整个表 例子&#xff1a;delete from 成绩表 where 姓名张三含义&#xff1…

Oracle expdp/impdp导出导入命令及数据库备份

经常报错&#xff1a; ORA-39002: invalid operation ORA-39070: Unable to open the log file. ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation 解决方法&#xff1a; 1、 CREATE OR REPLACE DI…

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

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

在linux中安装oracle中文包,在Linux命令行下安装Oracle 10g

Oracle 10g支持在命令行下用静默模式(Silent)安装&#xff0c;给那些没有安装图形界面的Linux系统提供了极大的便利。下面以Fedora Core 6为例&#xff0c;介绍在命令行下安装OracleOracle 10g的方法。1 安装前的准备准备工作要用登录为root用户来进行。1.1 选择安装环境的语言…

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

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

Oracle下的Databse,Instance,Schemas

1、DATABASE&#xff0c;对oracle而言&#xff0c;是指物理上的数据库&#xff0c;一般你安装了一个oracle的数据库软件后&#xff0c;就是一个database。 2、instance&#xff0c;在同一个数据库上&#xff0c;可以建立多个实例&#xff0c;这些实例互相不干扰&#xff0c;每个…

oracle实验数据库和表,1oracle创建数据库和表.doc

1oracle创建数据库和表.doc实验一&#xff1a;创建数据库和表一、实验目的1. 掌握使用DBCA创建数据库2. 掌握手工创建Oracle数据库的方法3. 掌握创建数据表的方法二、实验内容及步骤1. 使用DBCA创建数据库(1) 打开DBCA组件,创建数据库sale.(2) 安装完后进入D:\oracle\product\1…