public function actionIndex()
 {
     U::W([__METHOD__, $_GET, $_POST]);
     //$this->layout = false;
     $this->layout = 'wapy';
     $alipay_config = Alipay::getAlipayConfig();
     $alipayNotify = new AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyReturn();
     if (!$verify_result) {
         Alipay::logResult(['Alipaycallback error', __METHOD__, $_GET, $_POST]);
         //return 'Alipaycallback error';
     }
     $result = $_GET['result'];
     if ($result != 'success') {
         Alipay::logResult(['Pay error', __METHOD__, $_GET, $_POST]);
         return 'Pay error';
     }
     $oid = $_GET['out_trade_no'];
     $model = MOrder::findOne($oid);
     if ($model === null) {
         U::W(['Invalid oid', $_GET, $_POST]);
         return "Invalid oid";
     }
     $model->pay_kind = MOrder::PAY_KIND_ALIWAP;
     $model->aliwap_trade_no = $_GET['trade_no'];
     $model->status = MOrder::STATUS_SUCCEEDED;
     if (!$model->save(false)) {
         U::W(['save db error', $_GET, $_POST, $model->getErrors()]);
         return 'system error';
     }
     //return 'Pay OK';
     return $this->render('index', ['gh_id' => $model->gh_id, 'openid' => $model->openid]);
 }
 public function actionIndex()
 {
     U::W([__METHOD__, $_GET, $_POST]);
     $this->layout = false;
     $alipay_config = Alipay::getAlipayConfig();
     $alipayNotify = new AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyNotify();
     if (!$verify_result) {
         Alipay::logResult(['Alipaynotify sign error', __METHOD__, $_GET, $_POST]);
         return "fail";
     }
     if ($alipay_config['sign_type'] == 'MD5') {
         $respObject = @simplexml_load_string($_POST['notify_data']);
     } else {
         if ($alipay_config['sign_type'] == '0001') {
             $respObject = @simplexml_load_string($alipayNotify->decrypt($_POST['notify_data']));
         } else {
             Alipay::logResult(['Alipaynotify sign_type error', __METHOD__, $_GET, $_POST]);
         }
     }
     $arr = json_decode(json_encode($respObject), true);
     U::W($arr);
     $oid = $arr['out_trade_no'];
     $model = MOrder::findOne($oid);
     if ($model === null) {
         U::W(['Invalid oid', $_GET, $_POST, $arr]);
         return "success";
     }
     $model->pay_kind = MOrder::PAY_KIND_ALIWAP;
     $model->aliwap_trade_no = $arr['trade_no'];
     $model->aliwap_total_fee = $arr['total_fee'];
     $model->aliwap_trade_status = $arr['trade_status'];
     $model->aliwap_buyer_email = $arr['buyer_email'];
     $model->aliwap_quantity = $arr['quantity'];
     $model->aliwap_gmt_payment = $arr['gmt_payment'];
     if ($arr['trade_status'] == 'TRADE_FINISHED' || $arr['trade_status'] == 'TRADE_SUCCESS') {
         $model->status = MOrder::STATUS_SUCCEEDED;
     } else {
         U::W(['trade_status is not TRADE_FINISHED', $_GET, $_POST, $arr]);
     }
     if (!$model->save(false)) {
         U::W(['save db error', $_GET, $_POST, $arr, $model->getErrors()]);
     }
     return "success";
 }
 public function NotifyProcess($data, &$msg)
 {
     //U::W([__METHOD__, $data, $msg]);
     $notfiyOutput = array();
     if (!array_key_exists("transaction_id", $data)) {
         $msg = "输入参数不正确";
         return false;
     }
     if (!$this->Queryorder($data["transaction_id"])) {
         $msg = "订单查询失败";
         return false;
     }
     $order = MOrder::findOne($data["out_trade_no"]);
     $status_old = $order->status;
     $pay_kind_old = $order->pay_kind;
     $order->status = MOrder::STATUS_PAID;
     $order->partner = $data['mch_id'];
     $order->time_end = $data['time_end'];
     $order->total_fee = $data['total_fee'];
     $order->transaction_id = $data['transaction_id'];
     $order->appid_recv = $data['appid'];
     $order->openid_recv = $data['openid'];
     $order->issubscribe_recv = $data['is_subscribe'];
     $order->pay_kind = MOrder::PAY_KIND_WECHAT;
     if ($order->save(false)) {
         $orderTrail = new MOrderTrail();
         $orderTrail->oid = $order->oid;
         $orderTrail->status_old = $status_old;
         $orderTrail->status_new = $order->status;
         $orderTrail->pay_kind_old = $pay_kind_old;
         $orderTrail->pay_kind_new = $order->pay_kind;
         $orderTrail->save(false);
     }
     return true;
 }
Beispiel #4
0
 protected function findModel($id)
 {
     if (($model = MOrder::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
Beispiel #5
0
 public function actionClientOrder($gh_id, $openid, $backwards = true, $pop = false)
 {
     if (!$backwards) {
         \app\models\utils\BrowserHistory::delete($gh_id, $openid);
         \app\models\utils\BrowserHistory::push($gh_id, $openid);
     } else {
         if ($pop) {
             \app\models\utils\BrowserHistory::pop($gh_id, $openid);
         } else {
             \app\models\utils\BrowserHistory::push($gh_id, $openid);
         }
     }
     $wx_user = \app\models\MUser::findOne(['gh_id' => $gh_id, 'openid' => $openid]);
     $this->layout = false;
     $office_id = $_GET['office_id'];
     $office = MOffice::findOne(['office_id' => $office_id]);
     $staff_id = $_GET['staff_id'];
     $staff = MStaff::findOne(['staff_id' => $staff_id]);
     $oid = $_GET['oid'];
     $order = MOrder::findOne(['oid' => $oid]);
     return $this->render('client-order', ['wx_user' => $wx_user, 'backwards' => $backwards, 'office' => $office, 'staff' => $staff, 'order' => $order]);
 }
Beispiel #6
0
 public function actionOrderinfotest()
 {
     $this->layout = 'wapy';
     $gh_id = U::getSessionParam('gh_id');
     $openid = U::getSessionParam('openid');
     $oid = '55306A960191B';
     $model = MOrder::findOne($oid);
     $item = MItem::findOne(['gh_id' => $gh_id, 'cid' => $model->cid]);
     $input = new WxPayUnifiedOrder();
     $input->SetBody("test");
     $input->SetAttach("test");
     $input->SetOut_trade_no(WxPayConfig::MCHID . date("YmdHis"));
     $input->SetTotal_fee("1");
     $input->SetTime_start(date("YmdHis"));
     $input->SetTime_expire(date("YmdHis", time() + 600));
     $input->SetGoods_tag("test");
     $input->SetNotify_url("http://wosotech.com/wx/web/wxpaynotify.php");
     $input->SetTrade_type("JSAPI");
     $input->SetOpenid($openid);
     $unifiedOrder = WxPayApi::unifiedOrder($input);
     U::W($unifiedOrder);
     $jsApiParameters = $this->GetJsApiParameters($unifiedOrder);
     U::W($jsApiParameters);
     return $this->render('orderinfo', ['gh_id' => $gh_id, 'openid' => $openid, 'model' => $model, 'item' => $item, 'jsApiParameters' => $jsApiParameters]);
 }
Beispiel #7
0
 static function getItemTitle($oid)
 {
     $order = MOrder::findOne(['oid' => $oid]);
     return $order->title;
 }