gpt4 book ai didi

php实现的支付宝网页支付功能示例【基于TP5框架】

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 30 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章php实现的支付宝网页支付功能示例【基于TP5框架】由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了php实现的支付宝网页支付功能。分享给大家供大家参考,具体如下:

1.提交支付请求 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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.异步回调支付宝参数认证 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
$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.同步回调页面跳转处理  同步只是做一个跳转处理 不要写任何数据处理 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$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 "验证失败" ;
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助.

原文链接:https://blog.csdn.net/Drug_/article/details/83897368 。

最后此篇关于php实现的支付宝网页支付功能示例【基于TP5框架】的文章就讲到这里了,如果你想了解更多关于php实现的支付宝网页支付功能示例【基于TP5框架】的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com