流程
支付功能
RSA私钥以及公钥的生成
具体可以看支付宝开发文档支付宝商家后台上传rsa_public_key.pem,生成alipay_public_key.pem
确保格式要一致替换Demo中的配置文件参数和pem文件,注意config文件中key也要加上路径
不然Laravel无法找到该文件将Demo中的index.php放到blade模板中。
-
将Demo中的alipayapl.php 中的代码增加到新增的payController中.
laravel中,对于原生php引用的写法(require_once) 可以将直接该原生应用直接放入到方法中然后拼接路径,比如
require_once("alipay.config.php")
可以改为require_once(app_path()."/Tool/alipay/alipay.config.php")
ps:在引用类的前面也要加上 \ ,应为这个为外类
- 配置路由,修改action路径。完成支付功能的实现
支付成功通知服务器支付成功
需要异步通知的原因
避免应支付时服务器中断而导致的支付成功信息 不能够传达。
并且异步通知会通知多次,知道你的服务器给支付宝服务器返回success。
所以判断是否支付成功一定要用notify方法而不是同步。
call_back_url
支付成跳转的界面
notify_url
异步通知服务的路径
merchart_url
操作中断返回地址
将Demo中的notify.url修改添加到payController中。
laravel 中会有对传来的信息进行CSRF验证,所以直接使用不能够接收支付宝传来的信息。
针对这个问题,laravel的中间件中提供了VerifyCsrfToken.php
这个类。我们可以将不用验证的请求放到这个类中的protected $expect
中在notify方法中的交易成功判断中 修改用户的订单状态
为了直观的看到支付宝返回的结果,我们可以只用
use Log;
-
上传到服务器中调试,并且修改
获取当前的域名以及地址信息
- 确认回调(post)
- 确认同步跳转页面(get)
- 确认支付中断页面(get )