|
|
@@ -87,8 +87,10 @@ class ShopController extends BaseController {
|
|
|
* @throws \yii\web\HttpException
|
|
|
*/
|
|
|
public function actionShowCart(){
|
|
|
+ // 媒体设备
|
|
|
+ $device = \Yii::$app->request->get('device', 'local');
|
|
|
+
|
|
|
$userId = \Yii::$app->user->id;
|
|
|
- $payList = ShopGoods::payTypes();
|
|
|
$allAddress = ReceiveAddress::findAllAsArray('USER_ID=:USER_ID', [':USER_ID'=>$userId]);
|
|
|
if($allAddress) {
|
|
|
foreach ($allAddress as $key => $row) {
|
|
|
@@ -109,7 +111,13 @@ class ShopController extends BaseController {
|
|
|
if ($userCashResult = UserWallet::findOneAsArray(['USER_ID' => $userId])) {
|
|
|
$userBalance['cash'] = $userCashResult['CASH'];
|
|
|
}
|
|
|
- return static::notice(['payList'=>$payList,'allAddress'=>$allAddress,'userBalance'=>$userBalance]);
|
|
|
+
|
|
|
+ return static::notice([
|
|
|
+ 'payList' => ShopGoods::getPayMethod(),
|
|
|
+ 'allAddress' => $allAddress,
|
|
|
+ 'userBalance' => $userBalance,
|
|
|
+ 'onlinePayList' => ShopGoods::getPayMethod($device)
|
|
|
+ ]);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -192,59 +200,32 @@ class ShopController extends BaseController {
|
|
|
return static::notice($data);
|
|
|
}
|
|
|
|
|
|
-// /**
|
|
|
-// * 我的订单(未支付)
|
|
|
-// * @return mixed
|
|
|
-// * @throws \yii\web\HttpException
|
|
|
-// */
|
|
|
-// public function actionOrderList() {
|
|
|
-// $uname = Info::getUserNameByUserId(\Yii::$app->user->id);
|
|
|
-// $condition = " O.IS_DELETE = 0 AND O.ORDER_TYPE='FX' AND (O.USER_ID=:USER_ID OR O.CREATE_USER='$uname')";
|
|
|
-// $params[':USER_ID'] = \Yii::$app->user->id;
|
|
|
-// $orderQuery = Order::find()
|
|
|
-// ->alias('O')
|
|
|
-// ->where($condition, $params)
|
|
|
-// ->select('O.*,U.REAL_NAME,OG.REAL_PRICE,OG.BUY_NUMS,OG.SKU_CODE,OG.GOODS_TITLE,OG.REAL_PV,OG.ORDER_SN,OG.GOODS_ID')
|
|
|
-// ->join('LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID')
|
|
|
-// ->join('LEFT JOIN', OrderGoods::tableName() . ' AS OG', 'OG.ORDER_SN=O.SN')
|
|
|
-// ->orderBy('O.CREATED_AT DESC');
|
|
|
-//
|
|
|
-// // 订单中间表只查询待支付和支付失败的订单
|
|
|
-// $params[':NOT_PAID'] = \Yii::$app->params['orderStatus']['notPaid']['value']; // 待支付
|
|
|
-// $params[':FAIL_PAID'] = \Yii::$app->params['orderStatus']['failPaid']['value']; // 支付失败
|
|
|
-// $orderStandardQuery = ApproachOrder::find()
|
|
|
-// ->alias('O')
|
|
|
-// ->where($condition . ' AND (O.STATUS = :NOT_PAID OR O.STATUS = :FAIL_PAID)', $params)
|
|
|
-// ->select('O.*,U.REAL_NAME,OG.REAL_PRICE,OG.BUY_NUMS,OG.SKU_CODE,OG.GOODS_TITLE,OG.REAL_PV,OG.ORDER_SN,OG.GOODS_ID')
|
|
|
-// ->join('LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID')
|
|
|
-// ->join('LEFT JOIN', ApproachOrderGoods::tableName() . ' AS OG', 'OG.ORDER_SN=O.SN')
|
|
|
-// ->orderBy('O.CREATED_AT DESC');
|
|
|
-//
|
|
|
-// $queryAll = $orderQuery->union($orderStandardQuery, true);
|
|
|
-// $query = (new Query())->from(['Q' => $queryAll])->select('Q.*')->distinct()->orderBy(['CREATED_AT' => SORT_DESC]);
|
|
|
-//
|
|
|
-// $totalCount = $query->count();
|
|
|
-// $pagination = new Pagination(['totalCount' => $totalCount, 'pageSize' => \Yii::$app->request->get('pageSize')]);
|
|
|
-// $lists = $query->offset($pagination->offset)->limit($pagination->limit)->all();
|
|
|
-//
|
|
|
-// $data = [
|
|
|
-// 'list' => $lists,
|
|
|
-// 'currentPage'=>$pagination->page,
|
|
|
-// 'totalPages'=>$pagination->pageCount,
|
|
|
-// 'startNum' => $pagination->page * $pagination->pageSize + 1,
|
|
|
-// 'totalCount' => $pagination->totalCount,
|
|
|
-// 'pageSize' => $pagination->pageSize,
|
|
|
-// ];
|
|
|
-//
|
|
|
-// foreach ($data['list'] as $key => $value) {
|
|
|
-// $data['list'][$key]['ORDER_TYPE'] = $value['ORDER_TYPE'] == 'ZC' ? '首单' : '复消';
|
|
|
-// $data['list'][$key]['PAY_AT'] = $value['PAY_AT'] ? Date::convert($value['PAY_AT'],'Y-m-d H:i:s') : '';
|
|
|
-// $data['list'][$key]['PAY_TYPE'] = ShopGoods::payTypes()[$value['PAY_TYPE']]['name'] ?? '';
|
|
|
-// $data['list'][$key]['STATUS'] = \Yii::$app->params['orderStatus'][$value['STATUS']]['label'] ?? '';
|
|
|
-// }
|
|
|
-//
|
|
|
-// return $data;
|
|
|
-// }
|
|
|
+ /**
|
|
|
+ * 我的订单(待支付)
|
|
|
+ * @return mixed
|
|
|
+ * @throws HttpException
|
|
|
+ */
|
|
|
+ public function actionOrderIncompleteList() {
|
|
|
+ $uname = Info::getUserNameByUserId(\Yii::$app->user->id);
|
|
|
+ $condition = " AND IS_DELETE=0 AND ORDER_TYPE='FX' AND (USER_ID=:USER_ID OR CREATE_USER='{$uname}')";
|
|
|
+ $params[':USER_ID'] = \Yii::$app->user->id;
|
|
|
+ $data = ApproachOrder::lists($condition, $params, [
|
|
|
+ 'select' => 'O.*,U.REAL_NAME,OG.*',
|
|
|
+ 'orderBy' => 'O.CREATED_AT DESC',
|
|
|
+ 'from' => Order::tableName() . ' AS O',
|
|
|
+ 'join' => [
|
|
|
+ ['LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID'],
|
|
|
+ ['LEFT JOIN', ApproachOrderGoods::tableName() . ' AS OG', 'OG.ORDER_SN=O.SN'],
|
|
|
+ ],
|
|
|
+ ]);
|
|
|
+ foreach ($data['list'] as $key => $value) {
|
|
|
+ $data['list'][$key]['ORDER_TYPE'] = $value['ORDER_TYPE']=='ZC' ? '首单' : '复消';
|
|
|
+ $data['list'][$key]['PAY_AT'] = Date::convert($value['PAY_AT'],'Y-m-d H:i:s');
|
|
|
+ $data['list'][$key]['PAY_TYPE'] = ShopGoods::payTypes()[$value['PAY_TYPE']]['name'] ?? '';
|
|
|
+ $data['list'][$key]['STATUS'] = \Yii::$app->params['orderStatus'][$value['STATUS']]['label'] ?? '';
|
|
|
+ }
|
|
|
+ return static::notice($data);
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 会员复消
|
|
|
@@ -312,13 +293,40 @@ class ShopController extends BaseController {
|
|
|
*/
|
|
|
public function actionSureApproachOrder(){
|
|
|
if (\Yii::$app->request->isPost) {
|
|
|
+ $post = \Yii::$app->request->post();
|
|
|
$formModel = new ApproachOrderForm();
|
|
|
$formModel->scenario = 'userOrder';
|
|
|
$formModel->remark = '复销备注';
|
|
|
- $post = \Yii::$app->request->post();
|
|
|
+
|
|
|
$post['type'] = DeclarationForm::TYPE_FX;
|
|
|
if ($formModel->load($post, '') && $order = $formModel->add()) {
|
|
|
- return static::notice($order);
|
|
|
+ // 银行代码
|
|
|
+ $bankCode = \Yii::$app->request->post('bankCode');
|
|
|
+ // 订单商品
|
|
|
+ $orderProducts = ApproachOrderGoods::findOneAsArray(['ORDER_SN' => $order->SN]);
|
|
|
+ // 支付报文
|
|
|
+ $payload = [
|
|
|
+ "version" => "2.0.0", // 版本号.定值2.0.0
|
|
|
+ "trade_code" => "PAY", // 交易代码
|
|
|
+ "bank_code" => $bankCode, // 银行代码
|
|
|
+ "agencyId" => \Yii::$app->params['UPOP']['agencyId'], // 商户号
|
|
|
+ "child_merchant_no" => \Yii::$app->params['UPOP']['childMerchantId'], // 子商户号
|
|
|
+ "terminal_no" => \Yii::$app->params['UPOP']['terminalId'], // 商户终端号
|
|
|
+ "order_no" => $order->SN . mt_rand(0, 10000000), // 第三方订单号
|
|
|
+ "amount" => number_format($order['PAY_AMOUNT'], 2), // 交易金额(元) 2位小数
|
|
|
+ "currency_type" => "HKD", // 交易币种 HKD(港币)
|
|
|
+ "sett_currency_type" => "HKD", // 清算币种 HKD(港币)
|
|
|
+ "product_name" => $orderProducts['GOODS_TITLE'], // 产品名称
|
|
|
+ "return_url" => \Yii::$app->params['UPOP']['returnUrl'], // 同步通知地址
|
|
|
+ "notify_url" => \Yii::$app->params['UPOP']['notifyUrl'], // 异步通知地址
|
|
|
+ "client_ip" => $_SERVER['REMOTE_ADDR'], // 客户端IP(订单⽣成的机器IP,指⽤户浏览器端IP,不是商户服务器IP)
|
|
|
+ ];
|
|
|
+ // 预支付
|
|
|
+ $response = (new PaySign())->sendEncodeData($payload, \Yii::$app->params['UPOP']['backPayUrl']);
|
|
|
+ // 预支付结果写入表
|
|
|
+ ApproachOrder::updateAll(['REMARK' => json_encode($response)], 'SN=:SN', [':SN' => $order->SN]);
|
|
|
+
|
|
|
+ return static::notice($response);
|
|
|
} else {
|
|
|
return static::notice(Form::formatErrorsForApi($formModel->getErrors()),400);
|
|
|
}
|
|
|
@@ -721,7 +729,7 @@ class ShopController extends BaseController {
|
|
|
// 订单ID
|
|
|
$refNo = 'OS202310198286872118';
|
|
|
// 银行代码
|
|
|
- $bankCode = "WAPWECHAT";
|
|
|
+ $bankCode = "ALIPAY";
|
|
|
|
|
|
// 订单
|
|
|
$order = ApproachOrder::findOneAsArray(['SN' => $refNo]);
|
|
|
@@ -754,58 +762,6 @@ class ShopController extends BaseController {
|
|
|
return static::notice($result);
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * 预下单(4.11-4.15). 银联在线支付 - UPOP
|
|
|
- */
|
|
|
- public function actionUpopOnlinePay()
|
|
|
- {
|
|
|
- // 订单ID
|
|
|
- $refNo = \Yii::$app->request->post('refNo');
|
|
|
- // 媒体设备
|
|
|
- $device = \Yii::$app->request->post('device', "0");
|
|
|
- // 订单
|
|
|
- $order = ApproachOrder::findOneAsArray(['SN' => $refNo]);
|
|
|
- if (!$order) {
|
|
|
- return static::notice('订单编号无效');
|
|
|
- }
|
|
|
- // 订单商品
|
|
|
- $orderProducts = ApproachOrderGoods::findOneAsArray(['ORDER_SN' => $refNo]);
|
|
|
-
|
|
|
- // 预支付报文
|
|
|
- $payload = [
|
|
|
- "version" => "2.0.0", // 版本号.定值2.0.0
|
|
|
- "trade_code" => "PAY", // 交易代码
|
|
|
- "agencyId" => \Yii::$app->params['UPOP']['agencyId'], // 商户号
|
|
|
- "child_merchant_no" => \Yii::$app->params['UPOP']['childMerchantId'], // 子商户号
|
|
|
- "terminal_no" => \Yii::$app->params['UPOP']['terminalId'], // 商户终端号
|
|
|
- "order_no" => $refNo . mt_rand(0, 1000), // 第三方订单号
|
|
|
- "amount" => number_format($order['PAY_AMOUNT'], 2), // 交易金额(元)
|
|
|
- "currency_type" => "HKD", // 交易币种 HKD
|
|
|
- "sett_currency_type" => "HKD", // 清算币种
|
|
|
- "product_name" => $orderProducts['GOODS_TITLE'], // 产品名称
|
|
|
- "user_name" => $order['USER_NAME'], // ⽤户名称
|
|
|
- "return_url" => \Yii::$app->params['UPOP']['returnUrl'], // 同步通知地址
|
|
|
- "notify_url" => \Yii::$app->params['UPOP']['notifyUrl'], // 异步通知地址
|
|
|
- "client_ip" => $_SERVER['REMOTE_ADDR'], // 客户端IP(订单⽣成的机器IP,指⽤户浏览器端IP,不是商户服务器IP)
|
|
|
- ];
|
|
|
- // 预支付
|
|
|
- $response = (new PaySign())->sendEncodeData($payload, \Yii::$app->params['UPOP']['backPayUrl']);
|
|
|
-
|
|
|
- if ($response) {
|
|
|
- // 前台支付报文
|
|
|
- $request = [
|
|
|
- "token_id" => $response['token_id'], // 预下单接⼝返回的token_id
|
|
|
- "access_type" => in_array($device, [0, 1]) ?: "0", // 访问端类型: 0:⽹⻚ 1:⼿机
|
|
|
- "bank_code" => 'UPOP', // 调起⽀付后的默认⽀付⽅式
|
|
|
- ];
|
|
|
- $request = \Yii::$app->params['UPOP']['frontPayUrl'] . '?' . http_build_query($request);
|
|
|
-
|
|
|
- return static::notice($request);
|
|
|
- }
|
|
|
-
|
|
|
- return static::notice($response);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* UPOP支付成功的webhook.
|
|
|
* @throws \Exception
|