一开始也没做过支付宝支付相关的东西
本来用的fastadmin的epay插件来配置支付宝的,本来以为会so easy,但是实际上还是遇到了一些问题,花了几天时间,把沙箱环境配置起来了...
算是一个良好的开端
第一步骤:生成公钥和秘钥
作用是:生成你的应用公钥和私人秘钥,然后配置到沙箱环境中后,生成后,你可以在你的秘钥文件路径中查看
第二步骤,进行沙箱环境配置
公钥的配置,进行填写或者替换
第三步:下载一个demo,进行本地参数配置测试
我这里下面的是fastadmin里面的addons/epay里面的config文件配置,大体的参数差不太多
fastadmin的这个文件里面,你要把你的应用网关,设置为dev,开发沙箱模式,,不然你的模式是正式模式,就会报错:appid错误.这一类的错误
4.然后测试,就完事儿了
这是阿里的demo
5.把这些参数配置,同理,改到fastadmin中的epay的config.php中去,
这里config.php没有配置网关,需要到:项目\addons\epay\library\Yansongda\Pay\Gateways\Alipay\Alipay.php中,去改开发网关
如何分辨和理解notify_url和return_url
return_url:在你进入支付界面后,输入账号密码支付完成后,会跳入你的return_url,所以这里可以做成你的本地url,比如xxx.com/addons/epay/index/notifyx
这里会带有一些out_trade_no(你的网站生成的单号),来直接给你,然后你就可以在returnx()方法里面把out_trade_no获取到,然后进行判断,判断支付成功..
notify_url:回调url,这里是支付宝post参数的url,支付宝支付成功后,支付宝方会post一些数据到这个url,所以这个url不能是本地的域名了..他就要弄个公网能够访问的url,你在线上调,才可以获取到参数...因为支付宝无法也不可能把参数传到你的本地局域网网络上..在fastadmin中,你可以用tp5的方法input('params.')获取所有的参数,类似下面这张
下面是notify获取到的所有值..
{"gmt_create":"2020-04-14 00:37:30","charset":"UTF-8","gmt_payment":"2020-04-14 00:37:39","notify_time":"2020-04-14 00:40:20","subject":"\u5546\u54c1:netflex-30\u5929\u8ba2\u5355_32","sign":"f44+wVQF9q3qNxYKWPcBAGbbIh1Zf6yXdU8Uw2hFyk5MerDzrmd+hNDqfuJP65KJ8aU2nwXNa5F1F7gYsRyhkxpBc7uqb31MpE81EHXd2Efxmg11k8DOjzpWLc8sg4PTQpI2igaTt0neffwpt6GnaWQin+aHGtpbRFBM4tbhfFzZU+2lBgYPBIrnWiAWmKNsOo9Qg74oiG9Gbe7sn6qfOEoNGyqZ+\/usMTLmrF43HYdL4qxRxySaMrWEyBVC2Xo3NWmOajNwTcvqvZ3d8v\/eRS0mFQiKuSZncl6aclbqIqr5kgpy9gh4hT25jTRPIMZfvLSWdqx1o5ovQMNYZOvdUA==","buyer_id":"2088102180484198","invoice_amount":"0.01","version":"1.0","notify_id":"725d69fefce80d8cd0fee646031b83ehgx","fund_bill_list":"[{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]","notify_type":"trade_status_sync","out_trade_no":"32","total_amount":"0.01","trade_status":"TRADE_SUCCESS","trade_no":"2020041422001484190500343722","auth_app_id":"2016102300742405","receipt_amount":"0.01","point_amount":"0.00","app_id":"2016102300742405","buyer_pay_amount":"0.01","sign_type":"RSA2","seller_id":"2088102180715980","addon":"epay","controller":"index","action":"notifyx","paytype":"alipay"}
支付成功后,但是回调地址验证签名错误,怎么办?
多半是你本地配置的支付宝公钥填写错了,填写成了应用公钥...
发现配置的回调地址,不是你的回调地址怎么办?
真正的回调地址,可以通过config配置,也可以通过experience()方法里面拼接..在实际开发中,notify_url和return_url不一定是配置里面的,可以在方法里面进行拼接调用