初始化项目:添加后端代码、ThinkPHP框架、前端资源
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
namespace app\index\controller;
|
||||
|
||||
use app\common\controller\Frontend;
|
||||
use app\common\model\order\Order;
|
||||
|
||||
class Alipay extends Frontend
|
||||
{
|
||||
protected $noNeedLogin = ['*'];
|
||||
protected $noNeedRight = '*';
|
||||
protected $layout = '';
|
||||
|
||||
/**
|
||||
* 支付宝支付页面
|
||||
* @return void
|
||||
*/
|
||||
public function pay()
|
||||
{
|
||||
$orderNo = $this->request->param('order_no', '');
|
||||
|
||||
if (empty($orderNo)) {
|
||||
return $this->errorPage('订单号不能为空');
|
||||
}
|
||||
|
||||
$order = Order::where('order_no', $orderNo)->find();
|
||||
|
||||
if (!$order) {
|
||||
return $this->errorPage('订单不存在');
|
||||
}
|
||||
|
||||
if ($order->status != \app\common\constant\order\Status::STATUS_UNPAID) {
|
||||
return $this->errorPage('当前订单状态不支持付款');
|
||||
}
|
||||
|
||||
try {
|
||||
$alipayConfig = \app\common\model\config\System::getConfig('alipay');
|
||||
if (!$alipayConfig || empty($alipayConfig['app_id'])) {
|
||||
return $this->errorPage('支付宝支付未配置');
|
||||
}
|
||||
|
||||
$notify_url = MODULE_URL . '/api/pay/notifyx/pay_type/alipay/platform/url/open_id//uniacid/' . UNIACID;
|
||||
|
||||
$userAgent = strtolower($this->request->server('HTTP_USER_AGENT', ''));
|
||||
$isMobile = preg_match('/(mobile|android|iphone|ipad|ipod|windows phone)/i', $userAgent);
|
||||
$platform = $isMobile ? 'url' : 'pc';
|
||||
|
||||
$pay = new \app\common\library\pay\PayService('alipay', $platform, $notify_url);
|
||||
|
||||
$domain = $this->request->domain();
|
||||
$uniacid = UNIACID;
|
||||
$order_data = [
|
||||
'out_trade_no' => $order->order_no,
|
||||
'total_amount' => $order->real_price,
|
||||
'subject' => '商城订单支付',
|
||||
'return_url' => $domain . '/index/alipay/return?order_no=' . $orderNo . '&i=' . $uniacid,
|
||||
];
|
||||
|
||||
if ($isMobile) {
|
||||
$order_data['quit_url'] = $domain . '/index.php?route=index&i=' . $uniacid;
|
||||
}
|
||||
|
||||
$result = $pay->create($order_data);
|
||||
$html = $result->getContent();
|
||||
|
||||
$pay_url = $this->request->root(true) . '/index/alipay/pay?order_no=' . $orderNo;
|
||||
|
||||
$this->view->assign('form', $html);
|
||||
$this->view->assign('pay_url', $pay_url);
|
||||
|
||||
return $this->view->fetch();
|
||||
} catch (\Exception $e) {
|
||||
return $this->errorPage('支付创建失败:' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付宝支付返回
|
||||
* @return void
|
||||
*/
|
||||
public function return()
|
||||
{
|
||||
$orderNo = $this->request->param('order_no', '');
|
||||
$uniacid = $this->request->param('i', UNIACID);
|
||||
$domain = $this->request->domain();
|
||||
|
||||
if (!empty($orderNo)) {
|
||||
$this->redirect($domain . '/index.php?route=index&i=' . $uniacid . '#/pages/order/detail/detail?order_no=' . $orderNo);
|
||||
} else {
|
||||
$this->redirect($domain . '/index.php?route=index&i=' . $uniacid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 错误页面
|
||||
* @param string $msg 错误信息
|
||||
* @return mixed
|
||||
*/
|
||||
protected function errorPage($msg)
|
||||
{
|
||||
$this->view->assign('msg', $msg);
|
||||
return $this->view->fetch('error_page');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user