verifyNotify() public method

针对notify_url验证消息是否是支付宝发出的合法消息
public verifyNotify ( ) : 验证结果
return 验证结果
Example #1
0
 public function actionNotifyUrl()
 {
     //计算得出通知验证结果
     $alipayNotify = new \AlipayNotify($this->alipayConfig());
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         if ($_REQUEST['trade_status'] == 'TRADE_FINISHED') {
             //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
             echo '退款';
         } else {
             if ($_REQUEST['trade_status'] == 'TRADE_SUCCESS') {
                 //付款完成后,支付宝系统发送该交易状态通知
                 if (ChargeOrder::getInstance()->setOrderStatus($_REQUEST['out_trade_no'])) {
                     // 设置订单状态
                     return $this->redirect('http://wechat.baihey.com/wap/site/main#/charge_order?orderId=' . $_REQUEST['out_trade_no'] . '&payType=4');
                 } else {
                     // 设置订单状态失败
                     return $this->redirect('http://wechat.baihey.com/wap/site/main#/charge_order?orderId=' . $_REQUEST['out_trade_no'] . '&payType=4');
                 }
             } else {
                 // 未付款
                 return $this->redirect('http://wechat.baihey.com/wap/site/main#/charge_order?orderId=' . $_REQUEST['out_trade_no'] . '&payType=4');
             }
         }
         echo "success";
         //请不要修改或删除
     } else {
         //验证失败
         echo "fail";
         return $this->redirect('http://wechat.baihey.com/wap/site/main#/charge_order?orderId=' . $_REQUEST['out_trade_no'] . '&payType=4');
     }
 }
 public function actionAlipayOrderNotify()
 {
     Yii::$app->response->format = Response::FORMAT_RAW;
     require_once Yii::getAlias('@vendor') . "/payment/alipay/alipay.config.php";
     require_once Yii::getAlias('@vendor') . "/payment/alipay/lib/alipay_notify.class.php";
     $alipayNotify = new \AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         $out_trade_no = $_POST['out_trade_no'];
         $trade_no = $_POST['trade_no'];
         $trade_status = $_POST['trade_status'];
         $model = Order::findOne(['order_sn' => $out_trade_no, 'status' => [Order::STATUS_UNPAID, Order::STATUS_CANCELLED]]);
         if ($model) {
             if ($trade_status === 'TRADE_SUCCESS' || $trade_status === 'TRADE_FINISHED') {
                 if ($model->pay()) {
                     $this->_sendMsg($model);
                     Yii::info("订单支付成功!订单号:{$out_trade_no}");
                 } else {
                     Yii::error("订单支付失败!订单号:{$out_trade_no}");
                     return 'fail';
                 }
             }
         }
     } else {
         return 'fail';
     }
     return 'success';
 }
Example #3
0
 /**
  * 支付宝回调
  */
 public static function alipayNotify()
 {
     vendor('Alipay.Notify', COMMON_PATH . 'Vendor');
     $alipay_config = C('ALIPAY');
     $AlipayNotify = new \AlipayNotify($alipay_config);
     return $AlipayNotify->verifyNotify();
 }
Example #4
0
 public function notify($req)
 {
     require_once __DIR__ . '/mobiAlipay/lib/alipay_notify.class.php';
     //计算得出通知验证结果
     $alipayNotify = new AlipayNotify($this->mobiAlipayConfig);
     $verifyResult = $alipayNotify->verifyNotify();
     if ($verifyResult) {
         //商户订单号
         $out_trade_no = $req['out_trade_no'];
         //支付宝交易号
         $trade_no = $req['trade_no'];
         //交易状态
         $trade_status = $req['trade_status'];
         if ($req['trade_status'] == 'TRADE_FINISHED' || $req['trade_status'] == 'TRADE_SUCCESS') {
             //处理订单状态
             $uid = (new \Mall\Mdu\OrderModule())->setOrderStatus($out_trade_no, $_SERVER['REQUEST_TIME']);
             if ($uid != 0) {
                 (new \Mall\Mdu\OrderLogsModule())->addOrderLogBySn($out_trade_no, $this->di['sysconfig']['orderActType']['successPayment'], $uid, '用户', '支付成功');
                 echo 'success';
             } else {
                 echo 'fail';
             }
         }
     } else {
         echo "fail";
     }
 }
