了解php实现的支付宝网页支付功能【基于TP5框架】
导读:收集整理的这篇文章主要介绍了了解php实现的支付宝网页支付功能【基于TP5框架】,觉得挺不错的,现在分享给大家,也给大家做个参考。本文实例讲述了phP实现的支付宝网页支付功能。分享给大家供大家参考,具体如下:1.提交支付请求require_...
收集整理的这篇文章主要介绍了了解php实现的支付宝网页支付功能【基于TP5框架】,觉得挺不错的,现在分享给大家,也给大家做个参考。本文实例讲述了phP实现的支付宝网页支付功能。分享给大家供大家参考,具体如下:
1.提交支付请求
require_once './payment/zfb/pagepay/service/AlipayTradeService.php';
require_once './payment/zfb/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';
$payInfo=Db::name('pay_tyPE')->
where(['pay_id'=>
1])->
find();
$zfb=json_decode($payInfo['pay_json'],true);
$config=[ 'app_id'=>
$zfb['app_id'], 'merchant_PRivate_key'=>
$zfb['merchant_private_key'], 'notify_url'=>
config('z_notify_url'), 'return_url'=>
config('z_return_url'), 'charset'=>
config('charset'), 'sign_type'=>
config('sign_type'), 'gatewayUrl'=>
config('gatewayUrl'), 'alipay_public_key'=>
$zfb['alipay_public_key']];
//商品订单号$out_trade_no=$orderData['order_number'];
//订单名称,必填$subject='充值订单';
//付款金额$total_amount=$money;
//商品描述$body = $out_trade_no . '-' . $this->
agent_id.'-'.$money;
$payRequestBuilder = new \AlipayTradePagePayContentBuilder();
$payRequestBuilder->
setBody($body);
$payRequestBuilder->
setSubject($subject);
$payRequestBuilder->
setTotalAmount($total_amount);
$payRequestBuilder->
setOutTradeNo($out_trade_no);
$aop = new \AlipayTradeService($config);
$response = $aop->
pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);
echo $response;
2.异步回调支付宝参数认证
$pay=Db::name('pay_type')->
where(['pay_id'=>
1])->
find();
$zfb=json_decode($pay['pay_json'],true);
$config = [ 'app_id' =>
$zfb['app_id'], 'merchant_private_key' =>
$zfb['merchant_private_key'], 'notify_url' =>
config('z_notify_url'), 'return_url' =>
config('z_return_url'), 'charset' =>
config('charset'), 'sign_type' =>
config('sign_type'), 'gatewayUrl' =>
config('gatewayUrl'), 'alipay_public_key' =>
$zfb['alipay_public_key'] ];
$arr=$_POST;
$alipaySevice = new \AlipayTradeService($config);
$alipaySevice->
wrITeLOG(var_export($_POST,true));
$result = $alipaySevice->
check($arr);
/* 实际验证过程建议商户添加以下校验。 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号, 2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额), 3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方 (有的时候,一个商户可能有多个seller_id/seller_email) 4、验证app_id是否为该商户本身。 */ if($result) {
//验证成功 //////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 $out_trade_no = $_POST['out_trade_no'];
//支付宝交易号 $trade_no = $_POST['trade_no'];
//交易状态 $trade_status = $_POST['trade_status'];
//交易金额 $total_amount = $_POST['total_amount'];
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细, 并执行商户的业务程序 //请务必判断请求时的total_amount与通知时获取的total_fee为一致的 //如果有做过处理,不执行商户的业务程序 //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 }
else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细, 并执行商户的业务程序 //请务必判断请求时的total_amount与通知时获取的total_fee为一致的 //如果有做过处理,不执行商户的业务程序 //注意: //付款完成后,支付宝系统发送该交易状态通知 //此处应该更新一下订单状态,商户自行增删操作 这里写你的逻辑程序 }
//——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— echo 'success';
}
else {
//验证失败 echo "fail";
}
}
3.同步回调页面跳转处理 同步只是做一个跳转处理 不要写任何数据处理
$pay=Db::name('pay_type')->
where(['pay_id'=>
1])->
find();
$zfb=json_decode($pay['pay_json'],true);
$config = [ 'app_id' =>
$zfb['app_id'], 'merchant_private_key' =>
$zfb['merchant_private_key'], 'notify_url' =>
config('z_notify_url'), 'return_url' =>
config('z_return_url'), 'charset' =>
config('charset'), 'sign_type' =>
config('sign_type'), 'gatewayUrl' =>
config('gatewayUrl'), 'alipay_public_key' =>
$zfb['alipay_public_key']];
$arr=$_GET;
$alipaySevice = new \AlipayTradeService($config);
$result = $alipaySevice->
check($arr);
/* 实际验证过程建议商户添加以下校验。1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)4、验证app_id是否为该商户本身。*/if($result) {
//验证成功 /////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 $out_trade_no = htMLspecialchars($_GET['out_trade_no']);
//支付宝交易号 $trade_no = htmlspecialchars($_GET['trade_no']);
$this->
success("支付成功",url('Index/index'));
//——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////}
else {
//验证失败 echo "验证失败";
}
相关学习推荐:PHP编程从入门到精通
以上就是了解php实现的支付宝网页支付功能【基于TP5框架】的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 了解php实现的支付宝网页支付功能【基于TP5框架】
本文地址: https://pptw.com/jishu/596627.html
