public function finalDoPay($unitePayID = null, $price) { include_once __DIR__ . '/lib/ali/alipay.php'; $config = $this->sm->get('Config'); $aliConfig = $config[getenv('APP_ENV')]['aliConfig']; $aliConfig['notify_url'] = $aliConfig['final_notify_url']; $aliConfig['return_url'] = $aliConfig['final_return_url']; $aliPayment = new \AlipayPayment($aliConfig); $subject = '支付尾款'; $orderInfo = array("out_trade_no" => $unitePayID, "subject" => $subject, "total_fee" => $price, "body" => ''); $payUrl = $aliPayment->get_html_nupost($orderInfo, 'create_direct_pay_by_user'); return $payUrl; }
public function aliSpecialNotifyAction() { include LIB . '/COM/Service/PayMod/lib/ali/alipay.php'; $request = $this->request; $SignType = $request->getPost('sign_type'); $config = $this->sm->get('Config'); $aliConfig = $config['aliConfig']; if ($SignType == 'MD5') { $aliPayment = new \AlipayPayment($aliConfig); $tmp = $aliPayment->notifyVerify(); } else { $url = "https://mapi.alipay.com/gateway.do?service=notify_verify&partner=" . $aliConfig['partner'] . "¬ify_id=" . $this->request->getPost('notify_id'); $str = file_get_contents($url); if (trim($str) == 'true') { $tmp = true; } } if ($tmp) { $outTradeNo = $request->getPost("out_trade_no"); $tradeStatus = $request->getPost("trade_status"); if ($tradeStatus == 'TRADE_FINISHED' || $tradeStatus == 'TRADE_SUCCESS' || $tradeStatus == 'WAIT_SELLER_SEND_GOODS') { try { $payDetail = $this->specialModel->select(array('unitePayID' => $outTradeNo))->current(); if ($this->siteSettings['specialMoney'] != $this->request->getPost('total_fee') || $payDetail['isPaid']) { throw new \Exception('fail'); } $this->sm->get("COM\\Service\\PayMod\\AliPay")->specialNotify($outTradeNo); $requestUri = $_SERVER['REQUEST_URI']; $data = array('money' => $request->getPost('total_fee'), 'payNotifyInfo' => $requestUri, 'postData' => json_encode($request->getPost()), 'unitePayID' => $outTradeNo, 'payType' => 2, 'type' => 3); $this->payNotifyLogModel->insert($data); $this->response->setContent('success'); } catch (\Exception $e) { $this->response->setContent('fail'); } } else { $this->response->setContent('fail'); } } else { $this->response->setContent('fail'); } return $this->response; }