Example #5
0
 /**
  * App支付Notify
  */
 function alipay_notify_app()
 {
     $alipay_config_app = $this->config->item('alipay_config_app');
     $alipayNotify = new AlipayNotify($alipay_config_app);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         $out_trade_no = $_POST['out_trade_no'];
         //支付宝交易号
         $trade_no = $_POST['trade_no'];
         //交易状态
         $trade_status = $_POST['trade_status'];
         $this->log_result('alipay_notify', "【支付宝回调App】:\n" . json_encode($_POST) . "\n");
         if ($trade_status == 'TRADE_FINISHED' || $trade_status == 'TRADE_SUCCESS') {
             //判断该笔订单是否在商户网站中已经做过处理
             //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
             //如果有做过处理,不执行商户的业务程序
             $order = $this->order_model->get_order_info($out_trade_no);
             if ($order['TradeStatus'] != 'TRADE_FINISHED' && $order['TradeStatus'] != 'TRADE_SUCCESS') {
                 $data = array('TradeStatus' => $trade_status, 'TradeNo' => $trade_no, 'PayTime' => time(), 'PayType' => 'alipay');
                 $this->order_model->update_order_info($out_trade_no, $data);
             }
         }
         //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
         echo "success";
         //请不要修改或删除
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     } else {
         //验证失败
         echo "fail";
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
 }
