加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-06-25 18:12:18 所属栏目:PHP教程 来源:互联网
导读:本文实例讲述了php实现的支付宝网页支付功能,分享给大家供大家参考,具体如下: 1.提交支付请求 require_once ./payment/zfb/pagepay/service/AlipayTradeService.php; require_once ./payment/zfb/pagepay/buildermodel/AlipayTradePagePayContentBuilde
  本文实例讲述了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=$_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 "验证失败";
  }。
 

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!