public function callbackAlipay() { $order_no = Input::get('out_trade_no', 0); $ali_trade_no = Input::get('trade_no', ''); $ali_trade_status = Input::get('trade_status', ''); $amount = Input::get('total_fee', 0); $via_id = Input::get('buyer_id', ''); $refund_account = Input::get('buyer_email', ''); DB::beginTransaction(); try { $alipay = new Alipay(); $alipay->verifyNotify(); $transaction_id = $ali_trade_no; $orders = Order::getGroupOrdersByNo($order_no); if ($ali_trade_status == 'TRADE_FINISHED' || $ali_trade_status == 'TRADE_SUCCESS') { $u_id = 0; foreach ($orders as $key => $order) { $u_id = $order->u_id; $o_id = $order->o_id; $order->pay(Alipay::PAYMENT_TAG); $order->checkoutCarts(); } $cart = Cart::where('o_id', '=', $o_id)->where('c_status', '<>', 0)->first(); if ($cart->c_type == Cart::$TYPE_REGULAR_PRODUCT || $cart->c_type == Cart::$TYPE_FLEA_PRODUCT) { $log_cate = LogTransaction::$CATE_PRODUCT; } elseif ($cart->c_type == Cart::$TYPE_CROWD_FUNDING) { $log_cate = LogTransaction::$CATE_CROWDFUNDING; } elseif ($cart->c_type == Cart::$TYPE_AUCTION) { $log_cate = LogTransaction::$CATE_AUCTION; } else { $log_cate = 0; } //add transaction log $log = new LogTransaction(); $log->l_type = LogTransaction::$TYPE_TRADE; $log->l_cate = $log_cate; $log->l_amt = $amount; $log->from_type = LogTransaction::$OPERATOR_USER; $log->from_id = $u_id; $log->to_type = LogTransaction::$OPERATOR_QNCK; $log->to_id = 1; $log->via_type = LogTransaction::$PAYMENT_ALIPAY; $log->via_id = $via_id; $log->transaction_id = $transaction_id; $log->addLog(); if (empty($log->l_id)) { throw new Exception("添加交易记录失败", 2001); } $log_order = new LogTransactionOrders(); $log_order->l_id = $log->l_id; $log_order->o_group_number = $order_no; $log_order->refund_account = $refund_account; $log_order->save(); } DB::commit(); echo "success"; die; } catch (Exception $e) { DB::rollback(); echo "fail"; die; } exit; }
public function actionAlipayNotify() { // error_log("ok"); // error_log(print_r($_POST,true)); //ali验证不允许有多余参数 if (isset($_GET['r'])) { unset($_GET['r']); } global $sysSettings; $alipay = new Alipay($sysSettings['payment']['aliPartner'], $sysSettings['payment']['aliKey']); if ($alipay->verifyNotify()) { //验证成功 //商户订单号 $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; $order = Order::model()->findByPk($out_trade_no); $course = Course::model()->findByAttributes(array('entityId' => $order->produceEntityId)); $user = UserInfo::model()->findByPk($order->userId); if ($trade_status == 'WAIT_BUYER_PAY') { //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款 echo "success"; //请不要修改或删除 } else { if ($trade_status == 'WAIT_BUYER_CONFIRM_GOODS' || $trade_status == 'WAIT_BUYER_CONFIRM_GOODS' || $trade_status == 'TRADE_FINISHED' || $trade_status == 'TRADE_SUCCESS') { $order->status = Order::ORDER_PAID; $order->tradeNo = $trade_no; $order->save(); $member = CourseMember::model()->findByAttributes(array('userId' => Yii::app()->user->id, 'courseId' => $course->id)); if (!$member) { $member = new CourseMember(); $member->userId = $user->id; $member->courseId = $course->id; $member->arrRoles = array('student'); $member->startTime = time(); $member->save(); } else { $member->startTime = time(); $member->save(); } echo "success"; //请不要修改或删除 } else { //其他状态判断 echo "success"; } } } else { //验证失败 echo "fail"; } }