Example #6
0
 function notify()
 {
     //计算得出通知验证结果
     $alipayNotify = new AlipayNotify($this->alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     $this->log('deposit/notify ' . 'verify:' . ($verify_result ? 'true' : 'false') . ' ' . json_encode($_POST, JSON_UNESCAPED_UNICODE));
     if ($verify_result) {
         //验证成功
         //商户订单号
         $out_trade_no = $_POST['out_trade_no'];
         //支付宝交易号
         $trade_no = $_POST['trade_no'];
         //交易状态
         $trade_status = $_POST['trade_status'];
         $deposit_id = intval($out_trade_no);
         if (!$deposit_id) {
             echo "fail";
             return FALSE;
         }
         $record = DB::fetch_first('SELECT * FROM ' . DB::table('user_deposit') . ' WHERE ' . DB::implode(array('id' => $deposit_id)));
         if (!$record) {
             echo "fail";
             return FALSE;
         }
         if ($record['status'] == TRADE_FINISHED) {
             echo "success";
             return TRUE;
         }
         switch ($trade_status) {
             case 'WAIT_BUYER_PAY':
                 DB::update('user_deposit', array('trade_no' => $trade_no, 'status' => WAIT_BUYER_PAY, 'updatetime' => TIMESTAMP), array('id' => $deposit_id));
                 break;
             case 'TRADE_CLOSED':
                 DB::update('user_deposit', array('status' => TRADE_CLOSED, 'updatetime' => TIMESTAMP), array('id' => $deposit_id));
                 break;
             case 'WAIT_SELLER_SEND_GOODS':
                 $this->send_goods($record, $trade_no);
                 DB::update('user_deposit', array('status' => WAIT_BUYER_CONFIRM, 'updatetime' => TIMESTAMP), array('id' => $deposit_id));
                 break;
             case 'WAIT_BUYER_CONFIRM_GOODS':
                 DB::update('user_deposit', array('status' => WAIT_BUYER_CONFIRM, 'updatetime' => TIMESTAMP), array('id' => $deposit_id));
                 break;
             case 'TRADE_SUCCESS':
                 DB::update('user_deposit', array('status' => TRADE_UNSUPPORTED, 'updatetime' => TIMESTAMP), array('id' => $deposit_id));
                 break;
             case 'TRADE_FINISHED':
                 DB::update('user_deposit', array('status' => TRADE_FINISHED, 'updatetime' => TIMESTAMP), array('id' => $deposit_id));
                 if ($record && $record['uid']) {
                     DB::query('UPDATE ' . DB::table('user_status') . ' SET ' . DB::quote_field('balance') . ' = ' . DB::quote_field('balance') . ' + ' . $record['price'] . ' WHERE ' . DB::implode(array('uid' => $record['uid'])));
                 }
                 break;
         }
         $this->log('deposit/notify id:' . $deposit_id . ' ' . $trade_status);
         echo "success";
         return TRUE;
     } else {
         echo "fail";
         return FALSE;
     }
 }
Example #7
0
 public function verifyNotify()
 {
     require_once "alipay.config.php";
     require_once "lib/alipay_notify.class.php";
     $alipayNotify = new \AlipayNotify($alipay_config);
     return $alipayNotify->verifyNotify();
 }
Example #8
0
 /**
  * 支付宝回调
  * @param unknown $aParams
  * @return Ambigous <验证结果, boolean>
  */
 public static function callback($aParams)
 {
     require_once LIB_PATH . '/Payment/Alipay/alipay_service.class.php';
     require_once LIB_PATH . '/Payment/Alipay/alipay_notify.class.php';
     $alipay_config = Yaf_G::getConf('aliapy_config', null, 'alipay');
     $alipayNotify = new AlipayNotify($alipay_config);
     return $alipayNotify->verifyNotify($aParams);
 }
Example #9
0
function verifyAlipayNotify(array $alipayConfig)
{
    $alipayConfig = getAlipayConfig($alipayConfig);
    $alipayNotify = new AlipayNotify($alipayConfig);
    $verifyResult = (bool) $alipayNotify->verifyNotify();
    echo $verifyResult ? 'success' : 'fail';
    return $verifyResult;
}
Example #10
0
 function endPay($PassageInfo, $OrderInfo)
 {
     /* 商户号 */
     $partner = $PassageInfo['StagePartnerId'];
     /* 密钥 */
     $key = $PassageInfo['StageSecureCode'];
     require "AliPayClass/notify_url.php";
     //计算得出通知验证结果
     $alipayNotify = new AlipayNotify($aliapy_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //请在这里加上商户的业务逻辑程序代
         //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
         //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
         $out_trade_no = $_REQUEST['out_trade_no'];
         //获取订单号
         $trade_no = $_REQUEST['trade_no'];
         //获取支付宝交易号
         $total_fee = $_REQUEST['total_fee'];
         //获取总价格
         if ($OrderInfo['OrderId'] == $out_trade_no && $total_fee == $OrderInfo['Coin']) {
             $Pay['OrderId'] = $OrderInfo['OrderId'];
             $Pay['PayUserId'] = $OrderInfo['PayUserId'];
             $Pay['AcceptUserId'] = $OrderInfo['AcceptUserId'];
             $Pay['PassageId'] = $OrderInfo['PassageId'];
             $Pay['AppId'] = $OrderInfo['AppId'];
             $Pay['PartnerId'] = $OrderInfo['PartnerId'];
             $Pay['SubPassageId'] = $OrderInfo['SubPassageId'];
             $Pay['Amount'] = $OrderInfo['Amount'];
             $Pay['Coin'] = $OrderInfo['Coin'];
             $Pay['Credit'] = $OrderInfo['Credit'];
             $Pay['PayIP'] = $OrderInfo['PayIP'];
             $Pay['PayTime'] = $OrderInfo['PayTime'];
             $Pay['UserSourceId'] = $OrderInfo['UserSourceId'];
             $Pay['UserSourceDetail'] = $OrderInfo['UserSourceDetail'];
             $Pay['UserSourceProjectId'] = $OrderInfo['UserSourceProjectId'];
             $Pay['UserSourceActionId'] = $OrderInfo['UserSourceActionId'];
             $Pay['UserRegTime'] = $OrderInfo['UserRegTime'];
             $Pay['PayedTime'] = strtotime($_REQUEST['notify_time']);
             $Pay['StageOrder'] = $trade_no;
             $Pay['comment'] = json_encode(array('buyer_email' => $_REQUEST['buyer_email'], 'buyer_id' => $_REQUEST['buyer_id']));
             return $Pay;
         } else {
             return false;
         }
         //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
         echo "success";
         //请不要修改或删除
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     } else {
         //验证失败
         echo "fail";
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
 }
Example #11
0
 /**
  * 验证支付宝的服务器返回
  *
  * @return boolen 返回验证状态, true代表合法请求,fasle代表无效返回
  */
 public function verifyReturn()
 {
     $notify = new \AlipayNotify($this->_config);
     if ($notify->verifyNotify()) {
         return true;
     } else {
         return false;
     }
 }
Example #12
0
 public function notifyUrl()
 {
     // require_once("alipay.config.php");
     // require_once("lib/alipay_notify.class.php");
     require_once public_path() . "/alipay/alipay.config.php";
     require_once public_path() . "/alipay/lib/alipay_notify.class.php";
     //计算得出通知验证结果
     $alipayNotify = new AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //请在这里加上商户的业务逻辑程序代
         //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
         //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
         //商户订单号
         $out_trade_no = $_POST['out_trade_no'];
         //支付宝交易号
         $trade_no = $_POST['trade_no'];
         //交易状态
         $trade_status = $_POST['trade_status'];
         if ($_POST['trade_status'] == 'TRADE_FINISHED') {
             //判断该笔订单是否在商户网站中已经做过处理
             //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
             //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
             //如果有做过处理,不执行商户的业务程序
             //注意:
             //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
             //调试用,写文本函数记录程序运行情况是否正常
             //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
         } else {
             if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                 //判断该笔订单是否在商户网站中已经做过处理
                 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
                 //如果有做过处理,不执行商户的业务程序
                 //注意:
                 //付款完成后,支付宝系统发送该交易状态通知
                 //调试用,写文本函数记录程序运行情况是否正常
                 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
             }
         }
         //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
         echo "success";
         //请不要修改或删除
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     } else {
         //验证失败
         echo "fail";
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
 }
Example #13
0
 function notifyUrl()
 {
     $aliPayConfig = C('aliPayConfig');
     $aliPayNotify = new AlipayNotify($aliPayConfig);
     $verify_result = $aliPayNotify->verifyNotify();
     $_POST = $this->zaddslashes($_POST);
     if ($verify_result) {
         //logResult(var_export($_POST, true));
         //验证成功
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //请在这里加上商户的业务逻辑程序代
         //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
         //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
         $out_trade_no = $_POST['out_trade_no'];
         //获取订单号
         $trade_no = $_POST['trade_no'];
         //获取支付宝交易号
         $total_fee = $_POST['total_fee'];
         //获取总价格
         if ($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') {
             //交易成功结束
             //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
             //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
             //如果有做过处理,不执行商户的业务程序
             echo 'success';
             //请不要修改或删除
             //调试用,写文本函数记录程序运行情况是否正常
             //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
         } else {
             $saveData['status'] = 1;
             $saveData['alipay_No'] = $trade_no;
             $orderCondition['order_No'] = array('eq', $out_trade_no);
             $orderInfo = $this->payModel->getOrderData($orderCondition);
             $points = explode('-~-', $orderInfo['points']);
             $this->payModel->getSaveUserSumPointsStatus(intval($orderInfo['id']), array_sum($points));
             $status = $this->payModel->getSaveOrderDataStatus(intval($orderInfo['id']), $saveData);
             //logResult(var_export($_GET, true));
             if ($status) {
                 $this->changeGoodsInventory($orderInfo);
                 echo 'success';
             } else {
                 echo 'fail';
             }
         }
         //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     } else {
         //验证失败
         echo 'fail';
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
 }
Example #14
0
 public function alipay_notify($post)
 {
     require_once "lib/alipay_notify.class.php";
     $this->alipay_config['cacert'] = $this->cacert;
     $alipayNotify = new AlipayNotify($this->alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         return $post['trade_status'];
     } else {
         return "error";
     }
 }
Example #15
0
 public function notifyVerify()
 {
     require_once "alipay/alipay_notify.class.php";
     $alipayNotify = new AlipayNotify($this->_config);
     $verify_result = $alipayNotify->verifyNotify();
     //验证
     if ($verify_result) {
         return $_POST;
     } else {
         return false;
     }
 }
Example #16
0
 public function verifyNotify()
 {
     $basePath = base_path();
     require_once $basePath . "/vendor/alipay/alipay.config.php";
     require_once $basePath . "/vendor/alipay/lib/alipay_notify.class.php";
     $alipayNotify = new AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if (!$verify_result) {
         throw new Exception("支付宝验证失败", 9001);
     } else {
         return true;
     }
 }
 /**
  * 回调地址
  */
 public function callback()
 {
     require_once APP_PATH . "SDK/Payment/alipay_server/lib/alipay_notify.class.php";
     //计算得出通知验证结果
     $alipayNotify = new \AlipayNotify($this->alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //请在这里加上商户的业务逻辑程序代
         //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
         //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
         //商户订单号
         $out_trade_no = $_POST['out_trade_no'];
         M('test')->where(array('order' => $out_trade_no))->save(array('content' => json_encode(I()), 'pay_time' => time()));
         //支付宝交易号
         $trade_no = $_POST['trade_no'];
         //交易状态
         $trade_status = $_POST['trade_status'];
         if ($_POST['trade_status'] == 'TRADE_FINISHED') {
             //判断该笔订单是否在商户网站中已经做过处理
             //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
             //如果有做过处理,不执行商户的业务程序
             //注意:
             //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
             //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
             //调试用,写文本函数记录程序运行情况是否正常
             //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
         } else {
             if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                 //判断该笔订单是否在商户网站中已经做过处理
                 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                 //如果有做过处理,不执行商户的业务程序
                 //注意:
                 //付款完成后,支付宝系统发送该交易状态通知
                 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
                 //调试用,写文本函数记录程序运行情况是否正常
                 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
             }
         }
         //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
         echo "success";
         //请不要修改或删除
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     } else {
         //验证失败
         echo "fail";
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
 }
Example #18
0
 function notifyurl()
 {
     /*
     同理去掉以下两句代码;
     */
     //require_once("alipay.config.php");
     //require_once("lib/alipay_notify.class.php");
     //这里还是通过C函数来读取配置项,赋值给$alipay_config
     $alipay_config = C('alipay_config');
     //计算得出通知验证结果
     $alipayNotify = new \AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
         $out_trade_no = $_POST['out_trade_no'];
         //商户订单号
         $trade_no = $_POST['trade_no'];
         //支付宝交易号
         $trade_status = $_POST['trade_status'];
         //交易状态
         $total_fee = $_POST['total_fee'];
         //交易金额
         $notify_id = $_POST['notify_id'];
         //通知校验ID。
         $notify_time = $_POST['notify_time'];
         //通知的发送时间。格式为yyyy-MM-dd HH:mm:ss。
         $buyer_email = $_POST['buyer_email'];
         //买家支付宝帐号;
         $parameter = array("out_trade_no" => $out_trade_no, "trade_no" => $trade_no, "total_fee" => $total_fee, "trade_status" => $trade_status, "notify_id" => $notify_id, "notify_time" => $notify_time, "buyer_email" => $buyer_email);
         if ($_POST['trade_status'] == 'TRADE_FINISHED') {
             //
         } else {
             if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                 if (!checkorderstatus($out_trade_no)) {
                     orderhandle($parameter);
                     //进行订单处理,并传送从支付宝返回的参数;
                 }
             }
         }
         echo "success";
         //请不要修改或删除
     } else {
         //验证失败
         echo "fail";
     }
 }
 public function notify()
 {
     require_once './Application/Recharge/Lib/Alipay/alipay.config.php';
     require_once './Application/Recharge/Lib/Alipay/lib/alipay_notify.class.php';
     $alipayNotify = new \AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         $record['body'] = I('post.body', '未获取', 'op_t');
         $record['buyer_email'] = I('post.buyer_email', '未获取', 'op_t');
         $record['buyer_id'] = I('post.buyer_id', '未获取', 'op_t');
         $record['exterface'] = I('post.exterface', '未获取', 'op_t');
         $record['is_success'] = I('post.is_success', '未获取', 'op_t');
         $record['notify_id'] = I('post.notify_id', '未获取', 'op_t');
         $record['notify_time'] = I('post.notify_time', '0', 'strtotime');
         $record['notify_type'] = I('post.notify_type', '未获取', 'op_t');
         $record['out_trade_no'] = I('post.out_trade_no', '未获取', 'op_t');
         $record['payment_type'] = I('post.payment_type', '未获取', 'op_t');
         $record['seller_email'] = I('post.seller_email', '未获取', 'op_t');
         $record['seller_id'] = I('post.seller_id', '未获取', 'op_t');
         $record['subject'] = I('post.subject', '未获取', 'op_t');
         $record['total_fee'] = I('post.total_fee', '未获取', 'op_t');
         $record['trade_no'] = I('post.trade_no', '未获取', 'op_t');
         $record['trade_status'] = I('post.trade_status', '未获取', 'op_t');
         $record['sign'] = I('post.sign', '未获取', 'op_t');
         $record['sign_type'] = I('post.sign', '未获取', 'op_t');
         //商户订单号
         $order_id = $record['out_trade_no'];
         $alipayRecordModel = M('recharge_record_alipay');
         if (!($rs = $alipayRecordModel->add($record))) {
             return '失败——保存支付结果失败。请联系管理员。';
             /*                $this->error('保存支付结果失败。请联系管理员。');*/
         }
         $record['record_id'] = $rs;
         $link = M('order_link')->where(array('order_id' => $order_id))->find();
         $result = R(ucfirst($link['app']) . '/Pay/afterPayAlipay', array('record' => $record), 'Widget');
         if ($result) {
             M('order_link')->where(array('order_id' => $order_id))->setField('method', 'alipay');
             exit($result);
         } else {
             exit('error');
         }
     } else {
         exit('error');
     }
 }
