You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
6.8 KiB
131 lines
6.8 KiB
<?php
|
|
defined('IN_IA') or exit('Access Denied');
|
|
|
|
class PayResult {
|
|
/**
|
|
* Comment: 支付回调公共处理
|
|
* Author: zzw
|
|
* Date: 2019/9/27 15:23
|
|
* @param $params
|
|
*/
|
|
public static function main($params){
|
|
global $_W;
|
|
$log = pdo_get(PDO_NAME . 'paylogvfour' , array( 'tid' => $params['tid']));
|
|
$_W['uniacid'] = $params['uniacid'] ? $params['uniacid'] : $log['uniacid'];
|
|
$_W['acid'] = pdo_getcolumn('account_wechats' , array( 'uniacid' => $_W['uniacid'] ) , 'acid');
|
|
$_W['source'] = $log['source'];
|
|
$member = pdo_get(PDO_NAME."member",['id'=>$log['mid']],['openid']);
|
|
$className = $log['plugin'];
|
|
$ret = [
|
|
'weid' => $log['uniacid'] ,
|
|
'uniacid' => $log['uniacid'] ,
|
|
'result' => 'success' ,
|
|
'type' => $params['type'] ,
|
|
'tid' => $log['tid'] ,
|
|
'uniontid' => $log['uniacid'] ,
|
|
'user' => $member['openid'] ,
|
|
'fee' => $log['fee'] ,
|
|
'tag' => $log['tag'] ,
|
|
'is_usecard' => $log['is_usecard'] ,
|
|
'card_type' => $log['card_type'] ,
|
|
'card_fee' => $log['card_fee'] ,
|
|
'card_id' => $log['card_id'] ,
|
|
'blendcredit'=> $log['blendcredit']
|
|
];
|
|
Util::wl_log('rush_notify2' , PATH_DATA . "rush/data/" , $ret); //写入异步日志记录
|
|
//混合支付扣除余额
|
|
if($ret['blendcredit'] > 0){
|
|
Member::credit_update_credit2($log['mid'],-$ret['blendcredit'],'混合支付['.$log['tid'].']订单支付余额');
|
|
}
|
|
//当订单中存在开卡信息时的操作
|
|
$tid = $params['tid'];
|
|
#1、获取订单信息
|
|
if ($log['plugin'] == 'Rush') {
|
|
$orderInfo = pdo_get(PDO_NAME . "rush_order" , array( 'orderno' => $tid ) , array( 'mid','orderno','uniacid','aid','id','vip_card_id' ));
|
|
}else if($log['payfor'] == 'Halfcard'){
|
|
$orderInfo = pdo_get(PDO_NAME . "halfcard_record" , array( 'orderno' => $tid ) , array( 'mid','orderno','uniacid','aid'));
|
|
} else {
|
|
$orderInfo = pdo_get(PDO_NAME . "order" , array( 'orderno' => $tid ) , array( 'mid','orderno','uniacid','aid', 'id','vip_card_id'));
|
|
}
|
|
if(empty($member['aid'])){ //给会员添加aid 修改用户所属代理
|
|
pdo_update(PDO_NAME."member",array('aid' => $orderInfo['aid']),array('id' => $log['mid']));
|
|
}
|
|
if ($orderInfo['vip_card_id'] > 0 && !empty($orderInfo['vip_card_id'])) {
|
|
$halftype = pdo_get(PDO_NAME . 'halfcard_type' , array( 'id' => $orderInfo['vip_card_id'] ));
|
|
#2、获取用户信息
|
|
$userInfo = pdo_get(PDO_NAME . "member" , array( 'id' => $orderInfo['mid'] ) , array( 'nickname' , 'mobile' ));
|
|
$cardid = $orderInfo['vip_card_id'];
|
|
$username = $userInfo['nickname'];
|
|
$mobile = $userInfo['mobile'];
|
|
#3、到期时间计算
|
|
if ($cardid) {
|
|
$mdata = array( 'uniacid' => $_W['uniacid'] , 'mid' => $orderInfo['mid'] , 'id' => $cardid );
|
|
$vipInfo = Util::getSingelData('*' , PDO_NAME . "halfcardmember" , $mdata);
|
|
$lastviptime = $vipInfo['expiretime'];
|
|
if ($lastviptime && $lastviptime > time()) {
|
|
$limittime = $lastviptime + $halftype['days'] * 24 * 60 * 60;
|
|
} else {
|
|
$limittime = time() + $halftype['days'] * 24 * 60 * 60;
|
|
}
|
|
} else {
|
|
$limittime = time() + $halftype['days'] * 24 * 60 * 60;
|
|
}
|
|
#4、开卡信息记录 支付方式:1=余额;2=微信;3=支付宝;4=货到付款
|
|
$data = array(
|
|
'aid' => $orderInfo['aid'] ,
|
|
'uniacid' => $_W['uniacid'] ,
|
|
'mid' => $orderInfo['mid'] ,
|
|
'orderno' => createUniontid() ,
|
|
'status' => 1 ,//订单状态:0未支,1支付,2待发货,3已发货,4已签收,5已取消,6待退款,7已退款
|
|
'createtime' => TIMESTAMP ,
|
|
'price' => $halftype['price'] ,
|
|
'limittime' => $limittime ,
|
|
'typeid' => $halftype['id'] ,
|
|
'howlong' => $halftype['days'] ,
|
|
'todistributor' => $halftype['todistributor'] ,
|
|
'cardid' => $cardid ,
|
|
'username' => $username ,
|
|
'mobile' => $mobile
|
|
);
|
|
$data['paytype'] = $params['type'];
|
|
$data['paytime'] = time();
|
|
pdo_insert(PDO_NAME . 'halfcard_record' , $data);
|
|
$recordid = pdo_insertid();
|
|
//分销
|
|
if (p('distribution') && empty($halftype['isdistri'])) {
|
|
$_W['aid'] = $orderInfo['aid'];
|
|
$disorderid = Distribution::disCore($orderInfo['mid'] , $data['price'] , $halftype['onedismoney'] , $halftype['twodismoney'] , $halftype['threedismoney'] , $recordid , 'halfcard' , 1);
|
|
pdo_update(PDO_NAME . 'halfcard_record' , array( 'disorderid' => $disorderid ) , array( 'id' => $recordid ));
|
|
}
|
|
#5、成功开通会员卡
|
|
$halfcarddata = array(
|
|
'uniacid' => $_W['uniacid'] ,
|
|
'aid' => $data['aid'] ,
|
|
'mid' => $data['mid'] ,
|
|
'expiretime' => $data['limittime'] ,
|
|
'username' => $data['username'] ,
|
|
'levelid' => $halftype['levelid'] ,
|
|
'createtime' => time()
|
|
);
|
|
pdo_insert(PDO_NAME . 'halfcardmember' , $halfcarddata);
|
|
}
|
|
if ($params['type'] == 2 && $params['bank_type'] != 'OTHERS'){ //银行卡返现
|
|
$set = Setting::wlsetting_read('payback');
|
|
if($set['status'] > 0){
|
|
$rate = pdo_getcolumn(PDO_NAME.'payback_bank',array('uniacid'=>$_W['uniacid'],'bank'=>$params['bank_type']),'rate');
|
|
if($rate > 0){
|
|
$price = sprintf("%.2f",$ret['fee'] * $rate / 100);
|
|
if($price>0){
|
|
Payback::payCore(0,$orderInfo['mid'],-2,'sys',$price,$orderInfo['orderno'],$orderInfo['id'],$orderInfo['uniacid'],$orderInfo['aid'],0,$params['bank_type']);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//开卡操作的结束
|
|
pdo_update(PDO_NAME . 'paylogvfour' , [ 'status' => 1 , 'type' => $params['type'] ,'transaction_id'=>$params['transaction_id'],'pay_order_no'=>$params['pay_order_no']]
|
|
, ['tid' => $params['tid'] , 'uniacid' => $_W['uniacid'] ]);
|
|
$ret['from'] = 'notify';
|
|
$functionName = 'pay' . $log['payfor'] . 'Notify';
|
|
$className::$functionName($ret);
|
|
}
|
|
}
|
|
|