232 行
10 KiB
PHP
可执行文件
232 行
10 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace PayApi\Controller;
|
|
|
|
use Think\Controller;
|
|
|
|
//[1.8.68]
|
|
|
|
/**
|
|
* 会员支付
|
|
* Class VipPayController
|
|
* @package Api\Controller
|
|
*/
|
|
class VipPayController extends Controller
|
|
{
|
|
/**
|
|
* @param $bill_id
|
|
* @param $scene_type 场景 1收银机 2商户后台 3门店后台 4小程序 5公众号
|
|
* @param $type 类型 1充值 2消费 3编辑增加 4编辑减少 5退款增加 6红包充值 7大转盘充值 8礼品卡充值
|
|
* @param null $password
|
|
* @param null $pay_order_id
|
|
* @return mixed
|
|
*/
|
|
public function pay($bill_id, $scene_type, $type, $password = null, $pay_order_id = null)
|
|
{
|
|
$PayOrderModel = D('RetailPayOrder');
|
|
$payMap = array(
|
|
$PayOrderModel::BILL_ID => $bill_id,
|
|
$PayOrderModel::ORDER_STATE => 'WAIT_BUYER_PAY',
|
|
$PayOrderModel::PAY_TYPE => 6, //余额支付
|
|
);
|
|
if (!empty($pay_order_id)) {
|
|
$payMap[$PayOrderModel::ID] = $pay_order_id;
|
|
}
|
|
$payOrder = $PayOrderModel->getFind($payMap);
|
|
if (empty($payOrder)) {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '订单不存在1';
|
|
return $res;
|
|
}
|
|
if ($payOrder[$PayOrderModel::PAY_TYPE] = !6 || empty($payOrder[$PayOrderModel::VID])) {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '您的请求有误';
|
|
return $res;
|
|
}
|
|
$VipModel = D('RetailVip');
|
|
$vipMap = array(
|
|
$VipModel::ID => $payOrder[$PayOrderModel::VID],
|
|
);
|
|
$vipInfo = $VipModel->getFind($vipMap);
|
|
if (empty($vipInfo)) {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '数据库发生错误';
|
|
return $res;
|
|
}
|
|
if (!empty($password) && !checkPassword($vipInfo[$VipModel::PASSWORD], $password, $vipInfo[$VipModel::ADD_TIME])) {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '支付密码错误';
|
|
return $res;
|
|
}
|
|
$payMoney = $payOrder[$PayOrderModel::TRADE_AMOUNT];
|
|
if (round($vipInfo[$VipModel::BALANCE] - $payMoney, 2) < 0) {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '会员卡余额不足,无法支付';
|
|
return $res;
|
|
}
|
|
$pay = $VipModel->toSetDec($vipMap, $VipModel::BALANCE, $payMoney);
|
|
if ($pay) {
|
|
$RechargeOrderModel = D('RetailRechargeOrder');
|
|
$remark = '';
|
|
switch ($scene_type) {
|
|
case 1:
|
|
$remark = '线下买单余额支付' . $payMoney . '元';
|
|
break;
|
|
case 2:
|
|
$remark = '商户后台余额支付' . $payMoney . '元';
|
|
break;
|
|
case 3:
|
|
$remark = '门店后台余额支付' . $payMoney . '元';
|
|
break;
|
|
case 4:
|
|
$remark = '小程序买单余额支付' . $payMoney . '元';
|
|
break;
|
|
case 5:
|
|
$remark = '公众号买单余额支付' . $payMoney . '元';
|
|
break;
|
|
}
|
|
$item = array(
|
|
$RechargeOrderModel::STORE_ID => $payOrder[$PayOrderModel::STORE_ID],
|
|
$RechargeOrderModel::MERCHANT_ID => $payOrder[$PayOrderModel::MERCHANT_ID],
|
|
$RechargeOrderModel::BILL_ID => $payOrder[$PayOrderModel::BILL_ID],
|
|
$RechargeOrderModel::PAY_ORDER_ID => $payOrder[$PayOrderModel::ID],
|
|
$RechargeOrderModel::CASHIER_ID => $payOrder[$PayOrderModel::CASHIER_ID],
|
|
$RechargeOrderModel::MONEY => $payMoney,
|
|
$RechargeOrderModel::ALL_MONEY => $payMoney,
|
|
$RechargeOrderModel::STATE => 1,
|
|
$RechargeOrderModel::SCENE_TYPE => $scene_type,//1收银机 2商户后台 3门店后台 4小程序 5公众号
|
|
$RechargeOrderModel::TYPE => $type,//1充值 2消费 3编辑增加 4编辑减少 5退款增加 6红包充值 7大转盘充值 8礼品卡充值
|
|
$RechargeOrderModel::ADD_TIME => time(),
|
|
$RechargeOrderModel::VID => $vipInfo[$VipModel::ID],
|
|
$RechargeOrderModel::REMARK => $remark,
|
|
);
|
|
$add = $RechargeOrderModel->addOrder($item);
|
|
if ($add) {
|
|
$res['pay_order'] = $payOrder;
|
|
$res['status'] = 1;
|
|
$res['msg'] = '支付成功';
|
|
$save = array(
|
|
$PayOrderModel::ORDER_STATE => 'SUCCESS',
|
|
$PayOrderModel::TRADE_DATE => time()
|
|
);
|
|
$PayOrderModel->updateOrder($payMap, $save);
|
|
} else {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '支付成功,添加记录失败,请联系系统管理员';
|
|
}
|
|
} else {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '会员卡支付失败,请刷新动态码重试';
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* 会员加积分
|
|
* @param int $vip_info 会员详情
|
|
* @param int $integral 积分
|
|
* @param int $store_id 门店id
|
|
* @param int $type 类型
|
|
* @param int $remake 注释
|
|
* @param int $bill_id
|
|
* @return array $res
|
|
*/
|
|
public function rechargeVipIntegral($vip_info, $integral, $store_id, $type, $remake, $bill_id = 0)
|
|
{
|
|
$RVModel = D('RetailVip'); // 会员表模型
|
|
// 修改积分
|
|
$vip_info[$RVModel::INTEGRAL] = $vip_info[$RVModel::INTEGRAL] && $vip_info[$RVModel::INTEGRAL] > 0 ? $vip_info[$RVModel::INTEGRAL] : 0;
|
|
$vip_info[$RVModel::GRADE_INTEGRAL] = $vip_info[$RVModel::GRADE_INTEGRAL] && $vip_info[$RVModel::GRADE_INTEGRAL] > 0 ? $vip_info[$RVModel::GRADE_INTEGRAL] : 0;
|
|
$up = array(
|
|
$RVModel::INTEGRAL => $vip_info[$RVModel::INTEGRAL] + $integral,
|
|
$RVModel::GRADE_INTEGRAL => $vip_info[$RVModel::GRADE_INTEGRAL] + $integral,
|
|
);
|
|
$save_result = $RVModel->updateOrder(array($RVModel::ID => $vip_info[$RVModel::ID]), $up);
|
|
if (!$save_result) {
|
|
$res = array('status' => 0, 'msg' => '积分修改失败,请联系商家');
|
|
return $res;
|
|
}
|
|
// 添加积分记录
|
|
$RIOModel = D('RetailIntegralOrder');
|
|
$cr = array(
|
|
$RIOModel::VID => $vip_info[$RVModel::ID],
|
|
$RIOModel::TYPE => $type,
|
|
$RIOModel::INTEGRAL => $integral,
|
|
$RIOModel::ADD_TIME => time(),
|
|
$RIOModel::STORE_ID => $store_id,
|
|
$RIOModel::BILL_ID => $bill_id,
|
|
$RIOModel::REMARK => $remake
|
|
);
|
|
$add_result = $RIOModel->addOrder($cr);
|
|
if ($add_result) {
|
|
$res = array('status' => 1, 'msg' => '记录添加成功');
|
|
} else {
|
|
$res = array('status' => 0, 'msg' => '记录添加失败');
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
|
|
/**
|
|
* 会员退款
|
|
* @param $payOrder pay_order
|
|
* @param $scene_type 场景 1收银机 2商户后台 3门店后台 4小程序 5公众号
|
|
* @param $type 类型 1充值 2消费 3编辑增加 4编辑减少 5退款增加 6红包充值 7大转盘充值 8礼品卡充值
|
|
* @return mixed
|
|
*/
|
|
public function refundForVip_v1($payOrder, $scene_type, $type)
|
|
{
|
|
$VipModel = D('RetailVip');
|
|
$PayOrderModel = D('RetailPayOrder');
|
|
$setInc = $VipModel->toSetInc(array($VipModel::ID => $payOrder[$PayOrderModel::VID]), $VipModel::BALANCE, $payOrder[$PayOrderModel::TRADE_AMOUNT]);
|
|
if ($setInc) {
|
|
$RechargeOrderModel = D('RetailRechargeOrder');
|
|
$item[$RechargeOrderModel::STORE_ID] = $payOrder[$PayOrderModel::STORE_ID];
|
|
$item[$RechargeOrderModel::MERCHANT_ID] = $payOrder[$PayOrderModel::MERCHANT_ID];
|
|
$item[$RechargeOrderModel::BILL_ID] = $payOrder[$PayOrderModel::BILL_ID];
|
|
$item[$RechargeOrderModel::PAY_ORDER_ID] = $payOrder[$PayOrderModel::ID];
|
|
$item[$RechargeOrderModel::CASHIER_ID] = $payOrder[$PayOrderModel::CASHIER_ID];
|
|
$item[$RechargeOrderModel::MONEY] = $payOrder[$PayOrderModel::TRADE_AMOUNT];
|
|
$item[$RechargeOrderModel::ALL_MONEY] = $payOrder[$PayOrderModel::TRADE_AMOUNT];
|
|
$item[$RechargeOrderModel::STATE] = 1;
|
|
$item[$RechargeOrderModel::TYPE] = $type;
|
|
$item[$RechargeOrderModel::SCENE_TYPE] = $scene_type;
|
|
$item[$RechargeOrderModel::ADD_TIME] = time();
|
|
$item[$RechargeOrderModel::VID] = $payOrder[$PayOrderModel::VID];
|
|
$payMoney = $payOrder[$PayOrderModel::TRADE_AMOUNT];
|
|
switch ($scene_type) {
|
|
case 1:
|
|
$remark = '线下余额退款' . $payMoney . '元';
|
|
break;
|
|
case 2:
|
|
$remark = '商户后台余额退款' . $payMoney . '元';
|
|
break;
|
|
case 3:
|
|
$remark = '门店后台余额退款' . $payMoney . '元';
|
|
break;
|
|
case 4:
|
|
$remark = '小程序订单余额退款' . $payMoney . '元';
|
|
break;
|
|
case 5:
|
|
$remark = '公众号余额退款' . $payMoney . '元';
|
|
break;
|
|
case 6:
|
|
$remark = '小助手快捷收银退款' . $payMoney . '元';
|
|
break;
|
|
}
|
|
$item[$RechargeOrderModel::REMARK] = $remark;
|
|
$add = $RechargeOrderModel->addOrder($item);
|
|
if ($add) {
|
|
$result['status'] = 1;
|
|
$result['msg'] = '退款成功';
|
|
} else {
|
|
$result['status'] = 0;
|
|
$result['msg'] = '退款成功,添加记录失败,请联系系统管理员';
|
|
}
|
|
} else {
|
|
$result['status'] = 0;
|
|
$result['msg'] = '会员退款失败';
|
|
}
|
|
return $result;
|
|
}
|
|
} |