Example #20
0
 public function aliNotify()
 {
     require_once app_path() . "/Tool/alipay/alipay.config.php";
     require_once app_path() . "/Tool/alipay/lib/alipay_notify.class.php";
     //计算得出通知验证结果
     $alipayNotify = new \AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         $doc = new \DOMDocument();
         if ($alipay_config['sign_type'] == 'MD5') {
             $doc->loadXML($_POST['notify_data']);
         }
         if ($alipay_config['sign_type'] == '0001') {
             $doc->loadXML($alipayNotify->decrypt($_POST['notify_data']));
         }
         if (!empty($doc->getElementsByTagName("notify")->item(0)->nodeValue)) {
             //商户订单号
             $out_trade_no = $doc->getElementsByTagName("out_trade_no")->item(0)->nodeValue;
             //支付宝交易号
             $trade_no = $doc->getElementsByTagName("trade_no")->item(0)->nodeValue;
             //交易状态
             $trade_status = $doc->getElementsByTagName("trade_status")->item(0)->nodeValue;
             if ($trade_status == 'TRADE_FINISHED') {
                 Log::info('支付完成');
                 echo "success";
                 //请不要修改或删除
             } else {
                 if ($trade_status == 'TRADE_SUCCESS') {
                     // 修改用户的订单状态
                     Log::info('支付成功');
                     $order = Order::where('order_no', $out_trade_no)->first();
                     $order->status = 2;
                     $order->save();
                     echo "success";
                     //请不要修改或删除
                 }
             }
         }
     } else {
         //验证失败
         Log::info('支付验证失败');
         echo "fail";
     }
 }
 function notifyurl()
 {
     $alipay_config = C('alipay_config');
     //计算得出通知验证结果
     $alipayNotify = new AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
         $out_trade_no = $_POST['out_trade_no'];
         //商户订单号
         $trade_no = $_POST['trade_no'];
         //支付宝交易号
         $trade_status = $_POST['trade_status'];
         //交易状态
         $total_fee = $_POST['total_fee'];
         //交易金额
         $notify_id = $_POST['notify_id'];
         //通知校验ID。
         $notify_time = $_POST['notify_time'];
         //通知的发送时间。格式为yyyy-MM-dd HH:mm:ss。
         $buyer_email = $_POST['buyer_email'];
         //买家支付宝帐号;
         $parameter = array("out_trade_no" => $out_trade_no, "trade_no" => $trade_no, "total_fee" => $total_fee, "trade_status" => $trade_status, "notify_id" => $notify_id, "notify_time" => $notify_time, "buyer_email" => $buyer_email);
         //file_put_contents("/index/paylog.txt",$parameter,FILE_APPEND);
         if ($_POST['trade_status'] == 'TRADE_FINISHED') {
             //
         } else {
             if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                 if (!checkorderstatus($out_trade_no)) {
                     orderhandle($parameter);
                     //进行订单处理,并传送从支付宝返回的参数;
                 }
             }
         }
         echo "success";
         //请不要修改或删除
     } else {
         //验证失败
         echo "fail";
     }
 }
