zhangdehua 1 年間 前
コミット
9876ba9832

+ 1 - 1
app/api/model/Cart.php

@@ -14,7 +14,7 @@ namespace app\api\model;
 
 use app\api\model\Goods as GoodsModel;
 use app\api\model\GoodsSku as GoodsSkuModel;
-use app\api\service\User as UserService;
+use app\index\service\User as UserService;
 use app\common\model\Cart as CartModel;
 use app\common\enum\goods\Status as GoodsStatusEnum;
 use app\common\exception\BaseException;

+ 1 - 1
app/index/common.php

@@ -18,7 +18,7 @@ declare (strict_types = 1);
  */
 function getPlatform()
 {
-    static $value = null;
+    static $value = 'H5';
     // 从header中获取 channel
     empty($value) && $value = request()->header('platform');
     // 调试模式下可通过param中获取

+ 44 - 11
app/index/controller/Cart.php

@@ -31,18 +31,26 @@ class Cart extends Controller
      */
     public function shoppingCart()
     {
-//        $userId = Session::get('user_id');
-//        if (empty($userId)){
-//            return view('passport/login');
-//        }
+        $userId = Session::get('user_id');
+        if (empty($userId)) {
+            return view('passport/login');
+        }
 
         // 购物车商品列表
         $service = new CartService;
         $list = $service->getList();
         // 购物车商品总数量
         $cartTotal = (new CartModel)->getCartTotal();
+        //dd($list->toArray(),$cartTotal);
+        $user = $this->getCurrentLoginUser();
+        //dd($user->toArray());
+        $cartMoney = '0.00';
+        foreach ($list as $item) {
+            $temp = bcmul(strval($item['goods_num']), $item['goods']['goods_price_min'], 2);
+            $cartMoney = bcadd($cartMoney, $temp, 2);
+        }
 
-        return view('shoppingCart', ['list' => $list, 'cartTotal' => $cartTotal]);
+        return view('shoppingCart', ['list' => $list, 'cartTotal' => $cartTotal,'cartMoney'=>$cartMoney, 'points' => $user['points']]);
     }
 
     /**
@@ -81,7 +89,7 @@ class Cart extends Controller
      * @param int $goodsId 商品ID
      * @param string $goodsSkuId 商品sku索引
      * @param int $goodsNum 商品数量
-     * @return Json
+     * @return Json |\think\response\View
      * @throws BaseException
      * @throws \think\db\exception\DataNotFoundException
      * @throws \think\db\exception\DbException
@@ -89,6 +97,11 @@ class Cart extends Controller
      */
     public function add(int $goodsId, string $goodsSkuId, int $goodsNum): Json
     {
+        $userId = Session::get('user_id');
+        if (empty($userId)) {
+            return view('passport/login');
+        }
+
         $model = new CartModel;
         if (!$model->add($goodsId, $goodsSkuId, $goodsNum)) {
             return $this->renderError($model->getError() ?: '加入购物车失败');
@@ -103,7 +116,7 @@ class Cart extends Controller
      * @param int $goodsId 商品ID
      * @param string $goodsSkuId 商品sku索引
      * @param int $goodsNum 商品数量
-     * @return Json
+     * @return Json |\think\response\View
      * @throws BaseException
      * @throws \think\db\exception\DataNotFoundException
      * @throws \think\db\exception\DbException
@@ -111,13 +124,18 @@ class Cart extends Controller
      */
     public function update(int $goodsId, string $goodsSkuId, int $goodsNum): Json
     {
+        $userId = Session::get('user_id');
+        if (empty($userId)) {
+            return view('passport/login');
+        }
         $model = new CartModel;
         if (!$model->sUpdate($goodsId, $goodsSkuId, $goodsNum)) {
             return $this->renderError($model->getError() ?: '更新失败');
         }
         // 购物车商品总数量
-        $cartTotal = $model->getCartTotal();
-        return $this->renderSuccess(compact('cartTotal'), '更新成功');
+        //$cartTotal = $model->getCartTotal();
+        $cartMoney = $this->getCartMoney();
+        return $this->renderSuccess(compact('cartMoney'), '更新成功');
     }
 
     /**
@@ -133,7 +151,22 @@ class Cart extends Controller
             return $this->renderError($model->getError() ?: '操作失败');
         }
         // 购物车商品总数量
-        $cartTotal = $model->getCartTotal();
-        return $this->renderSuccess(compact('cartTotal'), '操作成功');
+        //$cartTotal = $model->getCartTotal();
+        $cartMoney = $this->getCartMoney();
+
+        return $this->renderSuccess(compact('cartMoney'), '操作成功');
+    }
+
+    private function getCartMoney()
+    {
+        $service = new CartService;
+        $list = $service->getList();
+        $sum = '0.00';
+        foreach ($list as $item) {
+            $temp = bcmul($item['goods_num'], $item['goods']['goods_price_min'], 2);
+            $sum = bcadd($sum, $temp, 2);
+        }
+        return $sum;
+
     }
 }

+ 253 - 0
app/index/controller/Checkout.php

@@ -0,0 +1,253 @@
+<?php
+// +----------------------------------------------------------------------
+// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
+// +----------------------------------------------------------------------
+// | Author: 萤火科技 <admin@yiovo.com>
+// +----------------------------------------------------------------------
+declare (strict_types=1);
+
+namespace app\index\controller;
+
+use app\api\controller\Controller;
+use app\api\model\Order as OrderModel;
+use app\api\service\order\PaySuccess;
+use app\api\service\User as UserService;
+use app\api\service\Cart as CartService;
+use app\api\service\order\Checkout as CheckoutService;
+use app\api\validate\order\Checkout as CheckoutValidate;
+use app\common\enum\order\PayType as OrderPayTypeEnum;
+use app\common\library\paypal\PayPal;
+use cores\exception\BaseException;
+use think\facade\Cache;
+use think\facade\Session;
+use think\response\Json;
+use think\View;
+
+/**
+ * 订单结算控制器
+ * Class Checkout
+ * @package app\api\controller
+ */
+class Checkout extends Controller
+{
+    // 结算台验证器
+    /* @var CheckoutValidate $validate */
+    private $validate;
+
+    /**
+     * 结算台订单信息
+     * @param string $mode
+     * @return Json
+     * @throws BaseException
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function order(string $mode = 'buyNow'): Json
+    {
+        if ($mode === 'buyNow') {
+            return $this->buyNow();
+        } elseif ($mode === 'cart') {
+            return $this->cart();
+        }
+        return $this->renderError('结算模式不合法');
+    }
+
+    /**
+     * 订单提交
+     * @param string $mode
+     * @return Json|\think\response\View
+     * @throws BaseException
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function submit(string $mode = 'buyNow'): Json
+    {
+        $userId = Session::get('user_id');
+        if (empty($userId)){
+            return view('passport/login');
+        }
+
+        return $this->order($mode);
+    }
+
+    /**
+     * 订单确认-立即购买
+     * @return Json
+     * @throws BaseException
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    private function buyNow(): Json
+    {
+        // 实例化结算台服务
+        $Checkout = new CheckoutService;
+        // 订单结算api参数
+        $params = $Checkout->setParam($this->getParam([
+            'goodsId' => 0,
+            'goodsSkuId' => '',
+            'goodsNum' => 0,
+        ]));
+        // 表单验证
+        if (!$this->getValidate()->scene('buyNow')->check($params)) {
+            return $this->renderError($this->getValidate()->getError(), ['isCreated' => false]);
+        }
+        // 立即购买:获取订单商品列表
+        $model = new OrderModel;
+        $goodsList = $model->getOrderGoodsListByNow(
+            (int)$params['goodsId'],
+            (string)$params['goodsSkuId'],
+            (int)$params['goodsNum']
+        );
+        // 获取订单确认信息
+        $orderInfo = $Checkout->onCheckout($goodsList);
+        if ($this->request->isGet()) {
+            return $this->renderSuccess([
+                'order' => $orderInfo,
+                'personal' => $Checkout->getPersonal(),
+                'setting' => $Checkout->getSetting(),
+            ]);
+        }
+        // 验证订单是否存在错误
+        if ($Checkout->hasError()) {
+            return $this->renderError($Checkout->getError(), ['is_created' => false]);
+        }
+        // 创建订单
+        if (!$Checkout->createOrder($orderInfo)) {
+            return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]);
+        }
+        // 构建微信支付请求
+        $payment = $model->onOrderPayment($Checkout->model, $params['payType']);
+        // 返回结算信息
+        return $this->renderSuccess([
+            'orderId' => $Checkout->model['order_id'],   // 订单id
+            'payType' => $params['payType'],            // 支付方式
+            'payment' => $payment                         // 微信支付参数
+        ]);
+    }
+
+    /**
+     * 订单确认-购物车结算
+     * @return Json
+     * @throws BaseException
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    private function cart(): Json
+    {
+        // 实例化结算台服务
+        $Checkout = new CheckoutService;
+        // 订单结算api参数
+        $params = $Checkout->setParam($this->getParam());
+        // 购物车ID集
+        //$cartIds = $this->getCartIds();//不需要接口传过来
+        $CartModel = new CartService;
+        $cartIds = $this->getCartIds();
+        // 商品结算信息
+        // 购物车商品列表
+        $goodsList = $CartModel->getOrderGoodsList($cartIds);
+        if (empty($goodsList)) {
+            return $this->renderError('请选择商品结算');
+        }
+        // 获取订单结算信息
+        $orderInfo = $Checkout->onCheckout($goodsList);
+        if ($this->request->isGet()) {
+            return $this->renderSuccess([
+                'order' => $orderInfo,
+                'personal' => $Checkout->getPersonal(),
+                'setting' => $Checkout->getSetting(),
+            ]);
+        }
+        // 验证订单是否存在错误
+        if ($Checkout->hasError()) {
+            return $this->renderError($Checkout->getError(), ['is_created' => false]);
+        }
+        // 创建订单
+        if (!$Checkout->createOrder($orderInfo)) {
+            return $this->renderError($Checkout->getError() ?: '订单创建失败');
+        }
+        // 移出购物车中已下单的商品
+        $CartModel->clear($cartIds);
+        // 构建微信支付请求
+        $payment = $Checkout->onOrderPayment();
+        // 返回状态,如果是paypal支付,需要给用户跳转页面之外,还需要轮训查询订单的支付情况,如果支付成功,则弹窗提示,超过一分钟的话,提示支付超时,请重试
+        return $this->renderSuccess([
+            'orderId' => $Checkout->model['order_id'],   // 订单id
+            'payType' => $params['payType'],  // 支付方式
+            'payment' => $payment               // 微信支付参数
+        ]);
+    }
+
+    /**
+     * @return \think\response\View
+     */
+    public function payPayExecutePay($orderNo, $token)
+    {
+        if (empty($orderNo) || empty($token)){
+            return view('payError',['notice'=>lang('login success')]);
+        }
+
+        $oriToken = Cache::get(PayPal::PRE_STR . $orderNo);
+        if ($token != $oriToken){
+            return view('payError',['notice'=>lang('login success')]);
+        }
+
+        //dd($orderNo);
+        //$paymentId = 'PAYID-MXUYFIQ9KF846046B114514M';
+        $paymentId = $this->request->param('paymentId');
+        //$token = $this->request->param('token');
+        //$PayerID = $this->request->param('PayerID');
+        $conf = config('paypal');
+        //$orderNo = '';
+        $pp = new PayPal($conf);
+        $flag = $pp->executePayment($paymentId);
+        if ($flag) {
+            $orderModel = new PaySuccess($orderNo);
+            $status = $orderModel->onPaySuccess(OrderPayTypeEnum::PAYPAL, ['transaction_id' => $paymentId]);
+            if (!$status) {
+                return view('payError',['notice'=>lang('login success')]);
+            }
+            Cache::delete(PayPal::PRE_STR . $orderNo);
+        }
+        return view('paySuccessful',['notice'=>lang('login success')]);
+    }
+
+    /**
+     * 获取结算台验证器
+     * @return CheckoutValidate
+     */
+    private function getValidate(): CheckoutValidate
+    {
+        if (!$this->validate) {
+            $this->validate = new CheckoutValidate;
+        }
+        return $this->validate;
+    }
+
+    /**
+     * 获取购物车ID集
+     * @return false|string[]
+     */
+    private function getCartIds()
+    {
+        $cartIds = $this->request->param('cartIds');
+        return explode(',', $cartIds);
+    }
+
+    /**
+     * 订单结算提交的参数
+     * @param array $define
+     * @return array
+     */
+    private function getParam(array $define = []): array
+    {
+        return array_merge($define, $this->request->param());
+    }
+}

+ 5 - 0
app/index/controller/Controller.php

@@ -108,6 +108,11 @@ class Controller extends BaseController
         return UserService::getCurrentLoginUserId();
     }
 
+    protected static function getCurrentLoginUser()
+    {
+        return UserService::getCurrentLoginUser();
+    }
+
     /**
      * 返回封装后的 API 数据到客户端
      * @param int|null $status 状态码

+ 12 - 1
app/index/service/Cart.php

@@ -40,7 +40,7 @@ class Cart extends BaseService
     {
         // 购物车列表
         $cartList = $this->getCartList($cartIds);
-        if ($cartList->isEmpty()){
+        if ($cartList->isEmpty()) {
             return [];
         }
         // 整理商品ID集
@@ -62,6 +62,17 @@ class Cart extends BaseService
         return $cartList;
     }
 
+    public function getCartIds()
+    {
+        $userId = UserService::getCurrentLoginUserId();
+        if (empty($userId))return [];
+
+        $model = new CartModel;
+        $model->where('user_id', '=', $userId)
+            ->where('is_delete', '=', 0)
+            ->select();
+    }
+
     /**
      * 获取购物车商品列表(用于订单结算台)
      * @param array $cartIds 购物车记录ID集

+ 19 - 1
app/index/service/User.php

@@ -57,6 +57,24 @@ class User extends BaseService
     }
 
     /**
+     * 获取登录用户
+     * @return UserModel|array|false
+     * @throws BaseException
+     */
+    public static function getCurrentLoginUser()
+    {
+        // 获取用户认证Token
+        if (!$userId = self::getCurrentLoginUserId()) {
+            return false;
+        }
+        // 获取用户信息
+        if (!$user = UserModel::getUserById($userId)) {
+            return false;
+        }
+        return $user;
+    }
+
+    /**
      * 验证是否已登录
      * @param bool $isForce 是否强制验证登录, 如果未登录将抛错
      * @return bool
@@ -64,7 +82,7 @@ class User extends BaseService
      */
     public static function isLogin()
     {
-        return !empty(Session::get(self::USER_TOKEN));
+        return !empty(Session::get(self::USER_ID));
     }
 
 }

+ 86 - 66
app/index/view/cart/shoppingCart.html

@@ -117,50 +117,31 @@
             <section class="productConatiner">
                 <h3 class="productModelTitle">Product</h3>
                 <div class="productList">
-                    <div class="productItem" data-id="购物车商品id1">
+                    {foreach $list as $cart}
+                    <div class="productItem" data-id="{$cart['id']}" goods-id="{$cart['goods']['goods_id']}"
+                         goods-sku-id="{$cart['goods']['skuInfo']['goods_sku_id']}">
                         <div class="productImgBox">
                             <img class="lazy" src="/assets/api/asstes/icon/transparent.png"
-                                 data-original="https://www.buranshao.com/Content/Img/iqos3duo.jpg" alt="提示信息seo"
+                                 data-original="{$cart['goods']['goods_image']}" alt="提示信息seo"
                                  title="提示信息seo">
                         </div>
                         <div class="productInfo">
                             <div class="lfBox">
-                                <h2 class="productTitle">AAAA VAPES</h2>
+                                <h2 class="productTitle">{$cart['goods']['goods_name']}</h2>
                                 <p class="specs">specs</p>
                             </div>
                             <div class="nunberBox">
                                 <p class="numberReduce">-</p>
-                                <p class="numberInput">1</p>
+                                <p class="numberInput">{$cart['goods_num']}</p>
                                 <p class="numberAdd">+</p>
                             </div>
-                            <p class="productPrice">$99.99</p>
-                            <div class="productDelete">
-                                <img src="/assets/api/asstes/icon/productDelete.png" alt="">
-                            </div>
-                        </div>
-                    </div>
-                    <div class="productItem" data-id="购物车商品id2">
-                        <div class="productImgBox">
-                            <img class="lazy" src="/assets/api/asstes/icon/transparent.png"
-                                 data-original="https://www.buranshao.com/Content/Img/iqos3duo.jpg" alt="提示信息seo"
-                                 title="提示信息seo">
-                        </div>
-                        <div class="productInfo">
-                            <div class="lfBox">
-                                <h2 class="productTitle">AAAA VAPES</h2>
-                                <p class="specs">specs</p>
-                            </div>
-                            <div class="nunberBox">
-                                <p class="numberReduce">-</p>
-                                <p class="numberInput">1</p>
-                                <p class="numberAdd">+</p>
-                            </div>
-                            <p class="productPrice">$99.99</p>
+                            <p class="productPrice">${$cart['goods']['goods_price_min']}</p>
                             <div class="productDelete">
                                 <img src="/assets/api/asstes/icon/productDelete.png" alt="">
                             </div>
                         </div>
                     </div>
+                    {/foreach}
                 </div>
             </section>
             <!-- 结算模块 -->
@@ -172,13 +153,13 @@
                 <div class="linkItem">
                     <div class="windInfoBox">
                         <p class="key">Subtotal</p>
-                        <p class="val">$99.99</p>
+                        <p class="val">${$cartMoney}</p>
                     </div>
                 </div>
                 <div class="mbItem">
                     <div class="windInfoBox">
                         <p class="key">Shipping</p>
-                        <p class="val">$99.99</p>
+                        <p class="val">$0.00</p>
                     </div>
                     <div class="windInfoBox">
                         <p class="key">Free shipping</p>
@@ -194,7 +175,7 @@
                 </div>
                 <div class="totalBox">
                     <p class="totalT">Total</p>
-                    <p class="totalVal">$99.99</p>
+                    <p class="totalVal">${$cartMoney}</p>
                 </div>
                 <div class="payPalButton">
                     <span>PayPal</span>
@@ -293,42 +274,39 @@
 <script src="/assets/api/js/jquery.lazyload.js"></script>
 <script>
     $(document).ready(function () {
-        const VAPES_TOKEN = "vapes_token"
-
-        //未登录处理
-        function isLogin() {
-            //用户token
-            const vapesToken = localStorage.getItem("vapes_token")
-            if (!vapesToken || vapesToken == "") {
-                setTimeout(() => {
-                    window.location.href = "./login.html?return=1"
-                }, 80)
-            }
-            return vapesToken && vapesToken !== "";
-        }
-
-        isLogin()
+        // const VAPES_TOKEN = "vapes_token"
+        //
+        // //未登录处理
+        // function isLogin() {
+        //     //用户token
+        //     const vapesToken = localStorage.getItem("vapes_token")
+        //     if (!vapesToken || vapesToken === "") {
+        //         setTimeout(() => {
+        //             window.location.href = "./login.html?return=1"
+        //         }, 80)
+        //     }
+        //     return vapesToken && vapesToken !== "";
+        // }
+        //
+        // isLogin();
 
         //支付方法
         const orderPayment = (params) => {
             console.log(params)
-            const vapesToken = localStorage.getItem("vapes_token");
+            //const vapesToken = localStorage.getItem("vapes_token");
             return new Promise(function (resolve, reject) {
                 $.ajax({
-                    url: "/api/checkout/submit?payType=30&mode=cart&address_id=2",
-                    method: 'POST',
+                    url: "/index/checkout/submit?payType=30&mode=cart&address_id=2",
+                    method: "POST",
                     data: JSON.stringify(params),
                     headers: {
-                        'Content-Type': 'application/json',
-                        'storeId': '10001',
-                        'platform': 'H5',
-                        'Access-Token': vapesToken,
-                        //'Authorization': `Bearer ${vapesToken}`
+                        "Content-Type": "application/json",
+                        "storeId": "10001",
+                        "platform": "H5",
+                        // "Access-Token": vapesToken
                     },
-                    dataType: 'json',
+                    dataType: "json",
                     success: function (response) {
-                        //console.log(response)
-                        //var plink = response.data.payment.approval_link;
                         resolve(response);
                     },
                     error: function (xhr, status, error) {
@@ -347,11 +325,32 @@
          */
         function productOperate(_this, type) {
             //商品id
-            const productId = _this.closest('.productItem').attr('data-id');
-            console.log(productId)
+            const productId = _this.closest(".productItem").attr("data-id");
+            const goodsId = _this.closest(".productItem").attr("goods-id");
+            const goodsSkuId = _this.closest(".productItem").attr("goods-sku-id");
+            const goodsNum = 10;
+            console.log(productId, goodsId, goodsSkuId)
             //商品增加
             if (type === "add") {
                 console.log("商品增加")
+                $.ajax({
+                    url: "/index/cart/update?goodsId=" + goodsId + "&goodsSkuId=" + goodsSkuId + "&goodsNum=" + goodsNum,
+                    method: "POST",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "storeId": "10001",
+                        "platform": "H5",
+                        // "Access-Token": vapesToken
+                    },
+                    dataType: "json",
+                    success: function (response) {
+                        resolve(response);
+                    },
+                    error: function (xhr, status, error) {
+                        reject(error);
+                    }
+                });
+
                 return
             }
             //商品减少
@@ -361,16 +360,36 @@
             }
             //商品删除
             if (type === "delete") {
+                var params = {"cartIds": [productId]}
                 console.log("商品删除")
+                $.ajax({
+                    url: "/index/cart/clear",
+                    method: "POST",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "storeId": "10001",
+                        "platform": "H5",
+                        // "Access-Token": vapesToken
+                    },
+                    data: JSON.stringify(params),
+                    dataType: "json",
+                    success: function (response) {
+                        resolve(response);
+                        window.location.href = "./shoppingCart.html"
+                    },
+                    error: function (xhr, status, error) {
+                        reject(error);
+                    }
+                });
                 return
             }
         }
 
         //支付
         $(".payPalButton").on(tap, async function () {
-            console.log('paypaing')
+            console.log("paypaing")
             const params = {
-                "cartIds": "10002",
+                //"cartIds": "10002",
                 "delivery": 10,
                 "address_id": 2
             }
@@ -378,8 +397,8 @@
             const res = await orderPayment(params)
             console.log(res)
             const {status, data} = res || {}
-            if (status === 200 || status === '200') {
-                window.open(data.payment.approval_link, '_blank');
+            if (status === 200 || status === "200") {
+                window.open(data.payment.approval_link, "_blank");
             }
         });
 
@@ -401,10 +420,11 @@
 
         //前往购物车
         $(".shoppingCartIcon").on(tap, function () {
-            const state = isLogin()
-            if (state) {
-                window.location.href = "/api/cart/myCart.html"
-            }
+            window.location.href = "./shoppingCart.html"
+
+            // const state = isLogin()
+            // if (state) {
+            // }
         });
     })
 </script>

+ 70 - 0
app/index/view/checkout/payError.html

@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>支付成功</title>
+  <style>
+    body {
+      font-family: 'Arial', sans-serif;
+      background-color: #f5f5f5;
+      color: #333;
+      margin: 0;
+      padding: 0;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      height: 100vh;
+    }
+
+    .container {
+      text-align: center;
+      padding: 20px;
+      background-color: #fff;
+      border-radius: 8px;
+      box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+      max-width: 400px;
+      width: 100%;
+    }
+
+    h1 {
+      color: #2ecc71;
+    }
+
+    p {
+      margin-bottom: 20px;
+    }
+
+    .icon {
+      font-size: 60px;
+      color: #2ecc71;
+    }
+
+    .btn {
+      display: inline-block;
+      padding: 10px 20px;
+      font-size: 16px;
+      text-decoration: none;
+      color: #fff;
+      background-color: #3498db;
+      border-radius: 5px;
+      transition: background-color 0.3s ease;
+    }
+
+    .btn:hover {
+      background-color: #2980b9;
+    }
+  </style>
+</head>
+
+<body>
+<div class="container">
+  <i class="icon">&#10004;</i>
+  <h1>{$notice}</h1>
+  <p>感谢您的支付,订单已成功处理。</p>
+  <a href="#" class="btn">返回首页</a>
+</div>
+</body>
+
+</html>

+ 1 - 1
config/app.php

@@ -13,7 +13,7 @@ return [
     // 是否启用事件
     'with_event'       => true,
     // 默认应用
-    'default_app'      => 'api',
+    'default_app'      => 'index',
     // 默认时区
     'default_timezone' => 'Asia/Shanghai',
 

+ 2 - 2
config/paypal.php

@@ -4,6 +4,6 @@ return [
     'web_hook_id' => '3NP026061E6858914',
     'client_id' => 'AS0FH780ZGtSAdpT1NTjwkFzryCPf69rZb_FR9Rt_rZdasB80cmjqTQ6CQELWiFVh_MU9e31CSnyz7Ai',
     'secret' => 'EDqRQhgLNHCb5bxld98T8-JJJZKvMIeqxudO7lMwDFOxBfy138PjM5A21FnDNyb3q4yYUh8r7Qr2BnVi',
-    'return_url' => '/api/checkout/payPayExecutePay/orderNo/%s/token/%s',//'https://lar.lmm.gold/api/index/index',//vp.com/index.php/api/checkout/payPayExecutePay/orderNo/9999
-    'cancel_url' => '/api/index/index.html',//'https://lar.lmm.gold/store/index.html',
+    'return_url' => '/index/checkout/payPayExecutePay/orderNo/%s/token/%s',//'https://lar.lmm.gold/api/index/index',//vp.com/index.php/api/checkout/payPayExecutePay/orderNo/9999
+    'cancel_url' => '/index/index/index.html',//'https://lar.lmm.gold/store/index.html',
 ];