message('服务到期时间不能小于会员当前的服务到期时间或未填写延长服务天数', '', 'error'); } $tag = floor(($endtime - $card['endtime']) / 86400); if ($days > 0) { $tag = $days; if ($card['endtime'] > TIMESTAMP) { $endtime = $card['endtime'] + $days * 86400; } else { $endtime = strtotime($days . 'days'); } } pdo_update('mc_card_members', array('endtime' => $endtime), array('uniacid' => $_W['uniacid'], 'uid' => $uid)); $endtime = date('Y-m-d', $endtime); $log = array('uniacid' => $_W['uniacid'], 'uid' => $uid, 'type' => 'times', 'model' => 1, 'fee' => $fee, 'tag' => $tag, 'addtime' => TIMESTAMP, 'note' => date('Y-m-d H:i') . "充值{$fee}元,管理员手动设置{$setting['times_text']}到期时间为{$endtime},设置之前的{$setting['times_text']}到期时间为" . date('Y-m-d', $card['endtime']), 'remark' => trim($_GPC['remark'])); pdo_insert('mc_card_record', $log); mc_notice_times_plus($card['openid'], $card['cardsn'], $setting['times_text'], $fee, $tag, $endtime); } if ($type == 'times_times') { $endtime = strtotime($_GPC['endtime']); if ($endtime > $card['endtime']) { message("该会员的{$setting['times_text']}到期时间为:" . date('Y-m-d', $card['endtime']) . ",您当前在进行消费操作,设置到期时间不能超过" . date('Y-m-d', $card['endtime']), '', 'error'); } $flag = intval($_GPC['flag']); if ($flag) { $endtime = TIMESTAMP; } $tag = floor(($card['endtime'] - $endtime) / 86400); pdo_update('mc_card_members', array('endtime' => $endtime), array('uniacid' => $_W['uniacid'], 'uid' => $uid)); $endtime = date('Y-m-d', $endtime); $log = array('uniacid' => $_W['uniacid'], 'uid' => $uid, 'type' => 'times', 'model' => 2, 'fee' => 0, 'tag' => $tag, 'addtime' => TIMESTAMP, 'note' => date('Y-m-d H:i') . "管理员手动设置{$setting['times_text']}到期时间为{$endtime},设置之前的{$setting['times_text']}到期时间为" . date('Y-m-d', $card['endtime']), 'remark' => trim($_GPC['remark'])); pdo_insert('mc_card_record', $log);
public function payResult($params) { global $_W; load()->model('mc'); $order = pdo_fetch("SELECT * FROM " . tablename('mc_credits_recharge') . " WHERE tid = :tid", array(':tid' => $params['tid'])); if (empty($order['status'])) { $fee = $params['fee']; $total_fee = $fee; $data = array('status' => $params['result'] == 'success' ? 1 : -1); if ($params['type'] == 'wechat') { $data['transid'] = $params['tag']['transaction_id']; $params['user'] = mc_openid2uid($params['user']); } pdo_update('mc_credits_recharge', $data, array('tid' => $params['tid'])); if ($params['result'] == 'success' && $params['from'] == 'notify') { $paydata = array('wechat' => '微信', 'alipay' => '支付宝', 'baifubao' => '百付宝', 'unionpay' => '银联'); if (empty($order['type']) || $order['type'] == 'credit') { $setting = uni_setting($_W['uniacid'], array('creditbehaviors', 'recharge')); $credit = $setting['creditbehaviors']['currency']; if (empty($credit)) { message('站点积分行为参数配置错误,请联系服务商', '', 'error'); } else { $recharge = $setting['recharge']; $add_fee = 0; if (!empty($recharge)) { $back = -1; foreach ($recharge as $k => $li) { if ($li['recharge'] <= $fee) { $back = $k; } } if (!empty($recharge[$back])) { $add_fee = $recharge[$back]['back']; $total_fee = $add_fee + $fee; $add_str = ",满足 充{$recharge[$back]['recharge']}返{$recharge[$back]['back']},返余额{$recharge[$back]['back']}元,本次操作共增加余额{$total_fee}元"; } } $record[] = $params['user']; $record[] = '用户通过' . $paydata[$params['type']] . '充值' . $fee . $add_str; mc_credit_update($order['uid'], $credit, $total_fee, $record); $remark = '用户通过' . $paydata[$params['type']] . '充值' . $fee . $add_str; mc_notice_recharge($order['openid'], $order['uid'], $total_fee, '', $remark); } } if ($order['type'] == 'card_nums') { $member_card = pdo_get('mc_card_members', array('uniacid' => $order['uniacid'], 'uid' => $order['uid'])); $total_num = $member_card['nums'] + $order['tag']; pdo_update('mc_card_members', array('nums' => $total_num), array('uniacid' => $order['uniacid'], 'uid' => $order['uid'])); $log = array('uniacid' => $order['uniacid'], 'uid' => $order['uid'], 'type' => 'nums', 'fee' => $params['fee'], 'model' => '1', 'tag' => $order['tag'], 'note' => date('Y-m-d H:i') . "通过{$paydata[$params['type']]}充值{$params['fee']}元,返{$order['tag']}次,总共剩余{$total_num}次", 'addtime' => TIMESTAMP); pdo_insert('mc_card_record', $log); $type = pdo_fetchcolumn('SELECT nums_text FROM ' . tablename('mc_card') . ' WHERE uniacid = :uniacid', array(':uniacid' => $order['uniacid'])); $total_num = $member_card['nums'] + $order['tag']; mc_notice_nums_plus($order['openid'], $type, $order['tag'], $total_num); } if ($order['type'] == 'card_times') { $member_card = pdo_get('mc_card_members', array('uniacid' => $order['uniacid'], 'uid' => $order['uid'])); if ($member_card['endtime'] > TIMESTAMP) { $endtime = $member_card['endtime'] + $order['tag'] * 86400; } else { $endtime = strtotime($order['tag'] . 'days'); } pdo_update('mc_card_members', array('endtime' => $endtime), array('uniacid' => $order['uniacid'], 'uid' => $order['uid'])); $log = array('uniacid' => $order['uniacid'], 'uid' => $order['uid'], 'type' => 'times', 'model' => '1', 'fee' => $params['fee'], 'tag' => $order['tag'], 'note' => date('Y-m-d H:i') . "通过{$paydata[$params['type']]}充值{$params['fee']}元,返{$order['tag']}天,充值后到期时间:" . date('Y-m-d', $endtime), 'addtime' => TIMESTAMP); pdo_insert('mc_card_record', $log); $type = pdo_fetchcolumn('SELECT times_text FROM ' . tablename('mc_card') . ' WHERE uniacid = :uniacid', array(':uniacid' => $order['uniacid'])); $endtime = date('Y-m-d', $endtime); mc_notice_times_plus($order['openid'], $member_card['cardsn'], $type, $fee, $order['tag'], $endtime); } } } if ($order['type'] == 'credit' || $order['type'] == '') { $url = murl('mc/home'); } else { $url = murl('mc/bond/mycard'); } if ($params['from'] == 'return') { if ($params['result'] == 'success') { message('支付成功!', '../../app/' . $url, 'success'); } else { message('支付失败!', '../../app/' . $url, 'error'); } } }