Example #22
0
 /**
  * 获取notify信息
  */
 public function getNotifyInfo($payment_config)
 {
     $alipay_config['partner'] = $payment_config['alipay_partner'];
     $alipay_config['private_key_path'] = 'key/rsa_private_key.pem';
     $alipay_config['ali_public_key_path'] = 'key/alipay_public_key.pem';
     $alipay_config['sign_type'] = strtoupper('RSA');
     $alipay_config['input_charset'] = strtolower('utf-8');
     $alipay_config['cacert'] = getcwd() . '\\cacert.pem';
     $alipay_config['transport'] = 'http';
     require_once BASE_PATH . DS . 'api/payment/alipay2/lib/alipay_notify.class.php';
     //计算得出通知验证结果
     $alipayNotify = new AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         if ($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') {
             return array('out_trade_no' => $_POST['out_trade_no'], 'trade_no' => $_POST['trade_no']);
         }
     }
     return false;
 }
Example #23
0
 public function notify()
 {
     require_once ROOT . "/libs/alipay_wap_lib/alipay_notify.class.php";
     $alipayNotify = new AlipayNotify($this->alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     $ret = array();
     if ($verify_result) {
         $out_trade_no = $_POST['out_trade_no'];
         $trade_no = $_POST['trade_no'];
         $trade_status = $_POST['trade_status'];
         if ($trade_status == 'TRADE_SUCCESS' || $trade_status == 'TRADE_FINISHED') {
             $ret["result"] = "SUCCESS";
             $ret["trade_no"] = $trade_no;
         } else {
             $ret["result"] = "FAIL";
         }
     } else {
         $ret["result"] = "FAIL";
     }
     return $ret;
 }
Example #24
0
 public function notify()
 {
     $alipay_config = $this->alipay_config;
     $alipayNotify = new AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功——
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //请在这里加上商户的业务逻辑程序代
         //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
         //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
         //商户订单号
         $out_trade_no = $_POST['out_trade_no'];
         //支付宝交易号
         $trade_no = $_POST['trade_no'];
         //交易状态
         $trade_status = $_POST['trade_status'];
         if ($_POST['trade_status'] == 'TRADE_FINISHED') {
             logResult("这代表单已经处理过了");
         } else {
             if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                 $jsAPInotify = D('Alipay');
                 //logResult(serialize($_POST));
                 $res = $jsAPInotify->alipayNotifyUpO($_POST['out_trade_no']);
                 if ($res) {
                     echo "success";
                 }
                 logResult('单号:' . $_POST['out_trade_no'] . "--交易成功了。");
             }
         }
         // echo "success";		//请不要修改或删除
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     } else {
         logResult("这说明验证失败了");
         //验证失败
         echo "fail";
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
 }
