介绍
今天就跟大家聊聊有关基于TP5框架php如何实现的支付宝网页支付功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
本文实例讲述了php实现的支付宝网页支付功能。分享给大家供大家参考,具体如下:
<强> 1。提交支付请求强>
require_once & # 39;。/付款/zfb/pagepay/服务/AlipayTradeService.php& # 39;; require_once & # 39;。/付款/zfb/pagepay/buildermodel AlipayTradePagePayContentBuilder.php& # 39;; $ payInfo=Db:名称(& # 39;pay_type& # 39;)→在((& # 39;pay_id& # 39;=祝辞1])→找到(); $ zfb=json_decode ($ payInfo [& # 39; pay_json& # 39;], true); $ config=( & # 39;app_id # 39;=祝辞zfb美元[& # 39;app_id # 39;], & # 39;merchant_private_key& # 39;=祝辞zfb美元[& # 39;merchant_private_key& # 39;], & # 39;notify_url& # 39;=祝辞配置(& # 39;z_notify_url& # 39;), & # 39;return_url& # 39;=祝辞配置(& # 39;z_return_url& # 39;), & # 39;charset # 39;=祝辞配置(& # 39;charset # 39;), & # 39;sign_type& # 39;=祝辞配置(& # 39;sign_type& # 39;), & # 39;gatewayUrl& # 39;=祝辞配置(& # 39;gatewayUrl& # 39;), & # 39;alipay_public_key& # 39;美元=祝辞zfb [& # 39; alipay_public_key& # 39;】 ];//商品订单号 orderData [$ out_trade_no=$ & # 39; order_number& # 39;];//订单名称,必填 $主题=& # 39;充值订单& # 39;;//付款金额 total_amount=美元钱;//商品描述 身体=out_trade_no美元。& # 39;& # 39;。$ this→agent_id强生# 39;& # 39;美元钱; 美元payRequestBuilder=new \ AlipayTradePagePayContentBuilder (); payRequestBuilder→美元setBody(身体); 美元payRequestBuilder→setSubject(主题); 美元payRequestBuilder→setTotalAmount ($ total_amount); 美元payRequestBuilder→setOutTradeNo ($ out_trade_no); aop=new \ AlipayTradeService美元($ config); 响应=aop→美元pagePay (payRequestBuilder,配置美元[& # 39;return_url& # 39;],美元配置[& # 39;notify_url& # 39;]); echo $反应;
<强> 2。异步回调支付宝参数认证强>
支付美元=Db::名称(& # 39;pay_type& # 39;)→在((& # 39;pay_id& # 39;=祝辞1])→找到(); $ zfb=json_decode($支付[& # 39;pay_json& # 39;], true); $ config=( & # 39;app_id # 39;=比;$ zfb [& # 39; app_id # 39;], & # 39;merchant_private_key& # 39;=比;$ zfb [& # 39; merchant_private_key& # 39;], & # 39;notify_url& # 39;=比;配置(& # 39;z_notify_url& # 39;), & # 39;return_url& # 39;=比;配置(& # 39;z_return_url& # 39;), & # 39;charset # 39;=比;配置(& # 39;charset # 39;), & # 39;sign_type& # 39;=比;配置(& # 39;sign_type& # 39;), & # 39;gatewayUrl& # 39;=比;配置(& # 39;gatewayUrl& # 39;), & # 39;alipay_public_key& # 39;=比;$ zfb [& # 39; alipay_public_key& # 39;】 ]; arr=$ _POST美元; alipaySevice=new \ AlipayTradeService美元($ config); 美元alipaySevice→writeLog (var_export ($ _POST,真)); 结果=alipaySevice→美元支票($ arr);/*实际验证过程建议商户添加以下校验。 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号, 2,判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额), 3、校验通知中的seller_id(或者seller_email)是否为out_trade_no这笔单据的对应的操作方 (有的时候,一个商户可能有多个seller_id/seller_email) 4、验证app_id是否为该商户本身。 */如果美元(结果){//验证成功//////////////////////////////////////////////////////////////////////////////////请在这里加上商户的业务逻辑程序代//敫菽囊滴衤呒幢嘈闯绦?以下代码仅作参考)—//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表//商户订单号 $ out_trade_no=$ _POST [& # 39; out_trade_no& # 39;];//支付宝交易号 $ trade_no=$ _POST [& # 39; trade_no& # 39;];//交易状态 $ trade_status=$ _POST [& # 39; trade_status& # 39;];//交易金额 $ total_amount=$ _POST [& # 39; total_amount& # 39;]; if ($ _POST [& # 39; trade_status& # 39;]==& # 39; TRADE_FINISHED& # 39;) {//判断该笔订单是否在商户网站中已经做过处理//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细, 并执行商户的业务程序//请务必判断请求时的total_amount与通知时获取的total_fee为一致的//如果有做过处理,不执行商户的业务程序//注意://退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 }else if ($ _POST [& # 39; trade_status& # 39;]==& # 39; TRADE_SUCCESS& # 39;) {//判断该笔订单是否在商户网站中已经做过处理//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细, 并执行商户的业务程序//请务必判断请求时的total_amount与通知时获取的total_fee为一致的//如果有做过处理,不执行商户的业务程序//注意://付款完成后,支付宝系统发送该交易状态通知//此处应该更新一下订单状态,商户自行增删操作 这里写你的逻辑程序 }//敫菽囊滴衤呒幢嘈闯绦?以上代码仅作参考)— 回声& # 39;成功# 39;; 其他}{//验证失败 回声“fail"; } }基于TP5框架php如何实现的支付宝网页支付功能