0

0

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

coldplay.xixi

coldplay.xixi

发布时间:2020-08-01 16:28:01

|

3220人浏览过

|

来源于jb51

转载

了解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.异步回调支付宝参数认证

百家CMS微商城
百家CMS微商城

百家CMS微商城从诞生开始,就坚持着简单实用的原则,基于目前最流行的WEB2.0的架构(php+mysql),拥有成熟、稳定的微电商技术解决方案。基于完整的会员等级制度,完善的微商城购物流程,订单管理、优惠券、搜索、购物车等功能。采用跨平台机制,可同时对接微信公众号平台和支付宝服务窗,兼容微博、手机QQ等平台;丰富的支付方式、支持微信支付、支付宝支付、货到付款、余额支付、网银支付等。并且拥有完整的

下载
$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.同步回调页面跳转处理  同步只是做一个跳转处理 不要写任何数据处理

立即学习PHP免费学习笔记(深入)”;

$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编程从入门到精通

相关文章

支付宝
支付宝

支付宝,全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付服务,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2013

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1334

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1236

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

948

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1402

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1231

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1440

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1303

2023.11.13

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

74

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号