Example #25
0
 public function notifyurl()
 {
     //这里还是通过C函数来读取配置项,赋值给$alipay_config
     $alipay_config = C('alipay_config');
     //计算得出通知验证结果
     $alipayNotify = new \AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         if ($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') {
             //
             $order_sn = $_POST['out_trade_no'];
             //商户订单号
             $trade_no = $_POST['trade_no'];
             $map['order_sn'] = $order_sn;
             $reinfo = M('Recorder')->where($map)->find();
             if ($reinfo['status'] == '0') {
                 $data['trade_no'] = $trade_no;
                 //支付宝交易号
                 $data['status'] = '1';
                 $res = M('Recorder')->where($map)->save($data);
                 $umap['userid'] = $reinfo['userid'];
                 $ures = M('Users')->where($umap)->setInc('balance', $reinfo['point']);
                 //$ures = M('Users')->query("UPDATE `cly_users` SET `balance`=balance+{$reinfo['point']} WHERE ( `userid` = {$reinfo['userid']} )");
                 D('Pointlog')->pointlog($reinfo['userid'], $reinfo['point'], '1', '充值共享豆');
                 echo "success";
                 exit;
             } else {
                 echo "success";
                 exit;
             }
         }
         echo "success";
         exit;
         //请不要修改或删除
     } else {
         //验证失败
         echo "fail";
         exit;
     }
 }
