https://docs.open.alipay.com/api_1/alipay.trade.query

<?php
/* ** 功能:支付宝服务器异步通知页面* 版本:2.0* 修改日期:2016-11-01* 说明:* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。*************************页面功能说明************************** 创建该页面文件时,请留心该页面文件中无任何HTML代码及空格。* 该页面不能在本机电脑测试,请到服务器上做测试。请确保外部可以访问该页面。* 如果没有收到该页面返回的 success 信息,支付宝会在24小时内按一定的时间策略重发通知*/
include('../../include/common.inc.php');
include('../sdkFunction.php');
require_once("alipay.config.php");
require_once("wappay/service/AlipayTradeService.php");
require_once("wappay/buildermodel/AlipayTradeQueryContentBuilder.php");$alipay_config['notify_url'] = '';
if(CONF_MODE=='official'){$alipay_config['notify_url'] = 'http://sdk.17byh.com/sdk/alipay_v2/notify_url.php';
}else{$alipay_config['notify_url'] = 'http://t.sdk.17byh.com/sdk/alipay_v2/notify_url.php';
}$alipaySevice = new AlipayTradeService($alipay_config);function zfbHandle()
{global $alipaySevice;$arr = $_POST;/* 实际验证过程建议商户添加以下校验。1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)4、验证app_id是否为该商户本身。*/$result = 1;if ($result) {//验证成功///请在这里加上商户的业务逻辑程序代//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表//商户订单号$out_trade_no = $_POST['out_trade_no'];//支付宝交易号$trade_no = $_POST['trade_no'];//交易状态$trade_status = $_POST['trade_status'];//充值金额$amount = intval($_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为一致的//如果有做过处理,不执行商户的业务程序//注意://付款完成后,支付宝系统发送该交易状态通知$check_sql = "select amount,status from cy_pay where orderid='" . $_REQUEST['out_trade_no'] . "'";$check_rs = mysql_query($check_sql);$check_data = array();while ($check_row = mysql_fetch_assoc($check_rs)) {$check_data = $check_row;}//验证订单数额的一致性if ($check_data['amount'] == $amount) {$sql = "UPDATE cy_pay SET status=1,beizhu='" . $_REQUEST['trade_no'] . "' WHERE orderid='" . $_REQUEST['out_trade_no'] . "'";$rs = mysql_query($sql);//通知游戏方if ($rs) {$sql_info = "UPDATE cy_paycpinfo SET payflag=1 where orderid='" . $_REQUEST['out_trade_no'] . "'";$rs_info = mysql_query($sql_info);$sql_info = "select fcallbackurl,params,status,type from cy_paycpinfo where orderid='" . $_REQUEST['out_trade_no'] . "'";$rs_info = mysql_query($sql_info);$data = array();while ($row = mysql_fetch_assoc($rs_info)) {$data = $row;}$fcallbackurl = $data['fcallbackurl'];$params = $data['params'];$status = $data['status'];$device = $data['type'];if ($status == 0) {$i = 0;$result = true;while ($result) {$cp_rs = $alipaySevice->payback($fcallbackurl, $params, 'post');if ($cp_rs) {$time = time();$sql_cp = "UPDATE cy_paycpinfo SET status=1,update_time='" . $time . "' where orderid='" . $_REQUEST['out_trade_no'] . "'";$rs_cp = mysql_query($sql_cp);$result = false;} else {$i++;sleep(2);$result = true;}if ($i == 5) {$result = false;}}}//判断是否已录入$sql = "select * from cy_pay_ok where orderid='" . $_REQUEST['out_trade_no'] . "'";$has_info = mysql_query($sql);$has_data = array();while ($row = mysql_fetch_assoc($has_info)) {$has_data = $row;}if (!$has_data) {//录入pay_ok$sql_info = "select * from cy_pay where orderid='" . $_REQUEST['out_trade_no'] . "'";$rs_info = mysql_query($sql_info);$data = array();while ($row = mysql_fetch_assoc($rs_info)) {$data = $row;}//取渠道信息$cps_user_sql = "select id,username,agent,one_agent,one_username,second_agent,second_username from cy_ct_cps_user where agent='" . $data['regagent'] . "'";$cps_user_info = mysql_query($cps_user_sql);$cps_data = array();while ($row = mysql_fetch_assoc($cps_user_info)) {$cps_data = $row;}$data['second_agent'] = $cps_data['second_agent'];$data['second_username'] = $cps_data['second_username'];$data['one_agent'] = $cps_data['one_agent'];$data['one_username'] = $cps_data['one_username'];$data['agent_username'] = $cps_data['username'];//游戏名字$game_sql = "select id,name from cy_game where id='" . $data['gameid'] . "'";$game_info = mysql_query($game_sql);$game_data = array();while ($row = mysql_fetch_assoc($game_info)) {$game_data = $row;}$data['gamename'] = $game_data['name'];$sql = "insert into cy_pay_ok (orderid,amount,username,roleid,paytype,serverid,servername,gameid,gamename,ip,imeil,create_time,agent,regagent,agent_username,prvite,second_agent,second_username,one_agent,one_username,type,attach) value ('{$data['orderid']}','{$data['amount']}','{$data['username']}','{$data['roleid']}','{$data['paytype']}','{$data['serverid']}','{$data['servername']}','{$data['gameid']}','{$data['gamename']}','{$data['ip']}','{$data['imeil']}','{$data['create_time']}','{$data['agent']}','{$data['regagent']}','{$data['agent_username']}','{$data['prvite']}','{$data['second_agent']}','{$data['second_username']}','{$data['one_agent']}','{$data['one_username']}','{$device}','{$data['attach']}')";$rs = mysql_query($sql);}}}echo "success";        //请不要修改或删除}//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——} else {//验证失败echo "fail";    //请不要修改或删除}
}set_time_limit(0);
$sql = "select id,orderid from cy_pay  where (beizhu is null or beizhu='') and paytype='zfb'  order by id desc limit 1";
$info = mysql_query($sql);
while ($row = mysql_fetch_assoc($info)) {$builder = new AlipayTradeQueryContentBuilder();$builder->setOutTradeNo($row['orderid']);$response = $alipaySevice->Query($builder);$res = json_decode(json_encode($response),true);$code = $res['code'];$tradeStatus = $res['trade_status'];if($res['code']==10000&&$tradeStatus=='TRADE_SUCCESS'){$_POST['out_trade_no'] = $res['out_trade_no'];$_POST['trade_no'] = $res['trade_no'];$_POST['trade_status'] = $res['trade_status'];$_POST['total_amount'] = $res['total_amount'];$_REQUEST = $_POST;zfbHandle();}
}
?>

php 支付宝支付回调与查询订单相关推荐

  1. 微信支付、支付宝支付回调处理总结

    做APP支付已经做了两三次了,每次都要花点时间去调试回调,很浪费时间,所以这次总结了一下我们需要在AppDelegate中做的事情.本文已经总结并解析了常用的错误码errorCode: 首先,遵守微信 ...

  2. 支付宝支付回调,回调日志记录

    1.支付报支付回调方法 public function aliPayNotify(){try {$app = PayService::alipay();$collect = $app->veri ...

  3. 支付宝支付回调不成功原因及解决

    问题: 1.在支付是配置了回调地址,支付成功后没有收到支付宝的回调. 定位: 1.首先访问了回调的地址,发现地址正常访问没有问题. 2.查看起调支付的日志,看到回调地址写入到支付参数中. 3.支付完成 ...

  4. 集成支付宝支付流程 和查询支付的结果

    一:介绍 支付之前,在网上也查寻了资料, 支付接入坑太多,微信坑最多,api文档太复杂. 二:交互流程 建议先把开发文档仔仔细细看一遍,一定要看,刚开始的时候没有老老实实地看完,结果遇到很多的坑,浪费 ...

  5. 微信,支付宝支付回调的入参处理方法

    微信的支付回调为xml格式.支付宝回调为json格式.返回的格式如何处理 首先看下回调的入参经过处理后长啥样. 微信的支付回调: 支付宝的支付回调: 微信的支付回调处理: StringBuilder ...

  6. 支付宝支付回调异常_支付宝崩了是怎么回事 支付宝崩了部分用户使用异常现已恢复...

    支付宝崩了是怎么回事 12月5日支付宝崩了部分用户使用异常现已恢复 支付宝崩了是怎么回事?12月5日下午不上支付宝用户在社交平台上表示自己的支付宝无法使用,出现了无法正常登录.转账和支付等情况,但这只 ...

  7. 支付宝支付回调是什么意思_支付宝邮箱是什么

    支付宝是我们现在必备的支付软件之一,它的登录方式有手机号.邮箱登录等.现在,不少人已经拥有了手机账号,那么这时如果想要再绑定邮箱该怎么办呢?下面就让我来为你介绍一下纯手机账号的支付宝用户添加邮箱账户的 ...

  8. ios 支付宝支付 回调数据_iOS逆向支付宝

    去掉 ptrace 和 __RESTRICT section 两个保护 脱壳和dump头文件 分析和调试 编写Tweak 总结 环境 MacBook,iPhoneX,iOS 9.3.3越狱, iOS支 ...

  9. c# .net core 微信、支付宝H5支付链接获取,支付回调方法,退款方法小计

    支付链接获取 //隐藏代码:获取一个订单model实体,并判断此订单是否发起过支付链接吊起,如发起过且链接没过期,则直接返回支付链接(仅限微信)if (//隐藏代码:判断是否为待付款){switch ...

  10. Python实战项目-10文件存储/支付宝支付/支付成功回调接口

    每天进步一点点,关注我哦,每天分享测试技术文章 文件存储 视频文件存储在某个位置,如果放在自己服务器上 放在项目的media文件夹 服务器上线后,用户既要访问接口,又需要看视频,都是使用一个域名和端口 ...

最新文章

  1. Linux网络路由简介-查看网络路由
  2. json数据映射到html,在GoLang中将Json数据映射到Html模板
  3. 第一次摸服务器遇到的问题总结
  4. hibernate课程 初探单表映射3-1 hibernate单表操作简介
  5. 微软 PowerBI 被评为商业智能领导者-13年的企业产品奋斗史解读
  6. java 德生读卡器对接程序_德生TSW-F4 社保卡读卡器.rar
  7. 如何使用 Python 实现微信消息防撤回
  8. Xamarin.Android开发实践(一)
  9. jQuery实现锚点滑动定位
  10. android判断正确密码,Android 监听EditText输入框 ,判断输入的密码是什么格式
  11. 浙江富商的24条至理经验
  12. Android平台快速集成当下流行平台分享
  13. 50个表单功能,验证,安全和自定义化的jQuery插件
  14. python 阮一峰_阮一峰:Fish shell 入门教程
  15. Jetpack Compose 无限加载列表(滚到底部自动加载更多)
  16. 牛牛试题排版插件V3更新发布
  17. Unity代码调用网络摄像头WebCamTexture
  18. java.lang.RuntimeException: Unable to start receiver com.yeliner.example.fragmentnews.receiver.Offl
  19. 新概念2 课文和单词(1)
  20. Java 开发工具包

热门文章

  1. GO -- 一个经验
  2. redis应用场景与最佳实践
  3. 同步与异步、异步与回调
  4. thinkPHP 空模块和空操作、前置操作和后置操作 详细介绍(十四)
  5. Ant--基于java的build工具
  6. NbPreferences使用用户首选项时要注意的问题
  7. linux内核之设备驱动
  8. Linux互斥与同步之原子操作
  9. 织梦本地调试运行PHP不显示图片,织梦CMS手机端不显示图片的原因及解决方法!...
  10. Android中怎么方便的调试关机充电