PHP版本对接支付宝支付接口
其实理顺了思路后,按照我接下来的步骤来,真的超级简单啊,为啥有那么多的朋友们折腾了那么久呢,嘿嘿,接下来跟我走吧~
我是昨天晚上洗完澡之后,大概八九点,才开始正式开工尝试去这一工程的,我去支付宝的蚂蚁金服开放平台里把各个知识点和文档大概都看了一遍,大致弄明白了要怎么操作了,建议大家看看电脑网站开发文档,我忙到了夜里十二点左右,成功地用支付宝给的Demo完成了付款操作。
一、下载SDK开发工具包
点击链接下载SDK&Demo
我下载的是PHP的Demo。
下载好了之后,我把Demo解压到了我项目的根目录下了,目录结构如下所示:
这里有三个文件很重要很关键,一个是notify_url.php, 一个是return_url.php, 另一个是config.php,他们分别是支付结果异步通知,支付结果同步通知,和配置文件。通知文件是来写业务逻辑的,而配置文件是来写配置参数的。
我们打开配置文件config.php,看一下我们需要写哪些配置参数。
我们可以看到,需要我们来填写的有6个参数:“应用ID”,“商户私钥”,“异步通知地址”,“同步跳转地址”,“支付宝网关”,“支付宝公钥”
。这些参数非常非常重要,一个都不能填错。然而,我们要怎么获取这些参数呢?
首先,应用ID,这就是我们用的沙箱的ID,可以在蚂蚁金服开放平台的开发者中心的沙箱环境中查看沙箱应用信息,沙箱应用就是给我们在正式应用上线前用来进行测试开发的。
现在我们已经获得了应用ID和支付宝网关了,把这两个参数填到config.php中去。
这个位置下面有一个选看部分:
这里的应用网关和授权回调地址我们不需要填,这是口碑开发才需要填的,我们做的只是普通的电脑网站支付,不需要填这个。
二、下载支付宝提供的RSA秘钥生成器,来生成一对秘钥
现在商户私钥和支付宝公钥要怎么填呢?当然是还在刚才的沙箱环境找啦
支付宝推荐我们使用RSA2生成一对秘钥,那我们就依着它说的做,点击生成方法下载对应操作系统的秘钥生成器,我是用windows的秘钥生成器,下载之后,很容易操作就生成了一对秘钥,这时我们需要将私钥放进config.php中的商户私钥的参数里,而公钥放到沙箱环境中。
友情提醒:这里有个大坑,就是将私钥粘贴到config.php中里去的时候,私钥这个字符串中间不能有回车符,我当时的私钥粘贴进去的时候,就被格式化了似的,是一个特别整齐的矩形的形状(因为在每一行等长的位置填补了回车符),结果导致前几次支付时一直显示“missing-signature”,缺少签名参数,我去开放平台文档中心的沙箱常见错误里查了一下才发现了原因,因为这个害的我浪费了好多时间呢。大家也可以看一下这个表:
三、在沙箱中填参数
接下来要将生成的公钥放到沙箱环境中,点击“查看应用公钥”,将公钥复制到这里面。
由于我们选择的秘钥方式是RSA2,所以下面的RSA我们就不用填了。
填好了应用公钥之后,我们就可以点击旁边的按钮“查看支付宝公钥”了,因为这时候已经根据应用公钥自动生成了支付宝公钥,将支付宝公钥也填进config.php文件里相应的位置。
四、修改config.php中的配置文件
这时候我们已经填好了四个参数:“应用ID”,“商户私钥”,“支付宝网关”,以及“支付宝公钥”。
现在还剩下’return_url’ 和 'notify_url’对应的键值没有填写,我当时写的是我的本地的return_url.php 和 notify_url.php对应的项目路径,如图所示,其中JudgeOnline是我的项目名称。
其实异步通知地址这样写是有问题的,然而我是直到今天下午才发现这个bug,待会再说。
五、这时候本地就可以完成付款测试了
打开alipay文件夹下的index.php文件,然后就凭这么多年用支付宝的经验,顺利完成了一次支付。
以下图片是我昨晚用手机拍的支付过程:
六、下载沙箱版支付宝
这其中的支付账户不是用自己的支付宝,而是用沙箱版支付宝,沙箱版支付宝安卓版APP可以在这里下载。
也可以扫二维码下载
沙箱版支付宝里面有99999元,但只能用于开发测试的时候支付使用。沙箱版支付宝账号可以点击这里获得。支付的时候,如果在电脑上直接打开网页版支付宝付款,就输入沙箱的账号和密码,如果选择扫码登录,就是用安卓版APP在手机上登录后扫码支付。
支付成功后,页面就自动跳转到了return_url.php。
当我进行到这里的时候,已经到夜里十二点左右了,我关上电脑躺在床上,心里就一直构思着接下来要怎么把Demo移植到我的项目里面去,怎么与数据库交互,然后越想越兴奋,居然就失眠了 >_<
于是乎我就干脆不睡了起来继续折腾这个有趣的工程。下半夜里,我将Demo移植到了项目里,并且写了一个捐赠页面,在捐赠页面里填好表单之后就可以进行支付了,支付账号用的是沙箱账号,上面说过了,沙箱工具里有提供。然后我就建了两个数据表,一个存交易trade信息,一个存捐赠donate信息。把数据库部分调试好后,在notify_url.php页面里写好了插入语句,这时已经凌晨四点多了,我正打算通过支付将交易记录存入数据库,没想到这时候沙箱突然又开始进入维护阶段了,支付失败&#