Example #26
0
 public function index()
 {
     $alipay_config = alipay_config();
     require_once "application/third_party/alipay/lib/alipay_notify.class.php";
     $alipayNotify = new AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     $result = false;
     if ($verify_result) {
         $out_trade_no = $_POST['out_trade_no'];
         $trade_no = $_POST['trade_no'];
         $trade_status = $_POST['trade_status'];
         if ($_POST['trade_status'] == 'TRADE_FINISHED') {
             $result = $this->Morder->updatePaymentStatus($out_trade_no);
             if (!$result) {
                 logResult('update payment error:' . $out_trade_no . "\\n");
             }
             logResult($out_trade_no . " " . $trade_no . " " . $trade_status . "\\n");
         } else {
             if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                 $result = $this->Morder->updatePaymentStatus($out_trade_no);
                 if (!$result) {
                     logResult('update payment error:' . $out_trade_no . "\\n");
                 }
                 logResult($out_trade_no . " " . $trade_no . " " . $trade_status . "\\n");
             }
         }
         if ($result) {
             echo "success";
         } else {
             echo 'fail';
         }
     } else {
         echo "fail";
         logResult("notify fail out_trade_no:" . $_POST['out_trade_no'] . ' trade_no:' . $_POST['trade_no'] . ' trade_status:' . $_POST['trade_status']);
         //if($_POST['trade_status'] == 'TRADE_SUCCESS')
         //    logPayError();
     }
 }
 public function notify_url()
 {
     require_once $this->base_path . 'lib/alipay_notify.class.php';
     $_POST['notify_data'] = htmlspecialchars_decode($_POST['notify_data']);
     $from = htmlentities($_GET['from']);
     $alipayNotify = new AlipayNotify($this->alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         $doc = new DOMDocument();
         if ($this->alipay_config['sign_type'] == 'MD5') {
             $doc->loadXML($_POST['notify_data']);
         }
         if ($this->alipay_config['sign_type'] == '0001') {
             $doc->loadXML($alipayNotify->decrypt($_POST['notify_data']));
         }
         if (!empty($doc->getElementsByTagName('notify')->item(0)->nodeValue)) {
             $out_trade_no = $doc->getElementsByTagName('out_trade_no')->item(0)->nodeValue;
             $trade_no = $doc->getElementsByTagName('trade_no')->item(0)->nodeValue;
             $trade_status = $doc->getElementsByTagName('trade_status')->item(0)->nodeValue;
             if ($trade_status == 'TRADE_FINISHED') {
                 echo 'success';
             } else {
                 if ($trade_status == 'TRADE_SUCCESS') {
                     $payHandel = new payHandle($this->token, $from, 'alipay');
                     $orderInfo = $payHandel->beforePay($out_trade_no);
                     if (empty($orderInfo['paid'])) {
                         $orderInfo = $payHandel->afterPay($out_trade_no, $trade_no);
                         $url = C('site_url') . '/index.php?g=Wap&m=' . $from . '&a=payReturn&token=' . $orderInfo['token'] . '&wecha_id=' . $orderInfo['wecha_id'] . '&rget=1&orderid=' . $out_trade_no;
                         file_get_contents($url);
                     }
                     echo 'success';
                 }
             }
         }
     } else {
         echo 'fail';
     }
 }
