Browse Source

支付

master
jianglong 3 years ago
parent
commit
4309604dcf
  1. 61
      app/api/controller/Order.php
  2. 26
      app/api/controller/Pay.php
  3. 249
      app/api/logic/OrderLogic.php
  4. 384
      app/api/logic/PayLogic.php
  5. 5
      app/api/logic/UserLogic.php
  6. 41
      app/api/validate/OrderResourceValidate.php
  7. 41
      app/api/validate/OrderUserValidate.php
  8. 12
      app/common/enum/NoticeEnum.php
  9. 249
      app/common/logic/PayNotifyLogic.php
  10. 9
      app/common/model/AccountLog.php
  11. 8
      app/common/model/order/Order.php
  12. 9
      app/common/model/order/OrderResource.php
  13. 9
      app/common/model/order/OrderUser.php
  14. 22
      app/common/server/WeChatPayServer.php
  15. 4
      runtime/cache/51/6acd4f8c5fec7d25182d1c0728d355.php
  16. 2
      runtime/cache/9f/d2f37875d1da637002182ec566f162.php
  17. 1
      runtime/session/sess_3632be6a5ab6055cd5719e554b79bbac

61
app/api/controller/Order.php

@ -4,6 +4,8 @@ namespace app\api\controller;
use app\api\logic\OrderInvoiceLogic;
use app\api\logic\OrderLogic;
use app\api\validate\OrderResourceValidate;
use app\api\validate\OrderUserValidate;
use app\api\validate\OrderValidate;
use app\common\basics\Api;
use app\common\server\JsonServer;
@ -23,6 +25,7 @@ class Order extends Api
$post = $this->request->post();
$post['user_id'] = $this->user_id;
$post['client'] = $this->client;
(new OrderValidate())->goCheck('add', $post);
$order = OrderLogic::add($post);
if (false === $order) {
@ -32,6 +35,64 @@ class Order extends Api
}
/**
* @notes 下单-开通会员卡
* @return \think\response\Json
* @throws \think\Exception
* @author suny
* @date 2021/7/13 6:11 下午
*/
public function submitUserOrder()
{
$post = $this->request->post();
$post['user_id'] = $this->user_id;
$post['client'] = $this->client;
(new OrderUserValidate())->goCheck('add', $post);
$order = OrderLogic::addUserOrder($post);
if (false === $order) {
return JsonServer::error(OrderLogic::getError());
}
return JsonServer::success('下单成功!', $order);
}
/**
* @notes 下单-开通免费会员卡
* @return \think\response\Json
* @throws \think\Exception
* @author suny
* @date 2021/7/13 6:11 下午
*/
public function submitFreeUserOrder()
{
$post = $this->request->post();
$post['user_id'] = $this->user_id;
$post['client'] = $this->client;
(new OrderUserValidate())->goCheck('add', $post);
$order = OrderLogic::addFreeUserOrder($post);
if (false === $order) {
return JsonServer::error(OrderLogic::getError());
}
return JsonServer::success('开通成功!', $order);
}
/**
* @notes 下单-购买资料
* @return \think\response\Json
* @throws \think\Exception
* @author suny
* @date 2021/7/13 6:11 下午
*/
public function submitResourceOrder()
{
$post = $this->request->post();
$post['user_id'] = $this->user_id;
$post['client'] = $this->client;
(new OrderResourceValidate())->goCheck('add', $post);
$order = OrderLogic::addResourceOrder($post);
if (false === $order) {
return JsonServer::error(OrderLogic::getError());
}
return JsonServer::success('下单成功!', $order);
}
/**
* @notes 结算页数据
* @return \think\response\Json
* @author suny

26
app/api/controller/Pay.php

@ -7,9 +7,11 @@ use app\common\basics\Api;
use app\common\enum\OrderEnum;
use app\common\enum\PayEnum;
use app\common\model\Client_;
use app\common\model\order\OrderResource;
use app\common\model\order\OrderTrade;
use app\common\model\order\Order;
use app\common\model\order\OrderLog;
use app\common\model\order\OrderUser;
use app\common\server\AliPayServer;
use app\common\server\JsonServer;
use app\common\model\Test;
@ -48,9 +50,26 @@ class Pay extends Api
$pay_way = $order['pay_way'];
}
if ($post['from'] == 'trade') {
$order = Order::where('trade_id', $post['order_id'])->findOrEmpty();
// 更新支付方式
Order::where('trade_id', $post['order_id'])->update(['pay_way' => $post['pay_way']]);
$trader_order = OrderTrade::where('id', $post['order_id'])->findOrEmpty();
//普通订单
if($trader_order['type'] == 0){
$order = Order::where('trade_id', $post['order_id'])->findOrEmpty();
// 更新支付方式
Order::where('trade_id', $post['order_id'])->update(['pay_way' => $post['pay_way']]);
}
//会员订单
if($trader_order['type'] == 1){
$order = OrderUser::where('trade_id', $post['order_id'])->findOrEmpty();
// 更新支付方式
OrderUser::where('trade_id', $post['order_id'])->update(['pay_way' => $post['pay_way']]);
}
//资料订单
if($trader_order['type'] == 2){
$order = OrderResource::where('trade_id', $post['order_id'])->findOrEmpty();
// 更新支付方式
OrderResource::where('trade_id', $post['order_id'])->update(['pay_way' => $post['pay_way']]);
}
$pay_way = $post['pay_way'];
}
if ($post['from'] == 'recharge') {
@ -94,6 +113,7 @@ class Pay extends Api
/**
* @notes 小程序回调
* @throws \EasyWeChat\Kernel\Exceptions\Exception

249
app/api/logic/OrderLogic.php

@ -16,6 +16,7 @@ use app\common\enum\TeamEnum;
use app\common\logic\OrderLogLogic;
use app\common\logic\OrderRefundLogic;
use app\common\model\Cart;
use app\common\model\content\Resource;
use app\common\model\Freight;
use app\common\model\goods\Goods;
use app\common\model\Delivery;
@ -25,7 +26,9 @@ use app\common\model\order\Order;
use app\common\model\order\OrderGoods;
use app\common\model\order\OrderLog;
use app\common\model\order\OrderRefund;
use app\common\model\order\OrderResource;
use app\common\model\order\OrderTrade;
use app\common\model\order\OrderUser;
use app\common\model\Pay;
use app\common\model\RechargeOrder;
use app\common\model\shop\Shop;
@ -35,6 +38,7 @@ use app\common\model\team\TeamFound;
use app\common\model\team\TeamJoin;
use app\common\model\user\User;
use app\common\model\user\UserLevel;
use app\common\model\user\UserShip;
use app\common\server\UrlServer;
use app\common\model\seckill\SeckillGoods;
use app\common\model\bargain\BargainLaunch;
@ -781,6 +785,238 @@ class OrderLogic extends Logic
}
/**
* @param $post
* @return array
* 添加免费试用会员开卡
*/
public static function addFreeUserOrder($post)
{
$OrderTrade = new OrderTrade();
$order_amount = 0;
$total_amount = 0;
//计算商品总价格
$user = User::where('id', $post['user_id'])->find();
$userShip = UserShip::where(['id'=>$post['org_id'],'del'=>0])->findOrEmpty()->toArray();
if(!$userShip) {
return false;
}
$trade_order_data = [];
$trade_order_data['t_sn'] = createSn('order_trade', 't_sn');
// 拿shop_id,连接成字符串存入order_trade表shop_id中
$shop_id = '';
$shop_id = 0;
$trade_order_data['shop_id'] = $shop_id;
$trade_order_data['user_id'] = $post['user_id'];
$trade_order_data['goods_price'] = $userShip['pre_price'];
$trade_order_data['order_amount'] = $userShip['pre_price'];
$trade_order_data['total_amount'] = $userShip['pre_price'];
$trade_order_data['discount_amount'] = 0;
$trade_order_data['type'] = 1;
$trade_order_data['create_time'] = time();
$order_trade_create = $OrderTrade->create($trade_order_data);
if (false === $order_trade_create) {
return false;
}
//创建子订单
$Order = new OrderUser();
$order_data = [];
$order_data['trade_id'] = $order_trade_create->id;
$order_data['user_id'] = $post['user_id'];
$order_data['order_sn'] = createSn('order_trade', 't_sn');
$order_data['order_type'] = 0;
$order_data['org_id'] = $post['org_id'];
$order_data['order_source'] = $post['client'];
$order_data['order_status'] = 3;
$order_data['pay_status'] = 1;
$order_data['pay_way'] = 0;
$order_data['pay_money'] = 0;
$order_data['money'] = $userShip['price'];
$order_data['vip_day'] = $userShip['vip_day'];
$order_data['transaction_id'] = '';
$order_data['pay_time'] = time();
$order_data['is_free'] = 1;
$order_data['is_permanent'] = 0;
$over_time = $userShip['type'] == "forever"?0:($user['exp_time']>0 && $user['exp_time']>time()?$user['exp_time']+$userShip['vip_day']*3600*24:time()+$userShip['vip_day']*3600*24);
$order_data['overdue_time'] = $over_time;
$order_data['create_time'] = time();
$order_create = $Order->create($order_data);
//修改用户当前会员到期时间
$exp_time = $userShip['type'] == "forever"?0:($user['exp_time']>0 && $user['exp_time']>time()?$user['exp_time']+$userShip['vip_day']*3600*24:time()+$userShip['vip_day']*3600*24);
$user->ship_id = $userShip['id'];
$user->exp_time = $exp_time;
$user->ship_free = 1;
$user->save();
if (false === $order_create) {
return false;
}
return ['trade_id' => $order_trade_create->id, 'order_id' => $order_create->id, 'type' => 'trade'];
}
/**
* @param $post
* @return array
* 添加会员开卡的订单
*/
public static function addUserOrder($post)
{
$OrderTrade = new OrderTrade();
$order_amount = 0;
$total_amount = 0;
//计算商品总价格
$user = User::where('id', $post['user_id'])->find();
$userShip = UserShip::where(['id'=>$post['org_id'],'del'=>0])->findOrEmpty()->toArray();
if(!$userShip) {
return false;
}
// 记录访问足迹
event('Footprint', [
'type' => FootprintEnum::PLACE_ORDER,
'user_id' => $post['user_id'],
'total_money' => $total_amount
]);
$trade_order_data = [];
$trade_order_data['t_sn'] = createSn('order_trade', 't_sn');
// 拿shop_id,连接成字符串存入order_trade表shop_id中
$shop_id = '';
$shop_id = 0;
$trade_order_data['shop_id'] = $shop_id;
$trade_order_data['user_id'] = $post['user_id'];
$trade_order_data['goods_price'] = $userShip['pre_price'];
$trade_order_data['order_amount'] = $userShip['pre_price'];
$trade_order_data['total_amount'] = $userShip['pre_price'];
$trade_order_data['discount_amount'] = 0;
$trade_order_data['type'] = 1;
$trade_order_data['create_time'] = time();
$order_trade_create = $OrderTrade->create($trade_order_data);
if (false === $order_trade_create) {
return false;
}
//创建子订单
$Order = new OrderUser();
$order_data = [];
$order_data['trade_id'] = $order_trade_create->id;
$order_data['user_id'] = $post['user_id'];
$order_data['order_sn'] = createSn('order_trade', 't_sn');
$order_data['order_type'] = 1;
$order_data['org_id'] = $post['org_id'];
$order_data['order_source'] = $post['client'];
$order_data['order_status'] = OrderEnum::ORDER_STATUS_NO_PAID;
$order_data['pay_status'] = OrderEnum::PAY_STATUS_NO_PAID;
$order_data['pay_way'] = 0;
$order_data['pay_money'] = $userShip['pre_price'];
$order_data['money'] = $userShip['price'];
$order_data['vip_day'] = $userShip['vip_day'];
$order_data['transaction_id'] = '';
$order_data['pay_time'] = 0;
$order_data['is_free'] = $userShip['type']=='free'?1:0;
$order_data['is_permanent'] = $userShip['type']=='forever'?1:0;
$over_time = $userShip['type'] == "forever"?0:($user['exp_time']>0 && $user['exp_time']>time()?$user['exp_time']+$userShip['vip_day']*3600*24:time()+$userShip['vip_day']*3600*24);
$order_data['overdue_time'] = $over_time;
$order_data['create_time'] = time();
$order_create = $Order->create($order_data);
if (false === $order_create) {
return false;
}
return ['trade_id' => $order_trade_create->id, 'order_id' => $order_create->id, 'type' => 'trade'];
}
/**
* @param $post
* @return array
* 添加购买资料的订单
*/
public static function addResourceOrder($post)
{
$OrderTrade = new OrderTrade();
$order_amount = 0;
$total_amount = 0;
//计算商品总价格
$user = User::where('id', $post['user_id'])->find();
$resource = Resource::where(['id'=>$post['org_id'],'del'=>0])->findOrEmpty()->toArray();
if(!$resource) {
return false;
}
// 记录访问足迹
event('Footprint', [
'type' => FootprintEnum::PLACE_ORDER,
'user_id' => $post['user_id'],
'total_money' => $resource['price']
]);
$trade_order_data = [];
$trade_order_data['t_sn'] = createSn('order_trade', 't_sn');
// 拿shop_id,连接成字符串存入order_trade表shop_id中
$shop_id = '';
$shop_id = 0;
$trade_order_data['shop_id'] = $shop_id;
$trade_order_data['user_id'] = $post['user_id'];
$trade_order_data['goods_price'] = $resource['price'];
$trade_order_data['order_amount'] = $resource['price'];
$trade_order_data['total_amount'] = $resource['price'];
$trade_order_data['discount_amount'] = 0;
$trade_order_data['type'] = 2;
$trade_order_data['create_time'] = time();
$order_trade_create = $OrderTrade->create($trade_order_data);
if (false === $order_trade_create) {
return false;
}
//创建子订单
$Order = new OrderResource();
$order_data = [];
$order_data['trade_id'] = $order_trade_create->id;
$order_data['user_id'] = $post['user_id'];
$order_data['order_sn'] = createSn('order_trade', 't_sn');
$order_data['org_id'] = $post['org_id'];
$order_data['order_source'] = $post['client'];
$order_data['order_status'] = OrderEnum::ORDER_STATUS_NO_PAID;
$order_data['pay_status'] = OrderEnum::PAY_STATUS_NO_PAID;
$order_data['pay_way'] =0;
$order_data['pay_money'] = $resource['price'];
$order_data['money'] = $resource['price'];
$order_data['transaction_id'] = '';
$order_data['pay_time'] = 0;
$order_data['create_time'] = time();
$order_create = $Order->create($order_data);
if (false === $order_create) {
return false;
}
return ['trade_id' => $order_trade_create->id, 'order_id' => $order_create->id, 'type' => 'trade'];
}
/**
* @notes 添加父订单
* @param $post
* @param $address
@ -858,6 +1094,7 @@ class OrderLogic extends Logic
$trade_order_data['total_amount'] = $total_amount;
$trade_order_data['discount_amount'] = $discount_amount;
$trade_order_data['create_time'] = time();
$trade_order_data['type'] = 0;
$order_trade_create = $OrderTrade->create($trade_order_data);
if (false === $order_trade_create) {
return false;
@ -1259,6 +1496,7 @@ class OrderLogic extends Logic
}
}
}
$data = [
'list' => $lists,
'page' => $page,
@ -1266,6 +1504,7 @@ class OrderLogic extends Logic
'count' => $count,
'more' => is_more($count, $page, $size)
];
return $data;
}
@ -1632,9 +1871,17 @@ class OrderLogic extends Logic
{
switch ($from) {
case 'trade' : //如果是父订单类型下单,$id为父订单id
$trader_order = OrderTrade::where('id', $id)->findOrEmpty();
$table = "order";
if($trader_order['type'] == 1){
$table = "order_user";
}elseif($trader_order['type'] == 2){
$table = "order_resource";
}
$result = OrderTrade::alias('ot')
->where(['ot.id' => $id,'o.pay_status' => 1])
->join('order o','o.trade_id = ot.id')
->join($table.' o','o.trade_id = ot.id')
->field(['ot.id', 'ot.t_sn as order_sn', 'o.pay_time', 'o.pay_way', 'ot.total_amount'])
->findOrEmpty()
->toArray();

384
app/api/logic/PayLogic.php

@ -13,6 +13,7 @@ use app\common\logic\IntegralLogic;
use app\common\logic\OrderLogLogic;
use app\common\logic\PayNotifyLogic;
use app\common\model\Client_;
use app\common\model\content\Resource;
use app\common\model\distribution\DistributionGoods;
use app\common\model\distribution\DistributionLevel;
use app\common\model\distribution\DistributionOrderGoods;
@ -21,11 +22,15 @@ use app\common\model\AccountLog;
use app\common\logic\AccountLogLogic;
use app\common\model\integral\IntegralOrder;
use app\common\model\order\OrderGoods;
use app\common\model\order\OrderResource;
use app\common\model\order\OrderTrade;
use app\common\model\order\Order;
use app\common\model\order\OrderUser;
use app\common\model\RechargeOrder;
use app\common\model\shop\Shop;
use app\common\model\user\User;
use app\common\model\user\UserResource;
use app\common\model\user\UserShip;
use app\common\server\JsonServer;
use app\common\server\WeChatPayServer;
use app\common\server\ConfigServer;
@ -49,16 +54,37 @@ class PayLogic extends Logic
* @author suny
* @date 2021/7/13 6:24 下午
*/
public static function checkPayStatus($trade_id)
public static function checkPayStatus($type,$trade_id)
{
// $trader_order = OrderTrade::find($trade_id);;
$where = [
'trade_id' => $trade_id,
'pay_status' => PayEnum::ISPAID,
'del' => 0
];
switch ($type) {
case 1:
$check = OrderUser::where($where)->find();
break;
case 2:
$check = OrderResource::where($where)->find();
break;
default:
$check = Order::where($where)->find();
break;
}
// //普通订单
// if($type == 0){
// $check = Order::where($where)->find();
// } //会员订单
// elseif($type == 1){
// $check = OrderUser::where($where)->find();
// }//资料订单
// elseif($type == 2){
// $check = OrderResource::where($where)->find();
// }
$check = Order::where($where)->find();
if ($check) {
return true;
}
@ -80,11 +106,12 @@ class PayLogic extends Logic
*/
public static function balancePay($order_id, $form)
{
$order_type = 0;
switch ($form) {
case "trade":
$order = OrderTrade::find($order_id);
if (self::checkPayStatus($order_id)) {
$order_type = $order['type'];
if (self::checkPayStatus($order['type'],$order_id)) {
$order['pay_status'] = PayEnum::ISPAID;
}
break;
@ -131,32 +158,115 @@ class PayLogic extends Logic
}
}
//记录余额
$acountLogResult = AccountLogLogic::AccountRecord($order['user_id'], $order['order_amount'], 2, AccountLog::balance_pay_order);
$acountLogResult = AccountLogLogic::AccountRecord($order['user_id'], $order['order_amount'], 2, $order_type==1?AccountLog::balance_pay_user:($order_type==2?AccountLog::balance_pay_resource:AccountLog::balance_pay_order));
if ($acountLogResult === false) {
Db::rollback();
return JsonServer::error('账户明细记录添加失败');
}
if ($form == "trade") {
$order_id = Order::where('trade_id', $order_id)->column('id');
if($order_type==0){
$order_id = Order::where('trade_id', $order_id)->column('id');
$orderStatusChange = self::changOrderStatus($order_id);
}elseif($order_type==1){
$order_user = OrderUser::where('trade_id', $order_id)->field("id")->find();
$order_id = $order_user['id'];
$orderStatusChange = self::changUserOrderStatus($order_id);
}elseif($order_type==2){
$order_user = OrderResource::where('trade_id', $order_id)->find();
$order_id = $order_user['id'];
$orderStatusChange = self::changResourceOrderStatus($order_id);
}
}
$orderStatusChange = self::changOrderStatus($order_id);
if ($orderStatusChange == false) {
Db::rollback();
return JsonServer::error('子订单状态改变失败');
}
// 生成分销订单
self::distributionOrderGoods($order_id);
// 更新分销会员等级
DistributionLevelLogic::updateDistributionLevel($order['user_id']);
if($order_type == 0 ){
// 生成分销订单
self::distributionOrderGoods($order_id);
// 更新分销会员等级
DistributionLevelLogic::updateDistributionLevel($order['user_id']);
if($form == "trade"){
$orders = Order::where([['id','in',$order_id]])->select();
foreach ($orders as $item) {
// 增加商品销量
$order_goods = OrderGoods::where('order_id', $item['id'])->select()->toArray();
foreach ($order_goods as $order_good) {
Goods::where('id', $order_good['goods_id'])
->inc('sales_actual', $order_good['goods_num'])
->update();
}
//修改用户消费累计额度
$user = User::find($item['user_id']);
$user->total_order_amount = ['inc', $item['order_amount']];
$user->save();
//赠送成长值
$growth_ratio = ConfigServer::get('transaction', 'money_to_growth', 0);
if ($growth_ratio > 0) {
$able_get_growth = floor($item['total_amount'] / $growth_ratio);
$user->where('id', $item['user_id'])
->inc('user_growth', $able_get_growth)
->update();
AccountLogLogic::AccountRecord($item['user_id'], $able_get_growth, 1, AccountLog::order_give_growth, '', $item['id'], $item['order_sn']);
}
if($form == "trade"){
$orders = Order::where([['id','in',$order_id]])->select();
foreach ($orders as $item) {
//赠送积分
$open_award = ConfigServer::get('order_award', 'open_award', 0);
if ($open_award == 1) {
$award_event = ConfigServer::get('order_award', 'award_event', 0);
$award_ratio = ConfigServer::get('order_award', 'award_ratio', 0);
if ($award_ratio > 0) {
$award_integral = floor($item['order_amount'] * ($award_ratio / 100));
}
}
Order::update(['award_integral_status' => $award_event ?? 0,'award_integral' => $award_integral ?? 0],['id'=>$item['id']]);
//通知用户
event('Notice', [
'scene' => NoticeEnum::ORDER_PAY_NOTICE,
'mobile' => $user['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
]);
//通知商家
if (!empty($item['shop']['mobile'])) {
event('Notice', [
'scene' => NoticeEnum::USER_PAID_NOTICE_SHOP,
'mobile' => $item['shop']['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
]);
}
// 打印小票
event('Printer', [
'order_id' => $item['id'],
]);
OrderLogLogic::record(
OrderLogEnum::TYPE_USER,
OrderLogEnum::USER_PAID_ORDER,
$item['id'],
$item['user_id'],
OrderLogEnum::getLogDesc(OrderLogEnum::USER_PAID_ORDER)
);
}
// 虚拟商品更新订单信息
GoodsVirtualLogic::afterPayVirtualDelivery($order_id);
} else{
// 增加商品销量
$order_goods = OrderGoods::where('order_id', $item['id'])->select()->toArray();
$order_goods = OrderGoods::where('order_id', $order['id'])->select();
foreach ($order_goods as $order_good) {
Goods::where('id', $order_good['goods_id'])
->inc('sales_actual', $order_good['goods_num'])
@ -164,18 +274,18 @@ class PayLogic extends Logic
}
//修改用户消费累计额度
$user = User::find($item['user_id']);
$user->total_order_amount = ['inc', $item['order_amount']];
$user = User::find($order['user_id']);
$user->total_order_amount = ['inc', $order['order_amount']];
$user->save();
//赠送成长值
$growth_ratio = ConfigServer::get('transaction', 'money_to_growth', 0);
if ($growth_ratio > 0) {
$able_get_growth = floor($item['total_amount'] / $growth_ratio);
$user->where('id', $item['user_id'])
$able_get_growth = floor($order['total_amount'] / $growth_ratio);
$user->where('id', $order['user_id'])
->inc('user_growth', $able_get_growth)
->update();
AccountLogLogic::AccountRecord($item['user_id'], $able_get_growth, 1, AccountLog::order_give_growth, '', $item['id'], $item['order_sn']);
AccountLogLogic::AccountRecord($order['user_id'], $able_get_growth, 1, AccountLog::order_give_growth, '', $order['id'], $order['order_sn']);
}
@ -185,112 +295,50 @@ class PayLogic extends Logic
$award_event = ConfigServer::get('order_award', 'award_event', 0);
$award_ratio = ConfigServer::get('order_award', 'award_ratio', 0);
if ($award_ratio > 0) {
$award_integral = floor($item['order_amount'] * ($award_ratio / 100));
$award_integral = floor($order['order_amount'] * ($award_ratio / 100));
}
}
Order::update(['award_integral_status' => $award_event ?? 0,'award_integral' => $award_integral ?? 0],['id'=>$item['id']]);
Order::update(['award_integral_status' => $award_event ?? 0,'award_integral' => $award_integral ?? 0],['id'=>$order['id']]);
// 虚拟商品更新订单信息
GoodsVirtualLogic::afterPayVirtualDelivery($order['id']);
//通知用户
event('Notice', [
'scene' => NoticeEnum::ORDER_PAY_NOTICE,
'mobile' => $user['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
'params' => ['order_id' => $order['id'], 'user_id' => $order['user_id']]
]);
//通知商家
if (!empty($item['shop']['mobile'])) {
if (!empty($order['shop']['mobile'])) {
event('Notice', [
'scene' => NoticeEnum::USER_PAID_NOTICE_SHOP,
'mobile' => $item['shop']['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
'mobile' => $order['shop']['mobile'],
'params' => ['order_id' => $order['id'], 'user_id' => $order['user_id']]
]);
}
// 打印小票
event('Printer', [
'order_id' => $item['id'],
'order_id' => $order['id'],
]);
OrderLogLogic::record(
OrderLogEnum::TYPE_USER,
OrderLogEnum::USER_PAID_ORDER,
$item['id'],
$item['user_id'],
$order['id'],
$order['user_id'],
OrderLogEnum::getLogDesc(OrderLogEnum::USER_PAID_ORDER)
);
}
// 虚拟商品更新订单信息
GoodsVirtualLogic::afterPayVirtualDelivery($order_id);
} else{
// 增加商品销量
$order_goods = OrderGoods::where('order_id', $order['id'])->select();
foreach ($order_goods as $order_good) {
Goods::where('id', $order_good['goods_id'])
->inc('sales_actual', $order_good['goods_num'])
->update();
}
//修改用户消费累计额度
$user = User::find($order['user_id']);
$user->total_order_amount = ['inc', $order['order_amount']];
$user->save();
//赠送成长值
$growth_ratio = ConfigServer::get('transaction', 'money_to_growth', 0);
if ($growth_ratio > 0) {
$able_get_growth = floor($order['total_amount'] / $growth_ratio);
$user->where('id', $order['user_id'])
->inc('user_growth', $able_get_growth)
->update();
AccountLogLogic::AccountRecord($order['user_id'], $able_get_growth, 1, AccountLog::order_give_growth, '', $order['id'], $order['order_sn']);
}
//赠送积分
$open_award = ConfigServer::get('order_award', 'open_award', 0);
if ($open_award == 1) {
$award_event = ConfigServer::get('order_award', 'award_event', 0);
$award_ratio = ConfigServer::get('order_award', 'award_ratio', 0);
if ($award_ratio > 0) {
$award_integral = floor($order['order_amount'] * ($award_ratio / 100));
}
}
Order::update(['award_integral_status' => $award_event ?? 0,'award_integral' => $award_integral ?? 0],['id'=>$order['id']]);
// 虚拟商品更新订单信息
GoodsVirtualLogic::afterPayVirtualDelivery($order['id']);
//通知用户
event('Notice', [
'scene' => NoticeEnum::ORDER_PAY_NOTICE,
'mobile' => $user['mobile'],
'params' => ['order_id' => $order['id'], 'user_id' => $order['user_id']]
]);
//通知商家
if (!empty($order['shop']['mobile'])) {
event('Notice', [
'scene' => NoticeEnum::USER_PAID_NOTICE_SHOP,
'mobile' => $order['shop']['mobile'],
'params' => ['order_id' => $order['id'], 'user_id' => $order['user_id']]
]);
}
// 打印小票
event('Printer', [
'order_id' => $order['id'],
]);
OrderLogLogic::record(
OrderLogEnum::TYPE_USER,
OrderLogEnum::USER_PAID_ORDER,
$order['id'],
$order['user_id'],
OrderLogEnum::getLogDesc(OrderLogEnum::USER_PAID_ORDER)
);
}elseif($order_type == 1){
self::conplateUserOrder($order_id);
}elseif($order_type == 2){
self::conplateResourceOrder($order_id);
}
Db::commit();
return JsonServer::success('支付成功', [], 20001);
} catch (\Exception $e) {
@ -299,6 +347,91 @@ class PayLogic extends Logic
}
}
public static function conplateUserOrder($order_id){
//用户会员卡支付完成后更新相关信息
$item = OrderUser::where('id',$order_id)->find();
$userShip = UserShip::where('id', $item['org_id'])->find();
UserShip::where('id', $item['org_id'])->inc('sales_num', 1)->update();
//修改用户消费累计额度
$user = User::find($item['user_id']);
$user->total_order_amount = ['inc', $item['order_amount']];
//修改用户当前会员到期时间
$exp_time = $userShip['type'] == "forever"?0:($user['exp_time']>0 && $user['exp_time']>time()?$user['exp_time']+$userShip['vip_day']*3600*24:time()+$userShip['vip_day']*3600*24);
// $exp_time = $user['exp_time']>0 && $user['exp_time']>time()?$user['exp_time']+$userShip['vip_day']*3600*24:time()+$userShip['vip_day']*3600*24;
$user->ship_id = $userShip['id'];
$user->exp_time = $exp_time;
if($userShip['type'] == "free"){
$user->ship_free = 1;
}
$user->save();
//通知用户
event('Notice', [
'scene' => NoticeEnum::ORDER_USER_NOTICE,
'mobile' => $user['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
]);
// 打印小票
event('Printer', [
'order_id' => $item['id'],
]);
OrderLogLogic::record(
OrderLogEnum::TYPE_USER,
OrderLogEnum::USER_PAID_ORDER,
$item['id'],
$item['user_id'],
"会员卡购买成功"
);
}
public static function conplateResourceOrder($order_id){
//用户会员卡支付完成后更新相关信息
$item = OrderResource::where('id',$order_id)->find();
$resource = Resource::where('id', $item['org_id'])->find();
Resource::where('id', $item['org_id'])->inc('sales_num', 1)->update();
//修改用户消费累计额度
$user = User::find($item['user_id']);
$user->total_order_amount = ['inc', $item['order_amount']];
$user->save();
//授权下载
$userResource = [];
$userResource['user_id'] = $item['user_id'];
$userResource['resource_id'] = $item['org_id'];
$userResource['type'] = 1;
$userResource['create_time'] = time();
$userResourceModel = new UserResource();
$userResourceModel->insert($userResource);
//通知用户
event('Notice', [
'scene' => NoticeEnum::ORDER_RESOURCE_NOTICE,
'mobile' => $user['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
]);
// 打印小票
event('Printer', [
'order_id' => $item['id'],
]);
OrderLogLogic::record(
OrderLogEnum::TYPE_USER,
OrderLogEnum::USER_PAID_ORDER,
$item['id'],
$item['user_id'],
"资料购买成功"
);
}
/**
* @notes 微信支付
* @param $order_id
@ -319,7 +452,7 @@ class PayLogic extends Logic
switch ($form) {
case "trade":
$order = OrderTrade::find($order_id);
if (self::checkPayStatus($order_id)) {
if (self::checkPayStatus($order['type'],$order_id)) {
$order['pay_status'] = PayEnum::ISPAID;
}
break;
@ -405,6 +538,53 @@ class PayLogic extends Logic
}
/**
* order表状态改变
*/
public static function changUserOrderStatus($order_id)
{
$where = ['id', '=', $order_id];
if (is_array($order_id)) {
$where = ['id', 'in', $order_id];
}
$orders = OrderUser::where([ $where ])
->update([
'pay_status' => PayEnum::ISPAID,
'order_status' => 3,
'pay_way' => OrderEnum::PAY_WAY_BALANCE,
'pay_time' => time()
]);
if ($orders) {
return true;
}
return false;
}
/**
* order表状态改变
*/
public static function changResourceOrderStatus($order_id)
{
$where = ['id', '=', $order_id];
if (is_array($order_id)) {
$where = ['id', 'in', $order_id];
}
$orders = OrderResource::where([ $where ])
->update([
'pay_status' => PayEnum::ISPAID,
'order_status' => 3,
'pay_way' => OrderEnum::PAY_WAY_BALANCE,
'pay_time' => time()
]);
if ($orders) {
return true;
}
return false;
}
/**
* @notes 分销逻辑
* @param $order_id
* @param $user_id

5
app/api/logic/UserLogic.php

@ -593,6 +593,7 @@ class UserLogic extends Logic
->field('*')
->findOrEmpty();
$ship_free = $userInfo['ship_free'];
if(!$ship_free){
$info = UserShip::where(['del' => 0])
->field('*')
@ -600,7 +601,7 @@ class UserLogic extends Logic
->order('sort asc')
->toArray();
}else{
$info = UserShip::where(['del' => 0,'type'=>['<>','free']])
$info = UserShip::where('del' , 0)->where('type','<>','free')
->field('*')
->select()
->order('sort asc')
@ -644,7 +645,7 @@ class UserLogic extends Logic
if(!$shipId){
$time = ['time'=>date('Y-m-d',strtotime("+".$day." day"))];
}else{
$time = ['time'=>date('Y-m-d',intval($time)+intval($day)*3600*24)];
$time = ['time'=>date('Y-m-d',intval($exTime)+intval($day)*3600*24)];
}
}

41
app/api/validate/OrderResourceValidate.php

@ -0,0 +1,41 @@
<?php
namespace app\api\validate;
use app\common\basics\Validate;
class OrderResourceValidate extends Validate
{
protected $rule = [
'org_id' => 'require',
];
protected $message = [
'org_id' => '请选择资料'
];
protected $scene = [
'add' => ['id'],
'detail' => ['id'],
];
/**
* @notes 参数验证
* @param $value
* @param $arr
* @param $data
* @return bool|string
* @author suny
* @date 2021/7/13 6:29 下午
*/
public function checkParam($value, $arr, $data)
{
if (!isset($data['org_id'])) {
return '请选择资料';
}
return true;
}
}

41
app/api/validate/OrderUserValidate.php

@ -0,0 +1,41 @@
<?php
namespace app\api\validate;
use app\common\basics\Validate;
class OrderUserValidate extends Validate
{
protected $rule = [
'org_id' => 'require',
];
protected $message = [
'org_id' => '请选择会员卡'
];
protected $scene = [
'add' => ['id'],
'detail' => ['id'],
];
/**
* @notes 参数验证
* @param $value
* @param $arr
* @param $data
* @return bool|string
* @author suny
* @date 2021/7/13 6:29 下午
*/
public function checkParam($value, $arr, $data)
{
if (!isset($data['org_id'])) {
return '参数有误';
}
return true;
}
}

12
app/common/enum/NoticeEnum.php

@ -49,6 +49,7 @@ class NoticeEnum
const GET_BACK_PAY_CODE_NOTICE = 112; //找回支付密码
//通知会员-订单相关
const ORDER_PAY_NOTICE = 103; //成功下单通知
const ORDER_DELIVERY_NOTICE = 104; //订单发货通知
const AFTER_SALE_NOTICE = 105; //售后退款申请状态通知
//通知会员-佣金相关
@ -59,6 +60,11 @@ class NoticeEnum
const SHOP_APPLY_ERROR_NOTICE = 108; //商家入驻申请失败通知
const SHOP_APPLY_SUCCESS_NOTICE = 109; //商家入驻申请成功通知
const SHOP_APPLY_CHECK_CODE = 114; //商家入驻手机短信验证通知
const ORDER_USER_NOTICE = 115; //成功购买会员卡通知
const ORDER_RESOURCE_NOTICE = 116; //成功购买资料通知
//**************************************************************************************************************
@ -101,6 +107,8 @@ class NoticeEnum
self::BIND_MOBILE_NOTICE,
self::GET_BACK_PAY_CODE_NOTICE,
self::SHOP_APPLY_CHECK_CODE,
self::ORDER_USER_NOTICE,
self::ORDER_RESOURCE_NOTICE,
];
//通知游客(还不存在当前系统的人)
@ -131,6 +139,8 @@ class NoticeEnum
//场景值-短信场景
const SMS_SCENE = [
'DDZFTZ' => self::ORDER_PAY_NOTICE, //订单支付通知
'DDHYTZ' => self::ORDER_USER_NOTICE, //会员卡订单通知
'DDZLTZ' => self::ORDER_RESOURCE_NOTICE, //资料订单支付通知
'DDFHTZ' => self::ORDER_DELIVERY_NOTICE, //订单发货通知
'ZCYZ' => self::REGISTER_NOTICE, //注册验证
'ZHMM' => self::GET_BACK_MOBILE_NOTICE, //找回密码
@ -168,6 +178,8 @@ class NoticeEnum
self::GET_BACK_PAY_CODE_NOTICE => '找回支付密码短信验证码通知',
//会员-订单相关通知
self::ORDER_PAY_NOTICE => '成功下单通知',
self::ORDER_USER_NOTICE => '成功购买会员卡通知',
self::ORDER_RESOURCE_NOTICE => '成功购买资料通知',
self::ORDER_DELIVERY_NOTICE => '订单发货通知',
self::AFTER_SALE_NOTICE => '售后退款申请状态通知',
//会员-佣金相关通知

249
app/common/logic/PayNotifyLogic.php

@ -25,12 +25,17 @@ use app\common\enum\IntegralGoodsEnum;
use app\common\enum\IntegralOrderEnum;
use app\common\enum\NoticeEnum;
use app\common\model\{AccountLog,
content\Resource,
goods\Goods,
integral\IntegralGoods,
integral\IntegralOrder,
order\OrderGoods,
order\OrderResource,
order\OrderUser,
RechargeOrder,
shop\Shop};
shop\Shop,
user\UserResource,
user\UserShip};
use app\common\enum\OrderEnum;
use app\common\enum\OrderLogEnum;
use app\common\enum\PayEnum;
@ -118,98 +123,220 @@ class PayNotifyLogic
{
//根据父订单号查找父订单
$trade = OrderTrade::where(['t_sn' => $order_sn])->find();
//根据父订单id查找子订单
$orders = Order::with(['order_goods', 'shop'])
->where('trade_id', $trade['id'])
->select()->toArray();
//修改用户消费累计额度
$user = User::find($trade['user_id']);
$user->total_order_amount = ['inc', $trade['order_amount']];
$user->save();
if($trade['type'] == 0){
//根据父订单id查找子订单
$orders = Order::with(['order_goods', 'shop'])
->where('trade_id', $trade['id'])
->select()->toArray();
//修改用户消费累计额度
$user = User::find($trade['user_id']);
$user->total_order_amount = ['inc', $trade['order_amount']];
$user->save();
//赠送成长值
$growth_ratio = ConfigServer::get('transaction', 'money_to_growth', 0);
if ($growth_ratio > 0) {
$able_get_growth = floor($trade['total_amount'] / $growth_ratio);
$user->where('id', $trade['user_id'])
->inc('user_growth', $able_get_growth)
->update();
AccountLogLogic::AccountRecord($trade['user_id'], $able_get_growth, 1, AccountLog::order_give_growth, '', $trade['id'], $order_sn);
}
//赠送成长值
$growth_ratio = ConfigServer::get('transaction', 'money_to_growth', 0);
if ($growth_ratio > 0) {
$able_get_growth = floor($trade['total_amount'] / $growth_ratio);
$user->where('id', $trade['user_id'])
->inc('user_growth', $able_get_growth)
->update();
AccountLogLogic::AccountRecord($trade['user_id'], $able_get_growth, 1, AccountLog::order_give_growth, '', $trade['id'], $order_sn);
}
// 生成分销订单
PayLogic::distributionOrderGoods(array_column($orders, 'id'));
// 更新分销会员等级
DistributionLevelLogic::updateDistributionLevel($trade['user_id']);
foreach ($orders as $item) {
//赠送积分
$open_award = ConfigServer::get('order_award', 'open_award', 0);
if ($open_award == 1) {
$award_event = ConfigServer::get('order_award', 'award_event', 0);
$award_ratio = ConfigServer::get('order_award', 'award_ratio', 0);
if ($award_ratio > 0) {
$award_integral = floor($item['order_amount'] * ($award_ratio / 100));
}
}
// 生成分销订单
PayLogic::distributionOrderGoods(array_column($orders, 'id'));
// 更新分销会员等级
DistributionLevelLogic::updateDistributionLevel($trade['user_id']);
//更新订单状态
$data = [
'pay_status' => PayEnum::ISPAID,
'pay_time' => time(),
'order_status' => Order::STATUS_WAIT_DELIVERY,
'award_integral_status' => $award_event ?? 0,
'award_integral' => $award_integral ?? 0
];
//如果返回了第三方流水号
if (isset($extra['transaction_id'])) {
$data['transaction_id'] = $extra['transaction_id'];
}
Order::update($data, ['id' => $item['id']]);
foreach ($orders as $item) {
// 增加一条订单日志
$order_log_add_data = self::getOrderLogData($item['id'], $item['user_id'], $item['shop_id']);
$order_log_datas_insert[] = $order_log_add_data;
OrderLog::insertAll($order_log_datas_insert);
// if ($item['order_type'] == order::NORMAL_ORDER){
// DistributionServer::commission($item['id']);
// }
//通知用户
event('Notice', [
'scene' => NoticeEnum::ORDER_PAY_NOTICE,
'mobile' => $user['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
]);
//赠送积分
$open_award = ConfigServer::get('order_award', 'open_award', 0);
if ($open_award == 1) {
$award_event = ConfigServer::get('order_award', 'award_event', 0);
$award_ratio = ConfigServer::get('order_award', 'award_ratio', 0);
if ($award_ratio > 0) {
$award_integral = floor($item['order_amount'] * ($award_ratio / 100));
//通知商家
if (!empty($item['shop']['mobile'])) {
event('Notice', [
'scene' => NoticeEnum::USER_PAID_NOTICE_SHOP,
'mobile' => $item['shop']['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
]);
}
event('Printer', [
'order_id' => $item['id'],
]);
}
//如果返回了第三方流水号
if (isset($extra['transaction_id'])) {
$trade->transaction_id = $extra['transaction_id'];
$trade->save();
}
$order_ids = array_column($orders, 'id');
// 虚拟商品更新订单信息
GoodsVirtualLogic::afterPayVirtualDelivery($order_ids);
// 更新商品销量
self::updateGoodsSales($order_ids);
}elseif ($trade['type'] == 2){
//如果返回了第三方流水号
if (isset($extra['transaction_id'])) {
$trade->transaction_id = $extra['transaction_id'];
$trade->save();
}
//用户会员卡支付完成后更新相关信息
$item = OrderResource::where('id',$trade['id'])->find();
$resource = Resource::where('id', $item['org_id'])->find();
Resource::where('id', $item['org_id'])->inc('sales_num', 1)->update();
//更新订单状态
$data = [
'pay_status' => PayEnum::ISPAID,
'pay_time' => time(),
'order_status' => Order::STATUS_WAIT_DELIVERY,
'award_integral_status' => $award_event ?? 0,
'award_integral' => $award_integral ?? 0
'order_status' => 3,
];
//如果返回了第三方流水号
if (isset($extra['transaction_id'])) {
$data['transaction_id'] = $extra['transaction_id'];
}
Order::update($data, ['id' => $item['id']]);
OrderResource::update($data, ['id' => $item['id']]);
//修改用户消费累计额度
$user = User::find($item['user_id']);
$user->total_order_amount = ['inc', $item['order_amount']];
$user->save();
//授权下载
$userResource = [];
$userResource['user_id'] = $item['user_id'];
$userResource['resource_id'] = $item['org_id'];
$userResource['type'] = 1;
$userResource['create_time'] = time();
$userResourceModel = new UserResource();
$userResourceModel->insert($userResource);
// 增加一条订单日志
$order_log_add_data = self::getOrderLogData($item['id'], $item['user_id'], $item['shop_id']);
$order_log_datas_insert[] = $order_log_add_data;
OrderLog::insertAll($order_log_datas_insert);
// if ($item['order_type'] == order::NORMAL_ORDER){
// DistributionServer::commission($item['id']);
// }
//通知用户
event('Notice', [
'scene' => NoticeEnum::ORDER_PAY_NOTICE,
'scene' => NoticeEnum::ORDER_RESOURCE_NOTICE,
'mobile' => $user['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
]);
//通知商家
if (!empty($item['shop']['mobile'])) {
event('Notice', [
'scene' => NoticeEnum::USER_PAID_NOTICE_SHOP,
'mobile' => $item['shop']['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
]);
// 打印小票
event('Printer', [
'order_id' => $item['id'],
]);
OrderLogLogic::record(
OrderLogEnum::TYPE_USER,
OrderLogEnum::USER_PAID_ORDER,
$item['id'],
$item['user_id'],
"资料购买成功"
);
}elseif ($trade['type'] == 1){
//如果返回了第三方流水号
if (isset($extra['transaction_id'])) {
$trade->transaction_id = $extra['transaction_id'];
$trade->save();
}
//用户会员卡支付完成后更新相关信息
$item = OrderUser::where('id',$trade['id'])->find();
$userShip = UserShip::where('id', $item['org_id'])->find();
UserShip::where('id', $item['org_id'])->inc('sales_num', 1)->update();
//更新订单状态
$data = [
'pay_status' => PayEnum::ISPAID,
'pay_time' => time(),
'order_status' => 3,
];
//如果返回了第三方流水号
if (isset($extra['transaction_id'])) {
$data['transaction_id'] = $extra['transaction_id'];
}
OrderUser::update($data, ['id' => $item['id']]);
//修改用户消费累计额度
$user = User::find($item['user_id']);
$user->total_order_amount = ['inc', $item['order_amount']];
//修改用户当前会员到期时间
$exp_time = $userShip['type']=="forever"?0:($user['exp_time']>0 && $user['exp_time']>time()?$user['exp_time']+$userShip['vip_day']*3600*24:time()+$userShip['vip_day']*3600*24);
$user->ship_id = $userShip['id'];
$user->exp_time = $exp_time;
if($userShip['type'] == "free"){
$user->ship_free = 1;
}
$user->save();
//通知用户
event('Notice', [
'scene' => NoticeEnum::ORDER_USER_NOTICE,
'mobile' => $user['mobile'],
'params' => ['order_id' => $item['id'], 'user_id' => $item['user_id']]
]);
// 打印小票
event('Printer', [
'order_id' => $item['id'],
]);
}
//如果返回了第三方流水号
if (isset($extra['transaction_id'])) {
$trade->transaction_id = $extra['transaction_id'];
$trade->save();
}
$order_ids = array_column($orders, 'id');
OrderLogLogic::record(
OrderLogEnum::TYPE_USER,
OrderLogEnum::USER_PAID_ORDER,
$item['id'],
$item['user_id'],
"会员卡购买成功"
);
// 虚拟商品更新订单信息
GoodsVirtualLogic::afterPayVirtualDelivery($order_ids);
}
// 更新商品销量
self::updateGoodsSales($order_ids);
}
/**

9
app/common/model/AccountLog.php

@ -24,6 +24,9 @@ class AccountLog extends Models
const integral_order_dec_balance = 109;
const integral_order_inc_balance = 110;
const balance_pay_user = 111;
const balance_pay_resource = 112;
const admin_add_integral = 200;
const admin_reduce_integral = 201;
const sign_in_integral = 202;
@ -53,9 +56,11 @@ class AccountLog extends Models
const admin_inc_earnings = 403; //后台增加佣金
const admin_reduce_earnings = 404; //后台减少佣金
const money_change = [ //余额变动类型
self::admin_add_money,self::admin_reduce_money,self::recharge_money,self::balance_pay_order,self::cancel_order_refund,self::after_sale_refund
, self::withdraw_to_balance,self::user_transfer_inc_balance, self::user_transfer_dec_balance, self::integral_order_dec_balance, self::integral_order_inc_balance
, self::withdraw_to_balance,self::user_transfer_inc_balance, self::user_transfer_dec_balance, self::integral_order_dec_balance, self::integral_order_inc_balance,self::balance_pay_user,self::balance_pay_resource
];
const integral_change = [ //积分变动类型
self::admin_add_integral,self::admin_reduce_integral,self::sign_in_integral,self::recharge_give_integral,self::order_award_integral,self::invite_add_integral
@ -95,6 +100,8 @@ class AccountLog extends Models
self::sign_give_growth => '每日签到赠送成长值',
self::recharge_give_growth => '充值赠送成长值',
self::balance_pay_order => '下单扣减余额',
self::balance_pay_user => '购买会员卡扣减余额',
self::balance_pay_resource => '购买资料减余额',
self::cancel_order_refund => '取消订单退回余额',
self::after_sale_refund => '售后退回余额',
self::withdraw_to_balance => '佣金提现',

8
app/common/model/order/Order.php

@ -310,7 +310,10 @@ class Order extends Models
}
//多长时间内允许客户自动取消
$cancel_limit = ConfigServer::get('transaction', 'paid_order_cancel_time', 0);
$limit_time = $data['create_time'] + $cancel_limit * 60;
if($cancel_limit == "" ){
$cancel_limit = 0;
}
$limit_time = $data['create_time'] + intval($cancel_limit) * 60;
if ($limit_time < time()) {
return $btn;
}
@ -533,6 +536,9 @@ class Order extends Models
}
if ($data['order_status'] == 0 && $data['pay_status'] == 0) {
$order_cancel_time = ConfigServer::get('transaction', 'unpaid_order_cancel_time', 30);
if(!is_numeric($order_cancel_time)){
$order_cancel_time = 30;
}
$end_time = $data['create_time'] + $order_cancel_time * 60;
}
return $end_time;

9
app/common/model/order/OrderResource.php

@ -0,0 +1,9 @@
<?php
namespace app\common\model\order;
use app\common\basics\Models;
class OrderResource extends Models
{
}

9
app/common/model/order/OrderUser.php

@ -0,0 +1,9 @@
<?php
namespace app\common\model\order;
use app\common\basics\Models;
class OrderUser extends Models
{
}

22
app/common/server/WeChatPayServer.php

@ -28,6 +28,8 @@ use app\common\logic\PaymentLogic;
use app\common\logic\PayNotifyLogic;
use app\common\model\Client_;
use app\common\model\integral\IntegralOrder;
use app\common\model\order\OrderResource;
use app\common\model\order\OrderUser;
use app\common\model\Pay;
use EasyWeChat\Factory;
use EasyWeChat\Payment\Application;
@ -200,7 +202,7 @@ class WeChatPayServer
case 'trade':
$attributes = [
'trade_type' => 'JSAPI',
'body' => '商品总订单',
'body' => $order['type']==1?'购买会员卡':($order['type']==2?"购买资料":'商品总订单'),
'total_fee' => $order['order_amount'] * 100, // 单位:分
'notify_url' => $notify_url,
'openid' => $auth['openid'] ?? '',
@ -345,9 +347,21 @@ class WeChatPayServer
switch ($attach) {
case 'trade':
$order_trade = OrderTrade::where('t_sn', $message['out_trade_no'])->find();
$order = Order::where('trade_id', $order_trade['id'])->find();
if (!$order || $order['pay_status'] >= PayEnum::ISPAID) {
return true;
if($order_trade['type']==0){
$order = Order::where('trade_id', $order_trade['id'])->find();
if (!$order || $order['pay_status'] >= PayEnum::ISPAID) {
return true;
}
}elseif ($order_trade['type']==1){
$order = OrderUser::where('trade_id', $order_trade['id'])->find();
if (!$order || $order['pay_status'] >= PayEnum::ISPAID) {
return true;
}
}elseif ($order_trade['type']==2){
$order = OrderResource::where('trade_id', $order_trade['id'])->find();
if (!$order || $order['pay_status'] >= PayEnum::ISPAID) {
return true;
}
}
PayNotifyLogic::handle('trade', $message['out_trade_no'], $extra);
break;

4
runtime/cache/51/6acd4f8c5fec7d25182d1c0728d355.php

@ -1,4 +0,0 @@
<?php
//000000001800
exit();?>
7

2
runtime/cache/9f/d2f37875d1da637002182ec566f162.php

@ -1,4 +1,4 @@
<?php
//000000000000
exit();?>
a:3:{i:0;s:75:"D:\waibao\ahbcqz\server\runtime\cache\1e\9273b3315671b45227b5827559a179.php";i:1;s:75:"D:\waibao\ahbcqz\server\runtime\cache\a1\55016152d5af019afbbfd20daf7335.php";i:2;s:75:"D:\waibao\ahbcqz\server\runtime\cache\c0\cf484f10720659d936916d74e6362a.php";}
a:5:{i:0;s:75:"D:\waibao\ahbcqz\server\runtime\cache\1e\9273b3315671b45227b5827559a179.php";i:1;s:75:"D:\waibao\ahbcqz\server\runtime\cache\a1\55016152d5af019afbbfd20daf7335.php";i:2;s:75:"D:\waibao\ahbcqz\server\runtime\cache\c0\cf484f10720659d936916d74e6362a.php";i:3;s:75:"E:\waibao\ahbcqz\server\runtime\cache\35\4c90d26061baaa2f7a972849339da3.php";i:4;s:75:"E:\waibao\ahbcqz\server\runtime\cache\64\80bd487ac5e230fd1fb2d74457b697.php";}

1
runtime/session/sess_3632be6a5ab6055cd5719e554b79bbac

@ -1 +0,0 @@
a:1:{s:10:"admin_info";a:4:{s:2:"id";i:1;s:7:"account";s:5:"admin";s:4:"name";s:5:"admin";s:7:"role_id";i:0;}}
Loading…
Cancel
Save