admin/addon/cardservice/api/controller/Pay.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));
}
}