Example #28
0
 public function notify()
 {
     require_once ROOT . "/libs/alipay_lib/alipay_notify.class.php";
     $alipayNotify = new AlipayNotify($this->alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     $ret = array();
     if ($verify_result) {
         $doc = new DOMDocument();
         if ($this->alipay_config['sign_type'] == 'MD5') {
             $doc->loadXML($_POST['notify_data']);
         }
         if ($this->alipay_config['sign_type'] == '0001') {
             $doc->loadXML($alipayNotify->decrypt($_POST['notify_data']));
         }
         if (!empty($doc->getElementsByTagName("notify")->item(0)->nodeValue)) {
             $out_trade_no = $doc->getElementsByTagName("out_trade_no")->item(0)->nodeValue;
             $trade_no = $doc->getElementsByTagName("trade_no")->item(0)->nodeValue;
             $trade_status = $doc->getElementsByTagName("trade_status")->item(0)->nodeValue;
             $ret["out_trade_no"] = $out_trade_no;
             $ret["trade_no"] = $trade_no;
             if ($trade_status == 'TRADE_SUCCESS' || $trade_status == 'TRADE_FINISHED') {
                 $ret["result"] = "SUCCESS";
             } else {
                 $ret["result"] = "FAIL";
             }
         } else {
             $ret["result"] = "FAIL";
         }
     } else {
         $ret["result"] = "FAIL";
     }
     return $ret;
 }
Example #29
0
 function notify_url()
 {
     require_once "alipay/alipay.config.php";
     require_once "alipay/lib/alipay_notify.class.php";
     $alipay_config_temp = $this->tickets->select('payment', array('name' => 'alipay'));
     $alipay_con = $alipay_config_temp[0];
     $alipay_config['partner'] = $alipay_con->app_id;
     $alipay_config['key'] = $alipay_con->app_secret;
     //计算得出通知验证结果
     $alipayNotify = new AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         //请在这里加上商户的业务逻辑程序代
         //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
         //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
         //商户订单号
         $out_trade_no = $_POST['out_trade_no'];
         //支付宝交易号
         $trade_no = $_POST['trade_no'];
         //交易状态
         $trade_status = $_POST['trade_status'];
         if ($_POST['trade_status'] == 'TRADE_FINISHED') {
             //判断该笔订单是否在商户网站中已经做过处理
             //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
             //如果有做过处理,不执行商户的业务程序
             //注意:
             //该种交易状态只在两种情况下出现
             //1、开通了普通即时到账,买家付款成功后。
             //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
             //调试用,写文本函数记录程序运行情况是否正常
             //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
         } else {
             if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                 $this->common->change_order_status($out_trade_no);
                 //判断该笔订单是否在商户网站中已经做过处理
                 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                 //如果有做过处理,不执行商户的业务程序
                 //注意:
                 //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。
                 //调试用,写文本函数记录程序运行情况是否正常
                 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
             }
         }
         //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
         echo "success";
         //请不要修改或删除
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     } else {
         //验证失败
         echo "fail";
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
 }
Example #30
0
 * 版本:3.3
 * 日期:2012-07-23
 * 说明:
 * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
 *************************页面功能说明*************************
 * 创建该页面文件时,请留心该页面文件中无任何HTML代码及空格。
 * 该页面不能在本机电脑测试,请到服务器上做测试。请确保外部可以访问该页面。
 * 该页面调试工具请使用写文本函数logResult,该函数已被默认关闭,见alipay_notify_class.php中的函数verifyNotify
 * 如果没有收到该页面返回的 success 信息,支付宝会在24小时内按一定的时间策略重发通知
 */
require_once "application/config/alipay.config.php";
require_once "application/libraries/oldalipay/alipay_notify.class.php";
//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();
if ($verify_result) {
    //验证成功
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //请在这里加上商户的业务逻辑程序代
    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
    //商户订单号
    $out_trade_no = $_POST['out_trade_no'];
    //支付宝交易号
    $trade_no = $_POST['trade_no'];
    //交易状态
    $trade_status = $_POST['trade_status'];
    ///////////////////////小伟 自己的逻辑///////////////////////////////////////////////////////
    require_once 'application/controllers/Order.php';
    $OrderController = new Order();