131 lines
5.8 KiB
PHP
131 lines
5.8 KiB
PHP
<?php
|
|
/**
|
|
* SAAS应用系统 --- 十年开发经验汇集巨献!
|
|
* ==========================================================
|
|
* Copy right 2020-2050 成都众联思索科技有限公司,保留所有权利。
|
|
* ----------------------------------------------------------
|
|
* 官方网址: https://www.zoomtk.com
|
|
* 这不是自由软件!未经允许不得用于商业目或程序代码摘取及修改。
|
|
* 任何企业和个人未经允许对程序代码以任何形式任何目的再发布传播。
|
|
* 唯一发布渠道www.zoomtk.com;非官方渠道统一视为侵权行为。
|
|
* ==========================================================
|
|
*/
|
|
namespace addon\cardservice\api\controller;
|
|
use app\model\order\Order as OrderModel;
|
|
use app\model\system\Pay as PayModel;
|
|
use app\api\controller\BaseApi;
|
|
use think\facade\Db;
|
|
class Pay extends BaseApi
|
|
{
|
|
|
|
public function info()
|
|
{
|
|
$out_trade_no = $this->params['out_trade_no'];
|
|
$card_type = $this->params['card_type'];
|
|
$deductionAmount = $this->params['deductionAmount'];
|
|
$periods = $this->params['periods'];
|
|
//TODO 前端临时
|
|
$original_price = $this->params['original_price'];
|
|
$down_payment = $this->params['down_payment'];
|
|
$down_payment_periods = $this->params['down_payment_periods'];
|
|
|
|
$pay = new PayModel();
|
|
$info = $pay->getPayInfo($out_trade_no)['data'] ?? [];
|
|
if (!empty($info)) {
|
|
switch ($info['event']) {
|
|
case 'OrderPayNotify':
|
|
$order_model = new OrderModel();
|
|
$json = [
|
|
[
|
|
'order_goods gs',
|
|
'a.order_id = gs.order_id',
|
|
'left'
|
|
],
|
|
[
|
|
'goods_sku gk',
|
|
'gs.sku_id = gk.sku_id',
|
|
'left'
|
|
],
|
|
[
|
|
'goods_card c',
|
|
'gs.goods_id = c.goods_id',
|
|
'left'
|
|
]
|
|
];
|
|
$order_info = model('order')
|
|
->getInfo([['a.out_trade_no', '=', $out_trade_no]], 'a.order_id,a.order_type,gs.sku_no,gk.market_price,c.validity_type,c.validity_day,c.validity_time,c.original_price,c.down_payment,c.down_payment_periods,gs.goods_id', 'a', $json);
|
|
if (!empty($order_info)) {
|
|
$info['order_id'] = $order_info['order_id'];
|
|
$info['order_type'] = $order_info['order_type'];
|
|
$info['goods_id'] = $order_info['goods_id'];
|
|
$info['sku_no'] = $order_info['sku_no'];
|
|
$info['original_price'] = $order_info['original_price'];
|
|
$info['down_payment'] = $order_info['down_payment'];
|
|
$info['down_payment_periods'] = $order_info['down_payment_periods'];
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
$pay = new \addon\alipay\model\Config();
|
|
$payConfig = $pay->getPayConfig(request()->siteid())['data']['value'];
|
|
if ($payConfig && $payConfig['merchant_smid']) {
|
|
$merchantPid = $payConfig['merchant_smid'];
|
|
} else {
|
|
$where = [
|
|
'site_id' => request()->siteid(),
|
|
'pay_type' => 'alipay',
|
|
];
|
|
$merchantPid = Db::name('pay_shop')->where($where)->cache(json_encode($where))->value('merchant_smid');
|
|
if (empty($merchantPid)) {
|
|
cache(json_encode($where), null);
|
|
}
|
|
}
|
|
$pub = [
|
|
'merchantPid' => $merchantPid,
|
|
'productName' => $info['pay_body'],
|
|
'productNo' => $info['goods_id'],
|
|
'nickName' => '支付宝用户',
|
|
'outSubscriptionNo' => $out_trade_no,
|
|
'deductionAmount' => $deductionAmount, //每期费用
|
|
'periods' => $periods, //总期数
|
|
];
|
|
switch ($card_type) {
|
|
case 'week':
|
|
$data = [];
|
|
$info['initData']['openWeek'] = array_merge($pub, $data);
|
|
break;
|
|
case 'month':
|
|
$data = [];
|
|
$info['initData']['openMonth'] = array_merge($pub, $data);
|
|
break;
|
|
case 'num':
|
|
$data = [];
|
|
$info['initData']['openTime'] = array_merge($pub, $data);
|
|
break;
|
|
case 'discountnum':
|
|
$data = [
|
|
'enableUserActivePay' => 'Y', //主动付款
|
|
'existVerificationCode' => 'Y',//主动付款
|
|
'originalPrice' => $original_price, //订购原价
|
|
'downPayment' => $down_payment, //优惠价格
|
|
'downPaymentPeriods' => $down_payment_periods, //优惠期数
|
|
'overdueDate' => '', //过期时间
|
|
];
|
|
switch ($order_info['validity_type']) {
|
|
case '0':
|
|
$time = mktime(0, 0, 0, date('m'), date('d'), date('Y') + 10);
|
|
$data['overdueDate'] = date('Y-m-d', $time);
|
|
break;
|
|
case '1':
|
|
$time = mktime(0, 0, 0, date('m'), date('d') + $order_info['validity_day'], date('Y'));
|
|
$data['overdueDate'] = date('Y-m-d', $time);
|
|
break;
|
|
case '2' :
|
|
$data['overdueDate'] = date('Y-m-d', $order_info['validity_time']);
|
|
break;
|
|
}
|
|
$info['initData']['openDiscountTime'] = array_merge($pub, $data);
|
|
}
|
|
return $this->response($this->success($info));
|
|
}
|
|
} |