public function pay() { $credit = I('get.credit', 0, 'intval'); $json = array('error' => 0, 'message' => '', 'data' => ''); do { if ($credit < 1 || $credit > 999999) { $user = M('user')->find($this->user_id); $data['body'] = "用户充值"; $data['attach'] = "用户充值"; $data['order_sn'] = get_order_sn('TP'); $data['total_fee'] = $credit * 10; $data['time_start'] = date('YmdHis'); $data['time_expire'] = date("YmdHis", time() + 600); $data['goods_tag'] = "WXG"; // $openid = ;//session('openid')?session('openid'):cookie('openid'); $data['openid'] = $user['openid']; $this->jsApiParameters = jsapipay($data, false); $json['data'] = json_decode($this->jsApiParameters); break; } #$this->error("红包状态不能支付", U('/notes')); $json['error'] = 1; $json['message'] = "红包状态不能支付"; break; } while (false); echo json_encode($json); die; }
public function createOrder($options) { //检测手机号码格式 $chkmobile = checkmobile($options['mobile']); if ($chkmobile !== 0) { return $chkmobile; } //var_dump($options); $userinfo = D('Member')->certificate($options['key']); if (!is_array($userinfo)) { return $userinfo; } //20002 $orderModel = M('51_orders'); //填充订单数据 status - 0: 进行中,1:已结束,2:已取消, 999:已删除 $orderdata['orderid'] = get_order_sn(); //订单号 $orderdata['uid'] = $userinfo['uid']; $orderdata['status'] = 0; $orderdata['options'] = array2string($options); print_r(string2array($orderdata['options'])); $result = $orderModel->create($orderdata); }
$orgCheckcode = GetCkVdValue(); if ($checkcode != $orgCheckcode || empty($checkcode)) { echo 'nocheckcode'; return; } $_SESSION['total_value'] = ''; $tourer = Helper_Archive::getTourer($_POST); $needjifen = $usejifen ? Helper_Archive::getNeedJifen($jifentprice) : 0; $userinfo = $User->getInfoByMid($User->uid); //获取用户信息 //这里再次判断用户积分是否满足条件. if ($userinfo['jifen'] < $needjifen) { $usejifen = 0; $needjifen = 0; } $ordersn = get_order_sn('08'); //订单号 $memberid = $User->uid ? $User->uid : 0; $row = getVisaInfo($productaid); $status = $paytype == 1 ? 1 : 0; $linktel = Helper_Archive::pregReplace($linktel, 2); $arr = array('ordersn' => $ordersn, 'webid' => $webid, 'typeid' => $typeid, 'productautoid' => $productautoid, 'productaid' => $row['aid'], 'productname' => $row['title'], 'price' => $row['price'], 'childprice' => 0, 'dingnum' => Helper_Archive::pregReplace($dingnum, 2), 'usedate' => $usedate, 'childnum' => 0, 'linkman' => Helper_Archive::pregReplace($linkman, 5), 'linktel' => Helper_Archive::pregReplace($linktel, 2), 'linkemail' => Helper_Archive::pregReplace($linkemail, 5), 'linkqq' => '', 'jifentprice' => $row['jifentprice'], 'jifenbook' => $row['jifenbook'], 'jifencomment' => $row['jifencomment'], 'addtime' => time(), 'memberid' => $memberid, 'dingjin' => Helper_Archive::pregReplace($dingjin, 5), 'paytype' => $paytype, 'usejifen' => $usejifen, 'needjifen' => $needjifen, 'status' => $status, 'remark' => Helper_Archive::pregReplace($remarkinfo, 5), 'tourer' => $tourer); if (Helper_Archive::addOrder($arr)) { $model = new CommonModule('#@__member_order'); $orderid = $model->getField('id', "ordersn='{$ordersn}'"); //判断是否开启在线支付 if (!empty($choosepay) && $paytype != '3' && $choosepay != '6') { $url = $GLOBALS['cfg_basehost'] . '/visa/booking.php?dopost=payonline&id=' . $orderid . '&paytype=' . $choosepay; } else { //$url = "{$GLOBALS['cfg_basehost']}/visa/show_{$arr['productaid']}.html"; $url = "{$GLOBALS['cfg_basehost']}/member/query.php?dopost=search&mobile={$linktel}";
$step = isset($_REQUEST['step']) && in_array($_REQUEST['step'], $step_list) ? $_REQUEST['step'] : 'user'; /* 取得参数 order_id */ $order_id = isset($_REQUEST['order_id']) ? intval($_REQUEST['order_id']) : 0; if ($order_id > 0) { $old_order = order_info($order_id); } /* 取得参数 step_act 添加还是编辑 */ $step_act = isset($_REQUEST['step_act']) ? $_REQUEST['step_act'] : 'add'; /* 插入订单信息 */ if ('user' == $step) { /* 取得参数:user_id */ $user_id = $_POST['anonymous'] == 1 ? 0 : intval($_POST['user']); /* 插入新订单,状态为无效 */ $order = array('user_id' => $user_id, 'add_time' => gmtime(), 'order_status' => OS_INVALID, 'shipping_status' => SS_UNSHIPPED, 'pay_status' => PS_UNPAYED, 'from_ad' => 0, 'referer' => $_LANG['admin']); do { $order['order_sn'] = get_order_sn(); if ($db->autoExecute($ecs->table('order_info'), $order, 'INSERT', '', 'SILENT')) { break; } else { if ($db->errno() != 1062) { die($db->error()); } } } while (true); // 防止订单号重复 $order_id = $db->insert_id(); /* todo 记录日志 */ admin_log($order['order_sn'], 'add', 'order'); /* 插入 pay_log */ $sql = 'INSERT INTO ' . $ecs->table('pay_log') . " (order_id, order_amount, order_type, is_paid)" . " VALUES ('{$order_id}', 0, '" . PAY_ORDER . "', 0)"; $db->query($sql);
{ //推荐注册分成 $parent_id = 0; } else { //分成功能关闭 $parent_id = 0; } $order['parent_id'] = $parent_id; /* 插入订单表 */ $error_no = 0; do { $order['order_sn'] = get_order_sn(); //获取新订单号 $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT'); $error_no = $GLOBALS['db']->errno(); if ($error_no > 0 && $error_no != 1062) { die($GLOBALS['db']->errorMsg()); } } while ($error_no == 1062); //如果是订单号重复则重新提交数据 $new_order_id = $db->insert_id(); $order['order_id'] = $new_order_id; /* 插入订单商品 */
function split_order($new_order_id) { $sql = "select IF(g.supplier_id, g.supplier_id,0) AS supplier_id, og.rec_id, og.goods_number, og.goods_price from " . $GLOBALS['ecs']->table("order_goods") . " AS og left join " . $GLOBALS['ecs']->table("goods") . " AS g on og.goods_id=g.goods_id " . " where og.order_id = '{$new_order_id}' "; $res = $GLOBALS['db']->query($sql); $split_orders = array(); $all_amount = 0; while ($row = $GLOBALS['db']->fetchRow($res)) { $split_orders[$row['supplier_id']]['goods_amount'] += $row['goods_number'] * $row['goods_price']; $split_orders[$row['supplier_id']]['goods_reclist'][] = $row['rec_id']; $split_orders[$row['supplier_id']]['order_sn'] = $split_orders[$row['supplier_id']]['order_sn'] ? $split_orders[$row['supplier_id']]['order_sn'] : get_order_sn(); $split_orders[$row['supplier_id']]['shipping_fee'] = $GLOBALS['total']['supplier_shipping'][$row['supplier_id']]['shipping_fee']; $split_orders[$row['supplier_id']]['order_amount'] = $split_orders[$row['supplier_id']]['goods_amount'] + $split_orders[$row['supplier_id']]['shipping_fee']; $split_orders[$row['supplier_id']]['order_amount_formated'] = price_format($split_orders[$row['supplier_id']]['order_amount']); $all_amount += $split_orders[$row['supplier_id']]['order_amount']; } //下单来源 $order_from = WEB_FROM; $count_split_orders = count($split_orders); foreach ($split_orders as $spkey => $split) { //获的返佣ID if ($spkey > 0) { $sql = "select rebate_id, rebate_paytime_start, rebate_paytime_end from " . $GLOBALS['ecs']->table('supplier_rebate') . " where supplier_id='{$spkey}' and is_pay_ok=0 order by rebate_id desc limit 0,1"; $row = $GLOBALS['db']->getRow($sql); $nowtime = gmtime(); if ($nowtime >= $row['rebate_paytime_start'] && $nowtime <= $row['rebate_paytime_end']) { $rebate_id = $row['rebate_id']; } else { $kkk = 'yes'; while ($kkk == 'yes') { insert_id_rebate($spkey); $sql2 = "select rebate_id, rebate_paytime_start, rebate_paytime_end from " . $GLOBALS['ecs']->table('supplier_rebate') . " where supplier_id='{$spkey}' and is_pay_ok=0 order by rebate_id desc limit 0,1"; $row2 = $GLOBALS['db']->getRow($sql2); if ($nowtime >= $row2['rebate_paytime_start'] && $nowtime <= $row2['rebate_paytime_end']) { $rebate_id = $row2['rebate_id']; $kkk = 'no'; } } } } else { $rebate_id = 0; } $order_sn = $split['order_sn']; if ($count_split_orders == 1) { $sql = "update " . $GLOBALS['ecs']->table('order_info') . " set order_sn='{$order_sn}', supplier_id='{$spkey}', parent_order_id='0', rebate_id='{$rebate_id}', froms='{$order_from}' where order_id='{$new_order_id}' "; $GLOBALS['db']->query($sql); } else { $sql = "insert into " . $GLOBALS['ecs']->table('order_info') . "( " . " order_sn, user_id,\torder_status,\tshipping_status, pay_status, consignee, country,\tprovince,\tcity,\tdistrict, address, zipcode, tel,\tmobile\t, email, best_time\t,sign_building,\tpostscript,\tshipping_id,\tshipping_name,\t pay_id,\tpay_name,\thow_oos, how_surplus, pack_name,\tcard_name,\tcard_message,\tinv_payee,\tinv_content, goods_amount,\tshipping_fee,\tinsure_fee,\tpay_fee,\tpack_fee,\tcard_fee, money_paid,\tsurplus,\tintegral,\tintegral_money,\tbonus,\torder_amount,\tfrom_ad,\treferer,\tadd_time,\tconfirm_time,\tpay_time,\tshipping_time,\tpack_id,\tcard_id,\tbonus_id,\tinvoice_no,\textension_code,\textension_id,\tto_buyer,\tpay_note,\tagency_id,\tinv_type,\ttax,\tis_separate,\tparent_id,\tdiscount,\t supplier_id,\tparent_order_id, rebate_id, froms, pickup_point, is_pickup) " . "select '{$order_sn}', user_id,\torder_status,\tshipping_status, pay_status, consignee, country,\tprovince,\tcity,\tdistrict, address, zipcode, tel,\tmobile\t, email, best_time\t,sign_building,\tpostscript,\tshipping_id,\tshipping_name,\t pay_id,\tpay_name,\thow_oos, how_surplus, pack_name,\tcard_name,\tcard_message,\tinv_payee,\tinv_content\t, '" . $split['goods_amount'] . "',\t'" . $split['shipping_fee'] . "',\tinsure_fee,\tpay_fee,\tpack_fee,\tcard_fee,\tmoney_paid,\tsurplus,\tintegral,\tintegral_money,\tbonus,\t'" . $split['order_amount'] . "',\tfrom_ad,\treferer,\tadd_time,\tconfirm_time,\tpay_time,\tshipping_time,\tpack_id,\tcard_id,\tbonus_id,\tinvoice_no,\textension_code,\textension_id,\tto_buyer,\tpay_note,\tagency_id,\tinv_type,\ttax,\tis_separate,\tparent_id,\tdiscount,\t'{$spkey}',\t'{$new_order_id}', '{$rebate_id}', '{$order_from}', pickup_point, is_pickup from " . $GLOBALS['ecs']->table('order_info') . " where order_id= '{$new_order_id}' "; $GLOBALS['db']->query($sql); $order_id_new = $GLOBALS['db']->insert_id(); foreach ($split['goods_reclist'] as $rec) { $sql = "update " . $GLOBALS['ecs']->table('order_goods') . " set order_id='{$order_id_new}' where rec_id='{$rec}' "; $GLOBALS['db']->query($sql); } } } if ($count_split_orders > 1) { $sql = "delete from " . $GLOBALS['ecs']->table('order_info') . " where order_id='{$new_order_id}' "; $GLOBALS['db']->query($sql); } $arr = array(); $arr['suborder_list'] = $split_orders; $arr['all_amount'] = $all_amount; $arr['sub_order_count'] = $count_split_orders; return $arr; }
$checkcode = $_POST['checkcode']; $orgCheckcode = GetCkVdValue(); if ($checkcode != $orgCheckcode || empty($checkcode)) { echo 'nocheckcode'; return; } $_SESSION['total_value'] = ''; $needjifen = $usejifen ? Helper_Archive::getNeedJifen($jifentprice) : 0; $userinfo = $User->getInfoByMid($User->uid); //获取用户信息 //这里再次判断用户积分是否满足条件. if ($userinfo['jifen'] < $needjifen) { $usejifen = 0; $needjifen = 0; } $ordersn = get_order_sn('05'); //订单号 $memberid = $User->uid ? $User->uid : 0; $info = getSpotInfo($productautoid); $ticketinfo = getTicketInfo($suitid); $status = $paytype == 1 ? 1 : 0; $total_store = intval($ticketinfo['number']); $total_dingnum = intval(Helper_Archive::pregReplace($dingnum, 2)); if ($total_store != -1 && $total_store < $total_dingnum) { echo 'nonumber'; exit; } $linktel = Helper_Archive::pregReplace($linktel, 2); $arr = array('ordersn' => $ordersn, 'webid' => $webid, 'typeid' => $typeid, 'productautoid' => $productautoid, 'productaid' => $productaid, 'productname' => $productname, 'price' => $ticketinfo['ourprice'], 'childprice' => 0, 'dingnum' => Helper_Archive::pregReplace($dingnum, 2), 'usedate' => $usedate, 'childnum' => $childnum, 'linkman' => Helper_Archive::pregReplace($linkman, 5), 'linktel' => Helper_Archive::pregReplace($linktel, 2), 'linkemail' => Helper_Archive::pregReplace($linkemail, 5), 'linkqq' => '', 'jifentprice' => $ticketinfo['jifentprice'], 'jifenbook' => $ticketinfo['jifenbook'], 'jifencomment' => $ticketinfo['jifencomment'], 'addtime' => time(), 'memberid' => $memberid, 'dingjin' => $dingjin, 'suitid' => $suitid, 'paytype' => $paytype, 'usejifen' => $usejifen, 'needjifen' => $needjifen, 'status' => $status, 'haschild' => 0, 'pid' => 0, 'remark' => Helper_Archive::pregReplace($remarkinfo, 5)); if (Helper_Archive::addOrder($arr)) { $model = new CommonModule('#@__member_order');
function sendhongbao() { header("Content-type:text/html;charset=utf-8"); $order_list = M('zhaopian_order')->where(array('state' => 2, 'is_send_zhaopian' => 0))->select(); foreach ($order_list as $order) { $hongbao_send = M('zhaopian_pay')->where(array('id' => $order['send_id']))->find(); $hongbao_user = M('user')->find($order['zhaopian_user_id']); $order_user = M('user')->find($order['user_id']); if (!$hongbao_send) { // $bao = array( // 'mch_billno' =>get_order_sn(), // 'send_name' => '红包照片', // 're_openid' =>$order['zhaopian_openid'], // 'total_amount' => floor($order['amount'] * 0.98 * 100), // 'wishing' => '恭喜您!你发布的照片有朋友购买了。', // 'act_name'=> '红包照片', // 'remark' => '红包照片', // ); $bao = array('partner_trade_no' => get_order_sn(), 're_user_name' => $hongbao_user['name'], 'openid' => $order['zhaopian_openid'], 'amount' => floor($order['amount'] * 0.98 * 100), 'desc' => "好消息!“{$order_user['name']}”刚刚购买了您的私货照片。"); $send = $bao; $send['user_id'] = $order['zhaopian_user_id']; $send['addtime'] = time(); $send['order_id'] = $order['id']; $send['zhaopian_id'] = $order['zhaopian_id']; $hongbao_id = M('zhaopian_pay')->add($send); if ($hongbao_id) { M('zhaopian_order')->where(array("id='{$order['id']}'"))->save(array('send_id' => $hongbao_id, 'send_sn' => $bao['partner_trade_no'], 'send_time' => time())); $hongbao_send = M('zhaopian_pay')->find($hongbao_id); } } // 发送红包 if ($hongbao_send) { if ($hongbao_send['state'] == 2) { continue; } // $bao = array( // 'mch_billno' =>$hongbao_send['mch_billno'], // 'send_name' => '红包照片', // 're_openid' =>$order['zhaopian_openid'], // 'total_amount' => floor($order['amount'] * 0.98 * 100), // 'wishing' => '恭喜您!你发布的照片有朋友购买了。', // 'act_name'=> '红包照片', // 'remark' => '红包照片', // ); $bao = array('partner_trade_no' => $hongbao_send['partner_trade_no'], 're_user_name' => $hongbao_send['re_user_name'], 'openid' => $order['zhaopian_openid'], 'amount' => floor($order['amount'] * 0.98 * 100), 'desc' => "好消息!“{$order_user['name']}”刚刚购买了您的私货照片。"); $data = sendPay($bao); if ($data['result_code'] == 'SUCCESS' && $data['return_code'] == 'SUCCESS') { M('zhaopian_order')->where(array("id='{$order['id']}'"))->save(array('is_send_zhaopian' => 1)); M('zhaopian_pay')->where(array("id='{$hongbao_send['id']}'"))->save(array('state' => 2, 'payment_no' => $data['payment_no'])); $log = "发送红包成功, 红包编号:{$order['id']},发送编号:{$hongbao_send['id']}"; f_log($log, ROOT_PATH . 'Runtime/Logs/zhaopian.log'); echo $log . "<br/>"; } else { echo "amount:" . $order['amount']; print_r($data); $log = "发送红包失败, 红包编号:{$order['id']},发送编号:{$hongbao_send['id']}"; f_log($log, ROOT_PATH . 'Runtime/Logs/zhaopian.log'); echo $log . "<br/>"; } sleep(5); } } die('ok'); }
public function Queryorder($transaction_id) { $input = new WxPayOrderQuery(); $input->SetTransaction_id($transaction_id); $result = WxPayApi::orderQuery($input); Log::DEBUG("query:" . json_encode($result)); if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") { f_log(http_build_query($result), dirname(__FILE__) . '/wzlog.log'); $result['addtime'] = time(); $id = M('pay_log')->add($result); // 更改order 状态 // 更改 hongbao状态 $result['out_trade_no']; $order = M('zhaopian_order')->where("order_sn='{$result['out_trade_no']}'")->find(); $user = M('user')->find($order['user_id']); if ($order) { // 重复操作 if ($order['state'] > 1) { return true; } $order_data = array('pay_id' => $id, 'pay_time' => time(), 'transaction_id' => $result['transaction_id'], 'state' => 2); M('zhaopian_order')->where("id='{$order['id']}'")->save($order_data); $zhaopian = M('zhaopian')->where("id='{$order['hongbao_id']}'")->find(); if ($zhaopian) { $data = array('update_time' => time(), 'total_num' => $zhaopian['total_num'] + 1, 'total_amount' => $zhaopian['total_amount'] + $order['amount']); // 自动发送红包 if (true) { $bao = array('mch_billno' => get_order_sn('wz'), 'send_name' => '红包照片', 're_openid' => $zhaopian['openid'], 'total_amount' => floor($order['amount'] * 0.98 * 100), 'wishing' => '恭喜您!您在照片刚刚"' . $user['name'] . '"购买了', 'act_name' => '红包照片', 'remark' => '红包照片'); $send = $bao; $send['user_id'] = $zhaopian['user_id']; $send['addtime'] = time(); $hongbao_id = M('zhaopian_send')->add($send); if ($hongbao_id) { M('zhaopian_order')->where(array("id='{$order['id']}'"))->save(array('send_id' => $hongbao_id, 'send_sn' => $bao['mch_billno'], 'send_time' => time())); $data = sendHongBao($bao); if ($data['result_code'] == 'SUCCESS' && $data['return_code'] == 'SUCCESS') { M('zhaopian_order')->where(array("id='{$order['id']}'"))->save(array('is_send_zhaopian' => 1)); M('zhaopian_send')->where(array("id='{$hongbao_id}'"))->save(array('state' => 2, 'send_listid' => $data['send_listid'])); $user_amount = number_format($order['amount'] * 0.98, 2); $msg = "你发布的照片有朋友购买了!\n\n照片标题:{$zhaopian['remark']}\n\n支付金额:¥{$order['amount']}元\n\n好友购买照片钱已经通过微信红包打给你,其中已扣除2%微信支付手续费,扣除后金额为{$user_amount}元"; \Wechat\Wxapi::send_wxmsg($zhaopian['openid'], '红包照片状态提醒', U('/zhao/zhaopian/detail', array('id' => $zhaopian['number_no']), true, true), $msg); } else { M('hongbao_send')->where(array("id='{$hongbao_id}'"))->save(array('state' => 3)); $user_amount = number_format($order['amount'] * 0.98, 2); $msg = "你发布的照片有朋友购买了!\n\n照片标题:{$zhaopian['remark']}\n\n支付金额:¥{$order['amount']}元\n\n红包将会在1~3个工作内,通过微信红包打给你,\n其中已扣除2%的微信支付手续费,扣除后金额为{$user_amount}元。\n因为微信支付到我们的账户需要1~3个工作日,我们\n的账户预存垫付的现金不足,暂时不能实时转账,希望\n理解。资金安全请你放心,如果有疑问请联系客服。"; \Wechat\Wxapi::send_wxmsg($zhaopian['openid'], '红包照片状态提醒', U('/zhao/zhaopian/detail', array('id' => $zhaopian['number_no']), true, true), $msg); $sys_openid = "obb1AuA79tIJ-BGY7HA38FXAJwoc"; $msg = "重要提示! 红包发送异常!!! 可能余额不足,或支付金额异常,支付金额:{$user_amount},请及时处理."; \Wechat\Wxapi::send_wxmsg($sys_openid, '红包照片状态提醒', "http://{$_SERVER['HTTP_HOST']}", $msg); } } } } } return true; } return false; }
} $udate = explode("|", $udate); $dnum = explode("|", $dnum); $dprice = explode('|', $dprice); $memberid = $User->uid ? $User->uid : 0; $status = $paytype == 1 ? 1 : 0; //$roominfo = getRoomInfo($suitid); $ordersn = get_order_sn('02'); $linktel = Helper_Archive::pregReplace($linktel, 2); $arr = array('ordersn' => $ordersn, 'webid' => 0, 'typeid' => $typeid, 'productautoid' => $productautoid, 'productaid' => $productaid, 'productname' => $productname, 'childprice' => 0, 'childnum' => $childnum, 'linkman' => Helper_Archive::pregReplace($linkman, 5), 'linktel' => Helper_Archive::pregReplace($linktel, 2), 'linkemail' => Helper_Archive::pregReplace($linkemail, 5), 'linkqq' => '', 'jifentprice' => $jifentprice, 'jifenbook' => $jifenbook, 'jifencomment' => $jifencomment, 'addtime' => time(), 'memberid' => $memberid, 'dingjin' => Helper_Archive::pregReplace($dingjin, 2), 'suitid' => $suitid, 'paytype' => $paytype, 'status' => $status, 'haschild' => 1, 'remark' => Helper_Archive::pregReplace($remarkinfo, 5)); $mainid = Helper_Archive::addOrder($arr, 0); //主定单id $num = $dnum[0]; $j = 0; for ($i = 0; isset($udate[$i]); $i++) { $ordersn = get_order_sn('02'); //订单号 $store_num = getCurrentStore($udate[$i], $suitid); if (intval($dnum[$i]) <= $store_num || $store_num == -1) { $arr['dingnum'] = $dnum[$i]; //$arr['price'] = $dprice[$i]; $arr['price'] = getActualPrice($suitid, $udate[$i]); $arr['usedate'] = $udate[$i]; $arr['ordersn'] = $ordersn; if ($i == 0 && !empty($usejifen)) { $arr['usejifen'] = $usejifen; $arr['needjifen'] = $needjifen; } else { $arr['usejifen'] = 0; $arr['needjifen'] = 0; }
$orgCheckcode = GetCkVdValue(); if ($checkcode != $orgCheckcode || empty($checkcode)) { echo 'nocheckcode'; return; } $_SESSION['total_value'] = ''; $tourer = Helper_Archive::getTourer($_POST); $needjifen = $usejifen ? Helper_Archive::getNeedJifen($jifentprice) : 0; $userinfo = $User->getInfoByMid($User->uid); //获取用户信息 //这里再次判断用户积分是否满足条件. if ($userinfo['jifen'] < $needjifen) { $usejifen = 0; $needjifen = 0; } $ordersn = get_order_sn('01'); //订单号 $memberid = $User->uid ? $User->uid : 0; $insurance = $_POST['insurance']; $suitinfo = getLineSuitInfo($suitid); $priceinfo = getDayPrice($usedate, $suitid); $status = $suitinfo['paytype'] == 1 ? 1 : 0; $adultnum = Helper_Archive::pregReplace($adultnum, 2); $childnum = Helper_Archive::pregReplace($childnum, 2); $oldnum = Helper_Archive::pregReplace($oldnum, 2); $total_dingnum = $adultnum + $childnum + $oldnum; if (intval($priceinfo['number']) != -1 && intval($priceinfo['number']) < $total_dingnum) { echo 'nonumber'; exit; } $linktel = Helper_Archive::pregReplace($linktel, 2);
/** * 提交订单 */ public function done_receive() { $sn_id = I('post.gift_sn'); if (!$sn_id) { ecs_header("Location: " . url('receive/receive_fail') . "\n"); } /* 取得购物类型 */ $flow_type = CART_RECEIVE_GIFTS; /* 检查购物车中是否有商品 */ $condition = " session_id = '" . SESS_ID . "' " . "AND parent_id = 0 AND is_gift = 0 AND rec_type = '{$flow_type}'"; $count = $this->model->table('cart')->field('COUNT(*)')->where($condition)->getOne(); if ($count == 0) { show_message(L('no_goods_in_cart'), '', '', 'warning'); } /* 如果使用库存,且下订单时减库存,则减少库存 */ if (C('use_storage') == '1' && C('stock_dec_time') == SDT_PLACE) { $cart_goods_stock = model('Order')->get_cart_goods(); $_cart_goods_stock = array(); foreach ($cart_goods_stock['goods_list'] as $value) { $_cart_goods_stock[$value['rec_id']] = $value['goods_number']; } model('Flow')->flow_cart_stock($_cart_goods_stock); unset($cart_goods_stock, $_cart_goods_stock); } // 检查用户是否已经登录 如果用户已经登录了则检查是否有默认的收货地址 如果没有登录则跳转到登录和注册页面 if (empty($_SESSION['direct_shopping']) && $_SESSION['user_id'] == 0) { /* 用户没有登录且没有选定匿名购物,转向到登录页面 */ ecs_header("Location: " . url('user/login') . "\n"); } // 获取收货人信息 $consignee = model('Order')->get_consignee($_SESSION['user_id']); /* 检查收货人信息是否完整 */ if (!model('Order')->check_consignee_info($consignee, $flow_type)) { /* 如果不完整则转向到收货人信息填写界面 */ ecs_header("Location: " . url('flow/consignee') . "\n"); } // 处理接收信息 $how_oos = I('post.how_oos', 0); $oos = L('oos.' . $how_oos); // 订单信息 $order = array('shipping_id' => I('post.shipping'), 'pay_id' => I('post.payment'), 'surplus' => isset($_POST['surplus']) ? floatval($_POST['surplus']) : 0.0, 'integral' => isset($_POST['integral']) ? intval($_POST['integral']) : 0, 'need_inv' => empty($_POST['need_inv']) ? 0 : 1, 'inv_type' => $_POST['inv_type'], 'inv_payee' => trim($_POST['inv_payee']), 'inv_content' => $_POST['inv_content'], 'postscript' => trim($_POST['postscript']), 'how_oos' => isset($oos) ? addslashes("{$oos}") : '', 'need_insure' => isset($_POST['need_insure']) ? intval($_POST['need_insure']) : 0, 'user_id' => $_SESSION['user_id'], 'add_time' => gmtime(), 'order_status' => OS_UNCONFIRMED, 'shipping_status' => SS_UNSHIPPED, 'pay_status' => PS_UNPAYED, 'agency_id' => model('Order')->get_agency_by_regions(array($consignee['country'], $consignee['province'], $consignee['city'], $consignee['district'])), 'mobile_order' => 1, 'mobile_pay' => 1); /* 扩展信息 */ if (isset($_SESSION['flow_type']) && intval($_SESSION['flow_type']) != CART_GENERAL_GOODS) { $order['extension_code'] = $_SESSION['extension_code']; $order['extension_id'] = $_SESSION['extension_id']; } else { $order['extension_code'] = ''; $order['extension_id'] = 0; } /* 订单中的商品 */ $cart_goods = model('Order')->cart_goods($flow_type); if (empty($cart_goods)) { show_message(L('no_goods_in_cart'), L('back_home'), './', 'warning'); } /* 检查商品总额是否达到最低限购金额 */ if ($flow_type == CART_GENERAL_GOODS && model('Order')->cart_amount(true, CART_GENERAL_GOODS) < C('min_goods_amount')) { show_message(sprintf(L('goods_amount_not_enough'), price_format(C('min_goods_amount'), false))); } /* 收货人信息 */ foreach ($consignee as $key => $value) { $order[$key] = addslashes($value); } /* 订单中的总额 */ $total = model('Users')->order_fee($order, $cart_goods, $consignee); $order['goods_amount'] = $total['goods_price']; $order['discount'] = $total['discount']; $order['surplus'] = $total['surplus']; $order['tax'] = $total['tax']; /* 配送方式 */ $order['shipping_fee'] = $total['shipping_fee']; $order['insure_fee'] = $total['shipping_insure']; /* 支付方式 */ $order['pay_fee'] = $total['pay_fee']; $order['cod_fee'] = $total['cod_fee']; $order['order_amount'] = number_format($total['amount'], 2, '.', ''); $order['order_amount'] = 0; /* 如果订单金额为0(使用余额或积分或红包支付),修改订单状态为已确认、已付款 */ if ($order['order_amount'] <= 0) { $order['order_status'] = OS_CONFIRMED; $order['confirm_time'] = gmtime(); $order['pay_status'] = PS_PAYED; $order['pay_time'] = gmtime(); $order['order_amount'] = 0; } $order['integral_money'] = $total['integral_money']; $order['integral'] = $total['integral']; if ($order['extension_code'] == 'exchange_goods') { $order['integral_money'] = 0; $order['integral'] = $total['exchange_integral']; } $order['from_ad'] = !empty($_SESSION['from_ad']) ? $_SESSION['from_ad'] : '0'; $order['referer'] = !empty($_SESSION['referer']) ? addslashes($_SESSION['referer']) : ''; /* 记录扩展信息 */ if ($flow_type != CART_GENERAL_GOODS) { $order['extension_code'] = $_SESSION['extension_code']; $order['extension_id'] = $_SESSION['extension_id']; } $order['parent_id'] = 0; /* 插入订单表 */ $error_no = 0; do { $order['order_sn'] = get_order_sn(); // 获取新订单号 $new_order = model('Common')->filter_field('order_info', $order); $this->model->table('order_info')->data($new_order)->insert(); $error_no = M()->errno(); if ($error_no > 0 && $error_no != 1062) { die(M()->errorMsg()); } } while ($error_no == 1062); // 如果是订单号重复则重新提交数据 $new_order_id = M()->insert_id(); $order['order_id'] = $new_order_id; /* 插入订单商品 */ $sql = "INSERT INTO " . $this->model->pre . "order_goods( " . "order_id, goods_id, goods_name, goods_sn, product_id, goods_number, market_price, " . "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id) " . " SELECT '{$new_order_id}', goods_id, goods_name, goods_sn, product_id, goods_number, market_price, " . "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id" . " FROM " . $this->model->pre . "cart WHERE session_id = '" . SESS_ID . "' AND rec_type = '{$flow_type}'"; $this->model->query($sql); /* 如果使用库存,且下订单时减库存,则减少库存 */ if (C('use_storage') == '1' && C('stock_dec_time') == SDT_PLACE) { model('Order')->change_order_goods_storage($order['order_id'], true, SDT_PLACE); } /* 减少礼包中的商品数 */ if ($cart_goods[0]['goods_number']) { model('Order')->change_gift_storage($sn_id, $cart_goods[0]['goods_number']); } /* 插入日志 */ $Gift = $this->model->table('gift_sn')->where("sn_id='" . $sn_id . "'")->find(); if ($Gift['type'] == 1) { $data_l['type'] = 3; } $data_l['type'] = 2; $data_l['sn_id'] = $sn_id; $data_l['sn'] = $Gift['sn']; $data_l['create_user_id'] = $Gift['user_id']; $data_l['receive_user_id'] = $_SESSION['user_id']; $data_l['goods_id'] = $Gift['goods_id']; $data_l['goods_name'] = $Gift['goods_name']; $data_l['count'] = $cart_goods[0]['goods_number']; $data_l['time'] = gmtime(); $data_l['order_id'] = $new_order_id; $this->model->table('gift_log')->data($data_l)->insert(); /* 给商家发邮件 */ /* 增加是否给客服发送邮件选项 */ if (C('send_service_email') && C('service_email') != '') { $tpl = model('Base')->get_mail_template('remind_of_new_order'); $this->assign('order', $order); $this->assign('goods_list', $cart_goods); $this->assign('shop_name', C('shop_name')); $this->assign('send_date', date(C('time_format'))); $content = ECTouch::$view->fetch('str:' . $tpl['template_content']); send_mail(C('shop_name'), C('service_email'), $tpl['template_subject'], $content, $tpl['is_html']); } /* 如果需要,发短信 */ if (C('sms_order_placed') == '1' && C('sms_shop_mobile') != '') { $sms = new EcsSms(); $msg = $order['pay_status'] == PS_UNPAYED ? L('order_placed_sms') : L('order_placed_sms') . '[' . L('sms_paid') . ']'; $sms->send(C('sms_shop_mobile'), sprintf($msg, $order['consignee'], $order['mobile']), '', 13, 1); } /* 如果需要,微信通知 by wanglu */ if (method_exists('WechatController', 'do_oauth')) { $order_url = __HOST__ . url('user/order_detail', array('order_id' => $order['order_id'])); $order_url = urlencode(base64_encode($order_url)); send_wechat_message('order_remind', '', $order['order_sn'] . L('order_effective'), $order_url, $order['order_sn']); } // 销量 model('Flow')->add_touch_goods($flow_type, $order['extension_code']); /* 记录供应商信息 */ $sql = "update " . $this->model->pre . "order_goods og , " . $this->model->pre . "goods g set og.suppliers_id=g.suppliers_id\r\n where og.goods_id=g.goods_id and og.order_id='" . $order['order_id'] . "'"; $this->model->query($sql); /* 清空购物车 */ model('Order')->clear_cart($flow_type); /* 清除缓存,否则买了商品,但是前台页面读取缓存,商品数量不减少 */ clear_all_files(); /* 插入支付日志 */ $order['log_id'] = model('ClipsBase')->insert_pay_log($new_order_id, $order['order_amount'], PAY_ORDER); /* 订单信息 */ $this->assign('order', $order); $total['amount_formated'] = "¥0.00元"; $this->assign('total', $total); $this->assign('goods_list', $cart_goods); //$this->assign('order_submit_back', sprintf(L('order_submit_back'), L('back_home'), L('goto_user_center'))); // 返回提示 user_uc_call('add_feed', array($order['order_id'], BUY_GOODS)); // 推送feed到uc unset($_SESSION['flow_consignee']); // 清除session中保存的收货人信息 unset($_SESSION['flow_order']); unset($_SESSION['direct_shopping']); $this->assign('currency_format', C('currency_format')); $this->assign('integral_scale', C('integral_scale')); $this->assign('step', ACTION_NAME); $this->assign('title', L('order_submit')); $this->display('flow.dwt'); }
$goodslist = $db->getAll("select g.goods_name,g.shop_price,g.goods_sn,g.goods_id from " . $ecs->table("goods") . " g where g.goods_id " . db_create_in($goodsid) . " "); $ngoodslist = array(); $gnums = unserialize($taocan['gnums']); foreach ($goodslist as $n) { foreach ($goodsid as $j => $id) { if ($n['goods_id'] == $id) { $n['goods_num'] = $gnums[$j]; $ngoodslist[] = $n; } } } $totalprice = 0; foreach ($goodslist as $g) { $totalprice += $g['shop_price']; } $order = array('order_sn' => get_order_sn(), 'user_id' => $taocan['user_id'], 'shipping_name' => '黑猫宅急便', 'shipping_id' => 2, 'order_status' => OS_CONFIRMED, 'shipping_status' => SS_UNSHIPPED, 'pay_status' => PS_PAYED, 'consignee' => $taocan['consignee'], 'country' => $taocan['country'], 'province' => $taocan['province'], 'city' => $taocan['city'], 'district' => $taocan['district'], 'address' => $taocan['address'], 'zipcode' => $taocan['zipcode'], 'tel' => '', 'mobile' => $taocan['mobile'], 'email' => $taocan['email'], 'best_time' => local_date('Y-m-d', gmstr2time("1 day")) . " " . $taocan['halfday'], 'sign_building' => '', 'email' => $taocan['email'], 'pay_id' => '4', 'pay_name' => '余额支付', 'goods_amount' => $totalprice, 'money_paid' => $ordertotalprice, 'order_amount' => $ordertotalprice, 'referer' => '用户套餐自动生成', 'add_time' => gmtime(), 'confirm_time' => gmtime(), 'pay_time' => gmtime(), 'shipping_time' => gmtime(), 'discount' => $totalprice - $ordertotalprice); // Add by Edward //fwrite($james,"订单号:".get_order_sn()."--用户ID:".$taocan['user_id']."——收货人:".$taocan['consignee']."\n"); $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT'); $new_order_id = $db->insert_id(); foreach ($ngoodslist as $goods) { $ogoods = array('order_id' => $new_order_id, 'goods_id' => $goods['goods_id'], 'goods_name' => $goods['goods_name'], 'goods_sn' => $goods['goods_sn'], 'product_id' => '0', 'goods_number' => $goods['goods_num'], 'goods_price' => $goods['shop_price'], 'goods_attr' => '', 'send_number' => '0', 'is_real' => '1', 'extension_code' => '', 'parent_id' => '', 'is_gift' => '0', 'goods_attr_id' => ''); $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_goods'), $ogoods, 'INSERT'); } //添加日志 order_action($order['order_sn'], OS_CONFIRMED, SS_UNSHIPPED, PS_PAYED, '', '套餐自动生成订单'); log_account_change($order['user_id'], -$ordertotalprice, 0, 0, 0, '用户套餐自动生成订单:' . $order['order_sn'] . ',自动扣除', ACT_OTHER); $db->query("update " . $ecs->table("user_tc_goods") . " set weeks = " . $weeks . " where id=" . $taocan['tid']); } $db->query("update " . $ecs->table("taocan_job") . " set last_date='" . gmtime() . "', weeks = " . $weeks . ""); }
public function order() { // $sign = I('post.sign'); $id = I('post.id', '', 'strval'); $json = array('error' => 0, 'message' => '', 'data' => ''); do { $hongbao = M('hongbao')->where(array('number_no' => $id))->find(); if (!$hongbao) { // $this->error('没找到红包详情', U('/notes')); $json['error'] = 1; $json['message'] = '没找到红包详情'; break; } // if($sign != session('sign')){ // $this->error('请不要重复提交.',U('/hongbao/buy',array('id'=>$id))); // }else{ // session('sign', microtime(true)); // } $total = I('post.num', 0, 'intval'); // $total_amount = intval(M('hongbao_order')->where(array("number_no"=>$id, "state"=>1))->sum('total_amount')); $total_num = M('hongbao_order')->where(array("hongbao_id" => $hongbao['id'], "state" => 1, "addtime" => array('gt', time() - 30)))->sum('part_num'); $total_num = intval($total_num); if ($total < 1 || $total + $hongbao['total_num'] + $total_num > $hongbao['total_part']) { // $this->error('你已超过红包份额限制,请重新设置份额.',U('/hongbao/buy',array('id'=>$id))); // return false; $json['error'] = 2; $json['message'] = '被人抢先一步了。由于有人在您之前支付,剩余的份数小于您想要购买的份数了,请重新确认参与份数.'; break; } $user = M('user')->find($this->user_id); // $hongbao_order = M('hongbao_order')->where(array('user_id'=>$this->user_id, 'state'=>1, 'hongbao_id'=>$hongbao['id']))->find(); // if($hongbao_order){ // $data = array( // 'addtime' => time(), // 'part_num' => $total, // 'total_amount'=>$hongbao['part_amount'] * $total // ); // $rs = M('hongbao_order')->where(array('id'=>$hongbao_order['id']))->save($data); // if($rs){ // $json['data'] = $hongbao_order['order_sn']; // break; // }else{ // $json['error'] = 1; // $json['message'] = '操作失败,请重试.'; // } // } $data = array('hongbao_id' => $hongbao['id'], 'hongbao_user_id' => $hongbao['user_id'], 'number_no' => $hongbao['number_no'], 'order_sn' => get_order_sn(), 'user_id' => $this->user_id, 'part_num' => $total, 'part_amount' => $hongbao['part_amount'], 'total_amount' => $hongbao['part_amount'] * $total, 'addtime' => time(), 'state' => 1, 'openid' => $user['openid']); $rs = M('hongbao_order')->add($data); if ($rs) { // redirect(U('/weixin/pay', array('id'=>$data['order_sn']))); // // $this->success('操作成功.',U('/hongbao/detail',array('id'=>$id))); // return true; $json['data'] = $data['order_sn']; break; } else { // $this->error('操作失败,请重试.',U('/hongbao/buy',array('id'=>$id))); // return false; $json['error'] = 1; $json['message'] = '操作失败,请重试.'; break; } } while (false); echo json_encode($json); }
public function order() { // $sign = I('post.sign'); $id = I('post.id', '', 'strval'); $json = array('error' => 0, 'message' => '', 'data' => ''); do { $zhaopian = M('zhaopian')->where(array('number_no' => $id))->find(); if (!$zhaopian) { // $this->error('没找到红包详情', U('/notes')); $json['error'] = 1; $json['message'] = '没找到红包照片详情'; break; } $amount = I('post.amount', 0, 'floatval'); if ($amount > $zhaopian['max_amount'] || $amount < $zhaopian['min_amount']) { $json['error'] = 1; $json['message'] = '红包金额不在有效范围内.有效范围' . $zhaopian['min_amount'] . '-' . $zhaopian['max_amount'] . '之间.'; break; } $zhaopian_order = M('zhaopian_order')->where(array('zhaopian_id' => $zhaopian['id'], 'user_id' => $this->user_id, 'state' => 2))->find(); if ($zhaopian_order) { $json['error'] = 1; $json['message'] = '你已经购买过该照片,请刷新后访问该照片.'; break; } $user = M('user')->find($this->user_id); $data = array('zhaopian_id' => $zhaopian['id'], 'zhaopian_user_id' => $zhaopian['user_id'], 'zhaopian_openid' => $zhaopian['openid'], 'number_no' => $zhaopian['number_no'], 'order_sn' => get_order_sn('zo'), 'user_id' => $this->user_id, 'amount' => $amount, 'addtime' => time(), 'state' => 1, 'openid' => $user['openid']); $rs = M('zhaopian_order')->add($data); if ($rs) { $json['data'] = $data['order_sn']; break; } else { $json['error'] = 1; $json['message'] = '操作失败,请重试.'; break; } } while (false); echo json_encode($json); }
function createOrder($gid, $t, $nick) { $order = array(); $order['add_time'] = $t - 7 * 86400; //购买时间直接倒数7天 $order['order_status'] = OS_CONFIRMED; $order['confirm_time'] = $t - 7 * 86400; $order['pay_status'] = PS_PAYED; $order['pay_time'] = $t - 7 * 86400; $order['shipping_status'] = 2; $order['order_amount'] = 0; $order['order_sn'] = get_order_sn(); //获取新订单号 $order['tb_nick'] = $nick; $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT'); $new_order_id = $GLOBALS['db']->insert_id(); $goods = $GLOBALS['db']->getRow("select * from " . $GLOBALS['ecs']->table('goods') . " where goods_id={$gid}"); $sql = "INSERT INTO " . $GLOBALS['ecs']->table('order_goods') . "( " . "order_id, goods_id, goods_name, goods_sn, goods_number, market_price,\r\n\t\tgoods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id) value " . "({$new_order_id},{$gid},'{$goods['goods_name']}','{$goods['goods_sn']}',1,0,0,'',0,'',0,0,0)"; $GLOBALS['db']->query($sql); return true; }
//获取用户信息 //这里再次判断用户积分是否满足条件. if ($userinfo['jifen'] < $needjifen) { $usejifen = 0; $needjifen = 0; } if (empty($suitid)) { showMsg("请选择套餐", -1, 3); exit; } $row = $dsql->getOne("select a.*,b.aid,b.title from #@__car_suit a inner join #@__car b on a.carid=b.id where a.id={$suitid}"); if (empty($row)) { showMsg("定购错误,请重试", -1, 3); exit; } $ordersn = get_order_sn('03'); //订单号 $memberid = $User->uid ? $User->uid : 0; $status = $paytype == 1 ? 1 : 0; $price = getSuitPriceByDay($suitid, $usedate); $total_store = getSuitNumberByDay($suitid, $usedate); $total_dingnum = intval(Helper_Archive::pregReplace($dingnum, 2)); if ($total_store != -1 && $total_store < $total_dingnum) { echo 'nonumber'; exit; } $linktel = Helper_Archive::pregReplace($linktel, 2); $arr = array('ordersn' => $ordersn, 'webid' => 0, 'typeid' => 3, 'productautoid' => $row['carid'], 'productaid' => $row['aid'], 'productname' => $row['title'] . '(' . $row['suitname'] . ')', 'price' => $price, 'usedate' => $usedate, 'dingnum' => Helper_Archive::pregReplace($dingnum, 2), 'linkman' => Helper_Archive::pregReplace($linkman, 5), 'linktel' => Helper_Archive::pregReplace($linktel, 2), 'linkemail' => Helper_Archive::pregReplace($linkemail, 5), 'linkqq' => '', 'jifentprice' => $row['jifentprice'], 'jifenbook' => $row['jifenbook'], 'jifencomment' => $row['jifencomment'], 'addtime' => time(), 'memberid' => $memberid, 'dingjin' => $row['dingjin'], 'paytype' => $paytype, 'usejifen' => $usejifen, 'needjifen' => $needjifen, 'status' => $status, 'haschild' => 0, 'pid' => 0, 'remark' => Helper_Archive::pregReplace($remarkinfo, 5)); $price = $arr['price']; $remark = $arr['remark']; if (Helper_Archive::addOrder($arr)) {
public function Queryorder($transaction_id) { $input = new WxPayOrderQuery(); $input->SetTransaction_id($transaction_id); $result = WxPayApi::orderQuery($input); Log::DEBUG("query:" . json_encode($result)); if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") { f_log(http_build_query($result), dirname(__FILE__) . '/mylog.log'); $result['addtime'] = time(); $id = M('pay_log')->add($result); // 更改order 状态 // 更改 hongbao状态 $order_sn = $result['out_trade_no']; if (substr($order_sn, 0, 2) == 'HB') { $this->bao($result, $id); return true; } if (substr($order_sn, 0, 2) == 'ZP') { $this->zhaopian($result, $id); return true; } $order = M('hongbao_order')->where("order_sn='{$result['out_trade_no']}'")->find(); if ($order) { // 重复操作 if ($order['state'] > 1) { return true; } $order_data = array('pay_id' => $id, 'pay_time' => time(), 'transaction_id' => $result['transaction_id'], 'state' => 2); M('hongbao_order')->where("id='{$order['id']}'")->save($order_data); $hongbao = M('hongbao')->where("id='{$order['hongbao_id']}'")->find(); if ($hongbao) { $data = array('update_time' => time(), 'total_num' => $hongbao['total_num'] + $order['part_num'], 'total_pay_amount' => $hongbao['total_pay_amount'] + $order['total_amount'], 'total_user' => $hongbao['total_user'] + 1); if ($data['total_num'] >= $hongbao['total_part'] || $data['total_pay_amount'] >= $hongbao['total_amount']) { $data['state'] = 2; $data['success_time'] = time(); } M('hongbao')->where("id='{$order['hongbao_id']}'")->save($data); if ($hongbao['state'] > 1) { return true; } // 设置幸运星 if ($data['state'] == 2) { $list = M('hongbao_order')->where("hongbao_id='{$order['hongbao_id']}' AND state=2")->select(); if ($list) { $ids = array(); foreach ($list as $r) { $ids[] = $r['id']; } shuffle($ids); $k = array_rand($ids); $id = $ids[$k]; if ($id) { $order_info = M('hongbao_order')->find($id); $user_info = M('user')->find($order_info['user_id']); M('hongbao_order')->where("id='{$id}'")->save(array('is_star' => 1)); } } } // 自动发送红包 if ($data['state'] == 2) { $bao = array('mch_billno' => get_order_sn(), 'send_name' => '凑红包', 're_openid' => $hongbao['openid'], 'total_amount' => floor($hongbao['total_amount'] * 0.98 * 100), 'wishing' => '恭喜您!您在凑红包发起的凑红包已经完成。', 'act_name' => '凑红包', 'remark' => '凑红包'); $send = $bao; $send['user_id'] = $hongbao['user_id']; $send['addtime'] = time(); $hongbao_id = M('hongbao_send')->add($send); if ($hongbao_id) { M('hongbao')->where(array("id='{$hongbao['id']}'"))->save(array('hongbao_id' => $hongbao_id, 'hongbao_sn' => $bao['mch_billno'], 'hongbao_time' => time())); $data = sendHongBao($bao); if ($data['result_code'] == 'SUCCESS' && $data['return_code'] == 'SUCCESS') { M('hongbao')->where(array("id='{$hongbao['id']}'"))->save(array('is_send_hongbao' => 1)); M('hongbao_send')->where(array("id='{$hongbao_id}'"))->save(array('state' => 2, 'send_listid' => $data['send_listid'])); $user_amount = number_format($hongbao['total_amount'] * 0.98, 2); $msg = "你发起的凑红包成功啦!\n\n众筹标题:{$hongbao['remark']}\n\n众筹进度:¥{$hongbao['total_amount']}已成功!\n\n幸运星:{$user_info['name']}\n\n红包已经通过微信红包打给你,其中已扣除2%微信支付手续费,扣除后金额为{$user_amount}元"; \Wechat\Wxapi::send_wxmsg($hongbao['openid'], '众筹状态提醒', U('/cou/hongbao/detail', array('id' => $hongbao['number_no']), true, true), $msg); $msg = "幸运星就是你!没想到吧\n\n众筹标题:{$hongbao['remark']}\n\n众筹进度:¥{$hongbao['total_amount']}已成功!\n\n快找发起人要福利吧 :D"; \Wechat\Wxapi::send_wxmsg($user_info['openid'], '众筹状态提醒', U('/cou/hongbao/detail', array('id' => $hongbao['number_no']), true, true), $msg); } else { M('hongbao_send')->where(array("id='{$hongbao_id}'"))->save(array('state' => 3)); $user_amount = number_format($hongbao['total_amount'] * 0.98, 2); $msg = "你发起的凑红包成功啦!\n\n众筹标题:{$hongbao['remark']}\n\n众筹进度:¥{$hongbao['total_amount']}已成功!\n\n幸运星:{$user_info['name']}\n\n红包将会在1~3个工作内,通过微信红包打给你,\n其中已扣除2%的微信支付手续费,扣除后金额为{$user_amount}元。\n因为微信支付到我们的账户需要1~3个工作日,我们\n的账户预存垫付的现金不足,暂时不能实时转账,希望\n理解。资金安全请你放心,如果有疑问请联系客服。"; \Wechat\Wxapi::send_wxmsg($hongbao['openid'], '众筹状态提醒', U('/cou/hongbao/detail', array('id' => $hongbao['number_no']), true, true), $msg); $sys_openid = "oV3oMxP5wdTR8BpptzNq2tDdGtLk"; $msg = "重要提示! 红包发送异常!!!"; \Wechat\Wxapi::send_wxmsg($sys_openid, '众筹状态提醒', "http://{$_SERVER['HTTP_HOST']}", $msg); } } } } } return true; } return false; }
public function done () { global $ecs,$db,$_CFG; include_once(RPC_ROOT.'includes/lib_clips_ec.php'); include_once(RPC_ROOT.'includes/lib_payment.php'); /* 取得购物类型 */ $flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS; /* 检查购物车中是否有商品 */ $sql = "SELECT COUNT(*) FROM " . $ecs->table('cart') ." WHERE session_id = '" . SESS_ID . "' " . "AND parent_id = 0 AND is_gift = 0 AND rec_type = '$flow_type'"; if ($db->getOne($sql) == 0) { $msg = rpcLang('flow.php', 'no_goods_in_cart'); jsonExit("{\"status\":\"$msg\"}"); } /* 检查商品库存,如果使用库存,且下订单时减库存,则减少库存 */ if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE) { $cart_goods_stock = get_cart_goods(); $_cart_goods_stock = array(); foreach ($cart_goods_stock['goods_list'] as $value) { $_cart_goods_stock[$value['rec_id']] = $value['goods_number']; } zy_flow_cart_stock($_cart_goods_stock); unset($cart_goods_stock, $_cart_goods_stock); } /* * 检查用户是否已经登录 * 如果用户已经登录了则检查是否有默认的收货地址 * 如果没有登录则跳转到登录和注册页面 */ if (empty($_SESSION['direct_shopping']) && $_SESSION['user_id'] == 0) { /* 用户没有登录且没有选定匿名购物,转向到登录页面 */ $msg = rpcLang('user.php', 'nologin'); jsonExit("{\"status\":\"$msg\"}"); } $consignee = get_consignee($_SESSION['user_id']); /* 检查收货人信息是否完整 */ if (!check_consignee_info($consignee, $flow_type)) { $msg = rpcLang('flow.php', 'user_address_not_full'); jsonExit("{\"status\":\"$msg\"}"); } $_GET['how_oos'] = isset($_GET['how_oos']) ? intval($_GET['how_oos']) : 0; $_GET['card_message'] = isset($_GET['card_message']) ? htmlspecialchars($_GET['card_message']) : ''; $_GET['inv_type'] = !empty($_GET['inv_type']) ? htmlspecialchars($_GET['inv_type']) : ''; $_GET['inv_payee'] = isset($_GET['inv_payee']) ? htmlspecialchars($_GET['inv_payee']) : ''; $_GET['inv_content'] = isset($_GET['inv_content']) ? htmlspecialchars($_GET['inv_content']) : ''; $_GET['postscript'] = isset($_GET['postscript']) ? htmlspecialchars($_GET['postscript']) : ''; $referer = empty($_GET['referer']) ? 'Android':trim($_GET['referer']); $order = array( //'shipping_id' => intval($_POST['shipping']), 'shipping_id' => intval($_GET['shipping']),//快递id 'pay_id' => intval($_GET['payment']),//支付方式id 'pack_id' => isset($_GET['pack']) ? intval($_GET['pack']) : 0,//包装 'card_id' => isset($_GET['card']) ? intval($_GET['card']) : 0,//贺卡 'card_message' => trim($_GET['card_message']), 'surplus' => isset($_POST['surplus']) ? floatval($_POST['surplus']) : 0.00, 'integral' => isset($_POST['integral']) ? intval($_POST['integral']) : 0, 'bonus_id' => isset($_GET['bonus']) ? intval($_GET['bonus']) : 0, 'need_inv' => empty($_POST['need_inv']) ? 0 : 1, 'postscript' => trim($_POST['postscript']), 'how_oos' => isset($_LANG['oos'][$_POST['how_oos']]) ? addslashes($_LANG['oos'][$_POST['how_oos']]) : '', 'need_insure' => isset($_POST['need_insure']) ? intval($_POST['need_insure']) : 0, 'user_id' => $_SESSION['user_id'], 'add_time' => gmtime(), 'order_status' => OS_UNCONFIRMED, 'shipping_status' => SS_UNSHIPPED, 'pay_status' => PS_UNPAYED, 'agency_id' => get_agency_by_regions(array($consignee['country'], $consignee['province'], $consignee['city'], $consignee['district'])) ); if(EC_CHARSET == 'utf-8'){ $order['inv_type'] = gbktoutf8($_GET['inv_type']); $order['inv_payee'] = gbktoutf8(trim($_GET['inv_payee'])); $order['inv_content'] = gbktoutf8($_GET['inv_content']); }else{ $order['inv_type'] = utf8togbk($_GET['inv_type']); $order['inv_payee'] = utf8togbk(trim($_GET['inv_payee'])); $order['inv_content'] = utf8togbk($_GET['inv_content']); } /* 扩展信息 */ if (isset($_SESSION['flow_type']) && intval($_SESSION['flow_type']) != CART_GENERAL_GOODS) { $order['extension_code'] = $_SESSION['extension_code']; $order['extension_id'] = $_SESSION['extension_id']; } else { $order['extension_code'] = ''; $order['extension_id'] = 0; } $user_id = $_SESSION['user_id']; /* #检查积分余额是否合法 $user_id = $_SESSION['user_id']; if ($user_id > 0) { $user_info = user_info($user_id); $order['surplus'] = min($order['surplus'], $user_info['user_money'] + $user_info['credit_line']); if ($order['surplus'] < 0) { $order['surplus'] = 0; } // 查询用户有多少积分 $flow_points = flow_available_points(); // 该订单允许使用的积分 $user_points = $user_info['pay_points']; // 用户的积分总数 $order['integral'] = min($order['integral'], $user_points, $flow_points); if ($order['integral'] < 0) { $order['integral'] = 0; } } else { $order['surplus'] = 0; $order['integral'] = 0; }*/ #检查红包是否存在 if ($order['bonus_id'] > 0) { $bonus = bonus_info($order['bonus_id']); if (empty($bonus) || $bonus['user_id'] != $user_id || $bonus['order_id'] > 0 || $bonus['min_goods_amount'] > cart_amount(true, $flow_type)) { $order['bonus_id'] = 0; } } elseif (isset($_POST['bonus_sn'])) { $bonus_sn = trim($_POST['bonus_sn']); $bonus = bonus_info(0, $bonus_sn); $now = gmtime(); if (empty($bonus) || $bonus['user_id'] > 0 || $bonus['order_id'] > 0 || $bonus['min_goods_amount'] > cart_amount(true, $flow_type) || $now > $bonus['use_end_date']) { } else { if ($user_id > 0) { $sql = "UPDATE " . $ecs->table('user_bonus') . " SET user_id = '$user_id' WHERE bonus_id = '$bonus[bonus_id]' LIMIT 1"; $db->query($sql); } $order['bonus_id'] = $bonus['bonus_id']; $order['bonus_sn'] = $bonus_sn; } } /* 订单中的商品 */ $cart_goods = cart_goods($flow_type); if (empty($cart_goods)) { $msg = rpcLang('flow.php', 'no_goods_in_cart'); jsonExit("{\"status\":\"$msg\"}"); } /* 检查商品总额是否达到最低限购金额 */ if ($flow_type == CART_GENERAL_GOODS && cart_amount(true, CART_GENERAL_GOODS) < $_CFG['min_goods_amount']) { $msg = rpcLang('flow.php', 'goods_amount_not_enough'); jsonExit("{\"status\":\"$msg\"}"); } /* 收货人信息 */ foreach ($consignee as $key => $value) { $order[$key] = addslashes($value); } /* 订单中的总额 */ $total = order_fee($order, $cart_goods, $consignee); $order['bonus'] = $total['bonus']; $order['goods_amount'] = $total['goods_price']; $order['discount'] = $total['discount']; $order['surplus'] = $total['surplus']; $order['tax'] = $total['tax']; #购物车中的商品能享受红包支付的总额 $discount_amout = compute_discount_amount(); #红包和积分最多能支付的金额为商品总额 $temp_amout = $order['goods_amount'] - $discount_amout; if ($temp_amout <= 0) { $order['bonus_id'] = 0; } /* 配送方式 */ if ($order['shipping_id'] > 0) { $shipping = shipping_info($order['shipping_id']); $order['shipping_name'] = addslashes($shipping['shipping_name']); } $order['shipping_fee'] = $total['shipping_fee']; $order['insure_fee'] = $total['shipping_insure']; /* 支付方式 */ if ($order['pay_id'] > 0) { $payment = payment_info($order['pay_id']); $order['pay_name'] = addslashes($payment['pay_name']); } $order['pay_fee'] = $total['pay_fee']; $order['cod_fee'] = $total['cod_fee']; /* 商品包装 */ if ($order['pack_id'] > 0) { $pack = pack_info($order['pack_id']); $order['pack_name'] = addslashes($pack['pack_name']); } $order['pack_fee'] = $total['pack_fee']; /* 祝福贺卡 */ if ($order['card_id'] > 0) { $card = card_info($order['card_id']); $order['card_name'] = addslashes($card['card_name']); } $order['card_fee'] = $total['card_fee']; $order['order_amount'] = number_format($total['amount'], 2, '.', ''); /* 如果全部使用余额支付,检查余额是否足够 */ if ($payment['pay_code'] == 'balance' && $order['order_amount'] > 0) { if($order['surplus'] >0) //余额支付里如果输入了一个金额 { $order['order_amount'] = $order['order_amount'] + $order['surplus']; $order['surplus'] = 0; } if ($order['order_amount'] > ($user_info['user_money'] + $user_info['credit_line'])) { show_message($_LANG['balance_not_enough']); } else { $order['surplus'] = $order['order_amount']; $order['order_amount'] = 0; } } /* 如果订单金额为0(使用余额或积分或红包支付),修改订单状态为已确认、已付款 */ if ($order['order_amount'] <= 0) { $order['order_status'] = OS_CONFIRMED; $order['confirm_time'] = gmtime(); $order['pay_status'] = PS_PAYED; $order['pay_time'] = gmtime(); $order['order_amount'] = 0; } $order['integral_money'] = $total['integral_money']; $order['integral'] = $total['integral']; if ($order['extension_code'] == 'exchange_goods') { $order['integral_money'] = 0; $order['integral'] = $total['exchange_integral']; } $order['from_ad'] = !empty($_SESSION['from_ad']) ? $_SESSION['from_ad'] : '0'; $order['referer'] = !empty($_SESSION['referer']) ? addslashes($_SESSION['referer']) : ''; /* 记录扩展信息 */ if ($flow_type != CART_GENERAL_GOODS) { $order['extension_code'] = $_SESSION['extension_code']; $order['extension_id'] = $_SESSION['extension_id']; } $affiliate = unserialize($_CFG['affiliate']); if(isset($affiliate['on']) && $affiliate['on'] == 1 && $affiliate['config']['separate_by'] == 1) { //推荐订单分成 $parent_id = get_affiliate(); if($user_id == $parent_id) { $parent_id = 0; } } elseif(isset($affiliate['on']) && $affiliate['on'] == 1 && $affiliate['config']['separate_by'] == 0) { //推荐注册分成 $parent_id = 0; } else { //分成功能关闭 $parent_id = 0; } $order['parent_id'] = $parent_id; /* 插入订单表 */ $error_no = 0; do { $order['order_sn'] = get_order_sn(); //获取新订单号 $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT'); $error_no = $GLOBALS['db']->errno(); if ($error_no > 0 && $error_no != 1062) { die($GLOBALS['db']->errorMsg()); } } while ($error_no == 1062); //如果是订单号重复则重新提交数据 $new_order_id = $db->insert_id(); $order['order_id'] = $new_order_id; /* 插入订单商品 */ $sql = "INSERT INTO " . $ecs->table('order_goods') . "( " . "order_id, goods_id, goods_name, goods_sn, goods_number, market_price, ". "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id) ". " SELECT '$new_order_id', goods_id, goods_name, goods_sn, goods_number, market_price, ". "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id". " FROM " .$ecs->table('cart') . " WHERE session_id = '".SESS_ID."' AND rec_type = '$flow_type'"; $db->query($sql); /* 修改拍卖活动状态 */ if ($order['extension_code']=='auction') { $sql = "UPDATE ". $ecs->table('goods_activity') ." SET is_finished='2' WHERE act_id=".$order['extension_id']; $db->query($sql); } /* 处理余额、积分、红包 */ if ($order['user_id'] > 0 && $order['surplus'] > 0) { log_account_change($order['user_id'], $order['surplus'] * (-1), 0, 0, 0, sprintf($_LANG['pay_order'], $order['order_sn'])); } if ($order['user_id'] > 0 && $order['integral'] > 0) { log_account_change($order['user_id'], 0, 0, 0, $order['integral'] * (-1), sprintf($_LANG['pay_order'], $order['order_sn'])); } if ($order['bonus_id'] > 0 && $temp_amout > 0) { use_bonus($order['bonus_id'], $new_order_id); } /* 如果使用库存,且下订单时减库存,则减少库存 */ if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE) { //change_order_goods_storage($order['order_id'], true, SDT_PLACE); } error_log('1',3,'flow.log'); /* 给商家发邮件 */ /* 增加是否给客服发送邮件选项 */ if ($_CFG['send_service_email'] && $_CFG['service_email'] != '') { error_log('2',3,'flow.log'); $tpl = get_mail_template('remind_of_new_order'); /* $smarty->assign('order', $order); $smarty->assign('goods_list', $cart_goods); $smarty->assign('shop_name', $_CFG['shop_name']); $smarty->assign('send_date', date($_CFG['time_format'])); $content = $smarty->fetch('str:' . $tpl['template_content']); */ send_mail($_CFG['shop_name'], $_CFG['service_email'], $tpl['template_subject'], $content, $tpl['is_html']); } error_log('2',3,'flow.log'); /* 如果需要,发短信 */ if ($_CFG['sms_order_placed'] == '1' && $_CFG['sms_shop_mobile'] != '') { include_once(RPC_ROOT.'includes/cls_sms.php'); $sms = new sms(); $msg = $order['pay_status'] == PS_UNPAYED ? $_LANG['order_placed_sms'] : $_LANG['order_placed_sms'] . '[' . $_LANG['sms_paid'] . ']'; $sms->send($_CFG['sms_shop_mobile'], sprintf($msg, $order['consignee'], $order['tel']), 0); } error_log('3',3,'flow.log'); /* 如果订单金额为0 处理虚拟卡 */ if ($order['order_amount'] <= 0) { $sql = " SELECT goods_id, goods_name, goods_number AS num FROM ".$GLOBALS['ecs']->table('cart') . " WHERE is_real = 0 AND extension_code = 'virtual_card'". " AND session_id = '".SESS_ID."' AND rec_type = '$flow_type'"; $res = $GLOBALS['db']->getAll($sql); error_log('4',3,'flow.log'); $virtual_goods = array(); foreach ($res AS $row) { $virtual_goods['virtual_card'][] = array('goods_id' => $row['goods_id'], 'goods_name' => $row['goods_name'], 'num' => $row['num']); } if ($virtual_goods AND $flow_type != CART_GROUP_BUY_GOODS) { /* 虚拟卡发货 */ if (virtual_goods_ship($virtual_goods,$msg, $order['order_sn'], true)) { /* 如果没有实体商品,修改发货状态,送积分和红包 */ $sql = "SELECT COUNT(*)" . " FROM " . $ecs->table('order_goods') . " WHERE order_id = '$order[order_id]' " . " AND is_real = 1"; if ($db->getOne($sql) <= 0) { /* 修改订单状态 */ update_order($order['order_id'], array('shipping_status' => SS_SHIPPED, 'shipping_time' => gmtime())); error_log('5',3,'flow.log'); /* 如果订单用户不为空,计算积分,并发给用户;发红包 */ if ($order['user_id'] > 0) { /* 取得用户信息 */ $user = user_info($order['user_id']); /* 计算并发放积分 */ $integral = integral_to_give($order); log_account_change($order['user_id'], 0, 0, intval($integral['rank_points']), intval($integral['custom_points']), sprintf($_LANG['order_gift_integral'], $order['order_sn'])); error_log('6',3,'flow.log'); /* 发放红包 */ send_order_bonus($order['order_id']); } } } } } /* 清空购物车 */ clear_cart($flow_type); error_log('7',3,'flow.log'); /* 清除缓存,否则买了商品,但是前台页面读取缓存,商品数量不减少 */ clear_all_files(); /* 插入支付日志 */ //$order['log_id'] = insert_pay_log($new_order_id, $order['order_amount'], PAY_ORDER); error_log('8',3,'flow.log'); /*取得支付代码 #取得支付信息,生成支付代码 if ($order['order_amount'] > 0) { $payment = payment_info($order['pay_id']); include_once('includes/modules/payment/' . $payment['pay_code'] . '.php'); $pay_obj = new $payment['pay_code']; $pay_online = $pay_obj->get_code($order, unserialize_config($payment['pay_config'])); $order['pay_desc'] = $payment['pay_desc']; $smarty->assign('pay_online', $pay_online); } */ if(!empty($order['shipping_name'])) { $order['shipping_name']=trim(stripcslashes($order['shipping_name'])); } error_log('9',3,'flow.log'); /* #订单信息 $smarty->assign('order', $order); $smarty->assign('total', $total); $smarty->assign('goods_list', $cart_goods); $smarty->assign('order_submit_back', sprintf($_LANG['order_submit_back'], $_LANG['back_home'], $_LANG['goto_user_center'])); // 返回提示 */ //user_uc_call('add_feed', array($order['order_id'], BUY_GOODS)); //推送feed到uc unset($_SESSION['flow_consignee']); // 清除session中保存的收货人信息 unset($_SESSION['flow_order']); unset($_SESSION['direct_shopping']); $order_done = array('order'=>$order,'total'=>$total,'cart_goods'=>$cart_goods); //var_dump($order_done);exit; error_log('10',3,'flow.log'); $order_id = $order['order_id']; $price = $order['order_amount']; $order = array ('order_id'=>$order_id,'order_number'=>$order['order_sn'],'price'=>$price) ; error_log('11',3,'flow.log'); //print_r($order);die; jsonExit($order); }
if ($checkcode != $orgCheckcode || empty($checkcode)) { echo 'nocheckcode'; return; } $_SESSION['total_value'] = ''; $needjifen = $usejifen ? Helper_Archive::getNeedJifen($jifentprice) : 0; $userinfo = $User->getInfoByMid($User->uid); //获取用户信息 //这里再次判断用户积分是否满足条件. if ($userinfo['jifen'] < $needjifen) { $usejifen = 0; $needjifen = 0; } $productaid = Helper_Archive::pregReplace($productaid, 2); $suitid = Helper_Archive::pregReplace($suitid, 2); $ordersn = get_order_sn($typeid); //订单号 $memberid = $User->uid ? $User->uid : 0; $row = TongYong::getProductInfo($productaid, $typeid); $suitinfo = TongYong::getSuitInfo($suitid); $status = $paytype == 1 ? 1 : 0; //'linktel'=>Helper_Archive::pregReplace($linktel,2); $arr = array('ordersn' => $ordersn, 'webid' => $webid, 'typeid' => $typeid, 'productautoid' => $row['articleid'], 'productaid' => $row['aid'], 'productname' => $row['title'], 'price' => $suitinfo['ourprice'], 'childprice' => 0, 'dingnum' => Helper_Archive::pregReplace($dingnum, 2), 'usedate' => $usedate, 'childnum' => 0, 'linkman' => Helper_Archive::pregReplace($linkman, 5), 'linktel' => Helper_Archive::pregReplace($linktel, 2), 'linkemail' => Helper_Archive::pregReplace($linkemail, 5), 'linkqq' => '', 'jifentprice' => $suitinfo['jifentprice'], 'jifenbook' => $suitinfo['jifenbook'], 'jifencomment' => $suitinfo['jifencomment'], 'addtime' => time(), 'memberid' => $memberid, 'dingjin' => Helper_Archive::pregReplace($dingjin, 5), 'paytype' => $paytype, 'usejifen' => $usejifen, 'needjifen' => $needjifen, 'status' => $status, 'remark' => Helper_Archive::pregReplace($remarkinfo, 5)); if (Helper_Archive::addOrder($arr)) { $model = new CommonModule('#@__member_order'); $orderid = $model->getField('id', "ordersn='{$ordersn}'"); //判断是否开启在线支付 if (!empty($choosepay) && $paytype != '3' && $choosepay != '6') { $url = $GLOBALS['cfg_basehost'] . '/' . $module_pinyin . '/booking.php?dopost=payonline&id=' . $orderid . '&paytype=' . $choosepay; } else { //是二次支付将跳转到订单咨询页面
/** * 提交订单 */ public function submit_order() { /* 检查购物车中是否有商品 */ if (count($_SESSION['wholesale_goods']) == 0) { show_message(L('no_goods_in_cart')); } /* 检查备注信息 */ if (empty($_POST['remark'])) { show_message(L('ws_remark')); } /* 计算商品总额 */ $goods_amount = 0; foreach ($_SESSION['wholesale_goods'] as $goods) { $goods_amount += $goods['subtotal']; } $order = array('postscript' => htmlspecialchars($_POST['remark']), 'user_id' => $_SESSION['user_id'], 'add_time' => gmtime(), 'order_status' => OS_UNCONFIRMED, 'shipping_status' => SS_UNSHIPPED, 'pay_status' => PS_UNPAYED, 'goods_amount' => $goods_amount, 'order_amount' => $goods_amount); /* 插入订单表 */ $error_no = 0; do { $order['order_sn'] = get_order_sn(); //获取新订单号 $this->model->table('order_info')->data($order)->insert(); $error_no = $this->model->errno(); if ($error_no > 0 && $error_no != 1062) { die($this->model->errorMsg()); } } while ($error_no == 1062); //如果是订单号重复则重新提交数据 $new_order_id = $this->model->insert_id(); $order['order_id'] = $new_order_id; /* 插入订单商品 */ foreach ($_SESSION['wholesale_goods'] as $goods) { //如果存在货品 $product_id = 0; if (!empty($goods['goods_attr_id'])) { $goods_attr_id = array(); foreach ($goods['goods_attr_id'] as $value) { $goods_attr_id[$value['attr_id']] = $value['attr_val_id']; } ksort($goods_attr_id); $goods_attr = implode('|', $goods_attr_id); $res = $this->model->table('products')->field('product_id')->where("goods_attr = '{$goods_attr}' AND goods_id = '" . $goods['goods_id'] . "'")->find(); $product_id = $res['product_id']; } $sql = "INSERT INTO " . $this->model->pre . "order_goods( " . "order_id, goods_id, goods_name, goods_sn, product_id, goods_number, market_price, " . "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift) " . " SELECT '{$new_order_id}', goods_id, goods_name, goods_sn, '{$product_id}','{$goods['goods_number']}', market_price, " . "'{$goods['goods_price']}', '{$goods['goods_attr']}', is_real, extension_code, 0, 0 " . " FROM " . $this->model->pre . "goods WHERE goods_id = '{$goods['goods_id']}'"; $this->model->query($sql); } /* 给商家发邮件 */ if (C('service_email') != '') { $tpl = get_mail_template('remind_of_new_order'); $this->assign('order', $order); $this->assign('shop_name', C('shop_name')); $this->assign('send_date', date(C('time_format'))); $content = ECTouch::view()->fetch('str:' . $tpl['template_content']); send_mail(C('shop_name'), C('service_email'), $tpl['template_subject'], $content, $tpl['is_html']); } /* 如果需要,发短信 */ if (C('sms_order_placed') == '1' && C('sms_shop_mobile') != '') { $sms = new EcsSms(); $msg = L('order_placed_sms'); $sms->send(C('sms_shop_mobile'), sprintf($msg, $order['consignee'], $order['mobile']), '', 13, 1); } /* 清空购物车 */ unset($_SESSION['wholesale_goods']); /* 提示 */ show_message(sprintf(L('ws_order_submitted'), $order['order_sn']), L('ws_return_home'), url('index')); }
public function create_order($hongbao) { $total_amount = $hongbao['total_amount'] - $hongbao['total_amount'] * 0.02; $total_num = $hongbao['total_num']; $order_total_amount = 0; for ($i = 0; $i < $total_num; $i++) { #$order_total_amount = $total_amount - $total_amount; $amount = $this->get_order_amount($total_amount - $order_total_amount, $total_num - $i); $data = array('bao_id' => $hongbao['id'], 'bao_user_id' => $hongbao['user_id'], 'bao_openid' => $hongbao['openid'], 'from_bao_id' => $hongbao['from_bao_id'], 'from_openid' => $hongbao['from_openid'], 'from_number_no' => $hongbao['from_number_no'], 'from_user_id' => $hongbao['from_user_id'], 'number_no' => $hongbao['number_no'], 'order_sn' => get_order_sn('HB'), 'amount' => $amount, 'addtime' => time(), 'state' => 1, 'openid' => '', 'user_id' => 0); M('bao_order')->add($data); $order_total_amount += $amount; } }
/** * 提交订单 */ public function done() { /* 取得购物类型 */ $flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS; /* 检查购物车中是否有商品 */ $condition = " session_id = '" . SESS_ID . "' " . "AND parent_id = 0 AND is_gift = 0 AND rec_type = '{$flow_type}'"; $count = $this->model->table('cart')->field('COUNT(*)')->where($condition)->getOne(); if ($count == 0) { show_message(L('no_goods_in_cart'), '', '', 'warning'); } /* 如果使用库存,且下订单时减库存,则减少库存 */ if (C('use_storage') == '1' && C('stock_dec_time') == SDT_PLACE) { $cart_goods_stock = model('Order')->get_cart_goods(); $_cart_goods_stock = array(); foreach ($cart_goods_stock['goods_list'] as $value) { $_cart_goods_stock[$value['rec_id']] = $value['goods_number']; } model('Flow')->flow_cart_stock($_cart_goods_stock); unset($cart_goods_stock, $_cart_goods_stock); } // 检查用户是否已经登录 如果用户已经登录了则检查是否有默认的收货地址 如果没有登录则跳转到登录和注册页面 if (empty($_SESSION['direct_shopping']) && $_SESSION['user_id'] == 0) { /* 用户没有登录且没有选定匿名购物,转向到登录页面 */ ecs_header("Location: " . url('user/login') . "\n"); } // 获取收货人信息 $consignee = model('Order')->get_consignee($_SESSION['user_id']); /* 检查收货人信息是否完整 */ if (!model('Order')->check_consignee_info($consignee, $flow_type)) { /* 如果不完整则转向到收货人信息填写界面 */ ecs_header("Location: " . url('flow/consignee') . "\n"); } // 处理接收信息 $how_oos = I('post.how_oos', 0); $inv_type = I('post.inv_type', ''); $inv_payee = I('post.inv_payee', ''); $inv_content = I('post.inv_content', ''); $postscript = I('post.postscript', ''); $oos = L('oos.' . $how_oos); // 订单信息 $order = array('shipping_id' => I('post.shipping'), 'pay_id' => I('post.payment'), 'surplus' => isset($_POST['surplus']) ? floatval($_POST['surplus']) : 0.0, 'integral' => isset($_POST['integral']) ? intval($_POST['integral']) : 0, 'need_inv' => empty($_POST['need_inv']) ? 0 : 1, 'inv_type' => $_POST['inv_type'], 'inv_payee' => trim($_POST['inv_payee']), 'inv_content' => $_POST['inv_content'], 'postscript' => trim($_POST['postscript']), 'how_oos' => isset($oos) ? addslashes("{$oos}") : '', 'need_insure' => isset($_POST['need_insure']) ? intval($_POST['need_insure']) : 0, 'user_id' => $_SESSION['user_id'], 'add_time' => gmtime(), 'order_status' => OS_UNCONFIRMED, 'shipping_status' => SS_UNSHIPPED, 'pay_status' => PS_UNPAYED, 'agency_id' => model('Order')->get_agency_by_regions(array($consignee['country'], $consignee['province'], $consignee['city'], $consignee['district'])), 'mobile_order' => 1, 'mobile_pay' => 1); /* 扩展信息 */ if (isset($_SESSION['flow_type']) && intval($_SESSION['flow_type']) != CART_GENERAL_GOODS) { $order['extension_code'] = $_SESSION['extension_code']; $order['extension_id'] = $_SESSION['extension_id']; } else { $order['extension_code'] = ''; $order['extension_id'] = 0; } /* 检查积分余额是否合法 */ $user_id = $_SESSION['user_id']; if ($user_id > 0) { $user_info = model('Order')->user_info($user_id); $order['surplus'] = min($order['surplus'], $user_info['user_money'] + $user_info['credit_line']); if ($order['surplus'] < 0) { $order['surplus'] = 0; } // 查询用户有多少积分 $flow_points = model('Flow')->flow_available_points(); // 该订单允许使用的积分 $user_points = $user_info['pay_points']; // 用户的积分总数 $order['integral'] = min($order['integral'], $user_points, $flow_points); if ($order['integral'] < 0) { $order['integral'] = 0; } } else { $order['surplus'] = 0; $order['integral'] = 0; } /* 订单中的商品 */ $cart_goods = model('Order')->cart_goods($flow_type); if (empty($cart_goods)) { show_message(L('no_goods_in_cart'), L('back_home'), './', 'warning'); } /* 检查商品总额是否达到最低限购金额 */ if ($flow_type == CART_GENERAL_GOODS && model('Order')->cart_amount(true, CART_GENERAL_GOODS) < C('min_goods_amount')) { show_message(sprintf(L('goods_amount_not_enough'), price_format(C('min_goods_amount'), false))); } /* 收货人信息 */ foreach ($consignee as $key => $value) { $order[$key] = addslashes($value); } /* 判断是不是实体商品 */ foreach ($cart_goods as $val) { /* 统计实体商品的个数 */ if ($val['is_real']) { $is_real_good = 1; } } if (isset($is_real_good)) { $res = $this->model->table('shipping')->field('shipping_id')->where("shipping_id=" . $order['shipping_id'] . " AND enabled =1")->getOne(); if (!$res) { show_message(L('flow_no_shipping')); } } /* 订单中的总额 */ $total = model('Users')->order_fee($order, $cart_goods, $consignee); $order['goods_amount'] = $total['goods_price']; $order['discount'] = $total['discount']; $order['surplus'] = $total['surplus']; $order['tax'] = $total['tax']; // 购物车中的商品能享受红包支付的总额 $discount_amout = model('Order')->compute_discount_amount(); // 红包和积分最多能支付的金额为商品总额 $temp_amout = $order['goods_amount'] - $discount_amout; /* 配送方式 */ if ($order['shipping_id'] > 0) { $shipping = model('Shipping')->shipping_info($order['shipping_id']); $order['shipping_name'] = addslashes($shipping['shipping_name']); } $order['shipping_fee'] = $total['shipping_fee']; $order['insure_fee'] = $total['shipping_insure']; /* 支付方式 */ if ($order['pay_id'] > 0) { $payment = model('Order')->payment_info($order['pay_id']); $order['pay_name'] = addslashes($payment['pay_name']); } $order['pay_fee'] = $total['pay_fee']; $order['cod_fee'] = $total['cod_fee']; $order['order_amount'] = number_format($total['amount'], 2, '.', ''); /* 如果全部使用余额支付,检查余额是否足够 */ if ($payment['pay_code'] == 'balance' && $order['order_amount'] > 0) { if ($order['surplus'] > 0) { // 余额支付里如果输入了一个金额 $order['order_amount'] = $order['order_amount'] + $order['surplus']; $order['surplus'] = 0; } if ($order['order_amount'] > $user_info['user_money'] + $user_info['credit_line']) { show_message(L('balance_not_enough')); } else { $order['surplus'] = $order['order_amount']; $order['order_amount'] = 0; } } /* 如果订单金额为0(使用余额或积分或红包支付),修改订单状态为已确认、已付款 */ if ($order['order_amount'] <= 0) { $order['order_status'] = OS_CONFIRMED; $order['confirm_time'] = gmtime(); $order['pay_status'] = PS_PAYED; $order['pay_time'] = gmtime(); $order['order_amount'] = 0; } $order['integral_money'] = $total['integral_money']; $order['integral'] = $total['integral']; if ($order['extension_code'] == 'exchange_goods') { $order['integral_money'] = 0; $order['integral'] = $total['exchange_integral']; } $order['from_ad'] = !empty($_SESSION['from_ad']) ? $_SESSION['from_ad'] : '0'; $order['referer'] = !empty($_SESSION['referer']) ? addslashes($_SESSION['referer']) : ''; /* 记录扩展信息 */ if ($flow_type != CART_GENERAL_GOODS) { $order['extension_code'] = $_SESSION['extension_code']; $order['extension_id'] = $_SESSION['extension_id']; } $affiliate = unserialize(C('affiliate')); if (isset($affiliate['on']) && $affiliate['on'] == 1 && $affiliate['config']['separate_by'] == 1) { // 推荐订单分成 $parent_id = model('Users')->get_affiliate(); if ($user_id == $parent_id) { $parent_id = 0; } } elseif (isset($affiliate['on']) && $affiliate['on'] == 1 && $affiliate['config']['separate_by'] == 0) { // 推荐注册分成 $parent_id = 0; } else { // 分成功能关闭 $parent_id = 0; } $order['parent_id'] = $parent_id; //分销 start $parent_id = model('Sale')->get_parent_id($parent_id); $order['parent_id'] = $parent_id; /* 插入订单表 */ $error_no = 0; do { $order['order_sn'] = get_order_sn(); // 获取新订单号 $new_order = model('Common')->filter_field('order_info', $order); $this->model->table('order_info')->data($new_order)->insert(); $error_no = M()->errno(); if ($error_no > 0 && $error_no != 1062) { die(M()->errorMsg()); } } while ($error_no == 1062); // 如果是订单号重复则重新提交数据 $new_order_id = M()->insert_id(); $order['order_id'] = $new_order_id; /* 插入订单商品 */ $sql = "INSERT INTO " . $this->model->pre . "order_goods( " . "order_id, goods_id, goods_name, goods_sn, product_id, goods_number, market_price, " . "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id) " . " SELECT '{$new_order_id}', goods_id, goods_name, goods_sn, product_id, goods_number, market_price, " . "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id" . " FROM " . $this->model->pre . "cart WHERE session_id = '" . SESS_ID . "' AND rec_type = '{$flow_type}'"; $this->model->query($sql); /* 处理余额、积分、红包 */ if ($order['user_id'] > 0 && $order['surplus'] > 0) { model('ClipsBase')->log_account_change($order['user_id'], $order['surplus'] * -1, 0, 0, 0, sprintf(L('pay_order'), $order['order_sn'])); } if ($order['user_id'] > 0 && $order['integral'] > 0) { model('ClipsBase')->log_account_change($order['user_id'], 0, 0, 0, $order['integral'] * -1, sprintf(L('pay_order'), $order['order_sn'])); } /* 如果使用库存,且下订单时减库存,则减少库存 */ if (C('use_storage') == '1' && C('stock_dec_time') == SDT_PLACE) { model('Order')->change_order_goods_storage($order['order_id'], true, SDT_PLACE); } /* 给商家发邮件 */ /* 增加是否给客服发送邮件选项 */ if (C('send_service_email') && C('service_email') != '') { $tpl = model('Base')->get_mail_template('remind_of_new_order'); $this->assign('order', $order); $this->assign('goods_list', $cart_goods); $this->assign('shop_name', C('shop_name')); $this->assign('send_date', date(C('time_format'))); $content = ECTouch::$view->fetch('str:' . $tpl['template_content']); send_mail(C('shop_name'), C('service_email'), $tpl['template_subject'], $content, $tpl['is_html']); } /* 如果需要,发短信 */ if (C('sms_order_placed') == '1' && C('sms_shop_mobile') != '') { $sms = new EcsSms(); $msg = $order['pay_status'] == PS_UNPAYED ? L('order_placed_sms') : L('order_placed_sms') . '[' . L('sms_paid') . ']'; $sms->send(C('sms_shop_mobile'), sprintf($msg, $order['consignee'], $order['mobile']), '', 13, 1); } /* 如果需要,微信通知 by wanglu */ if (method_exists('WechatController', 'do_oauth')) { $order_url = __HOST__ . url('user/order_detail', array('order_id' => $order['order_id'])); $order_url = urlencode(base64_encode($order_url)); send_wechat_message('order_remind', '', $order['order_sn'] . L('order_effective'), $order_url, $order['order_sn']); } /* 如果订单金额为0 处理虚拟卡 */ if ($order['order_amount'] <= 0) { $sql = "SELECT goods_id, goods_name, goods_number AS num FROM " . $this->model->pre . "cart WHERE is_real = 0 AND extension_code = 'virtual_card'" . " AND session_id = '" . SESS_ID . "' AND rec_type = '{$flow_type}'"; $res = $this->model->query($sql); $virtual_goods = array(); foreach ($res as $row) { $virtual_goods['virtual_card'][] = array('goods_id' => $row['goods_id'], 'goods_name' => $row['goods_name'], 'num' => $row['num']); } if ($virtual_goods) { /* 虚拟卡发货 */ if (model('OrderBase')->virtual_goods_ship($virtual_goods, $msg, $order['order_sn'], true)) { /* 如果没有实体商品,修改发货状态,送积分和红包 */ $count = $this->model->table('order_goods')->field('COUNT(*)')->where("order_id = '{$order['order_id']}' " . " AND is_real = 1")->getOne(); if ($count <= 0) { /* 修改订单状态 */ model('Users')->update_order($order['order_id'], array('shipping_status' => SS_SHIPPED, 'shipping_time' => gmtime())); /* 如果订单用户不为空,计算积分,并发给用户;发红包 */ if ($order['user_id'] > 0) { /* 取得用户信息 */ $user = model('Order')->user_info($order['user_id']); /* 计算并发放积分 */ $integral = model('Order')->integral_to_give($order); model('ClipsBase')->log_account_change($order['user_id'], 0, 0, intval($integral['rank_points']), intval($integral['custom_points']), sprintf(L('order_gift_integral'), $order['order_sn'])); } } } } } // 销量 model('Flow')->add_touch_goods($flow_type, $order['extension_code']); /* 记录供应商信息 */ $sql = "update " . $this->model->pre . "order_goods og , " . $this->model->pre . "goods g set og.suppliers_id=g.suppliers_id\r\n where og.goods_id=g.goods_id and og.order_id='" . $order['order_id'] . "'"; $this->model->query($sql); /* 清空购物车 */ model('Order')->clear_cart($flow_type); /* 清除缓存,否则买了商品,但是前台页面读取缓存,商品数量不减少 */ clear_all_files(); /* 插入支付日志 */ $order['log_id'] = model('ClipsBase')->insert_pay_log($new_order_id, $order['order_amount'], PAY_ORDER); /* 取得支付信息,生成支付代码 */ if ($order['order_amount'] > 0) { $payment = model('Order')->payment_info($order['pay_id']); include_once ROOT_PATH . 'plugins/payment/' . $payment['pay_code'] . '.php'; $pay_obj = new $payment['pay_code'](); $pay_online = $pay_obj->get_code($order, unserialize_config($payment['pay_config'])); $order['pay_desc'] = $payment['pay_desc']; $this->assign('pay_online', $pay_online); } if (!empty($order['shipping_name'])) { $order['shipping_name'] = trim(stripcslashes($order['shipping_name'])); } // 货到付款不显示 if ($payment['pay_code'] != 'balance') { /* 生成订单后,修改支付,配送方式 */ // 支付方式 $payment_list = model('Order')->available_payment_list(0); if (isset($payment_list)) { foreach ($payment_list as $key => $payment) { /* 如果有易宝神州行支付 如果订单金额大于300 则不显示 */ if ($payment['pay_code'] == 'yeepayszx' && $total['amount'] > 300) { unset($payment_list[$key]); } // 过滤掉当前的支付方式 if ($payment['pay_id'] == $order['pay_id']) { unset($payment_list[$key]); } /* 如果有余额支付 */ if ($payment['pay_code'] == 'balance') { /* 如果未登录,不显示 */ if ($_SESSION['user_id'] == 0) { unset($payment_list[$key]); } else { if ($_SESSION['flow_order']['pay_id'] == $payment['pay_id']) { $this->assign('disable_surplus', 1); } } } // 如果不是微信浏览器访问并且不是微信会员 则不显示微信支付 if ($payment['pay_code'] == 'wxpay' && !is_wechat_browser() && empty($_SESSION['openid'])) { unset($payment_list[$key]); } // 兼容过滤ecjia支付方式 if (substr($payment['pay_code'], 0, 4) == 'pay_') { unset($payment_list[$key]); } } } $this->assign('payment_list', $payment_list); $this->assign('pay_code', 'no_balance'); } // 如果是银行汇款或货到付款 则显示支付描述 if ($payment['pay_code'] == 'bank' || $payment['pay_code'] == 'cod') { if (empty($order['pay_name'])) { $order['pay_name'] = trim(stripcslashes($payment['pay_name'])); } $this->assign('pay_desc', $order['pay_desc']); } /* 订单信息 */ $this->assign('order', $order); $this->assign('total', $total); $this->assign('goods_list', $cart_goods); $this->assign('order_submit_back', sprintf(L('order_submit_back'), L('back_home'), L('goto_user_center'))); // 返回提示 user_uc_call('add_feed', array($order['order_id'], BUY_GOODS)); // 推送feed到uc unset($_SESSION['flow_consignee']); // 清除session中保存的收货人信息 unset($_SESSION['flow_order']); unset($_SESSION['direct_shopping']); $this->assign('currency_format', C('currency_format')); $this->assign('integral_scale', C('integral_scale')); $this->assign('step', ACTION_NAME); $this->assign('title', L('order_submit')); $this->display('flow.dwt'); }
/** *提交获奖感言 */ function submitmyspeech($cmt, $user_id) { require_once ROOT_PATH . 'includes/lib_order.php'; $id = $cmt->id; $speech = $cmt->speech; $address = $cmt->address; $tel = $cmt->tel; $name = $cmt->name; $province = $cmt->province; $city = $cmt->city; $district = $cmt->district; $email = $cmt->email; $goods_id = $cmt->goods_id; //下订单 $order_sn = get_order_sn(); $shipping_id = 8; $shipping_name = "圆通快递"; $shipping_fee = 0.0; $order_amount = $shipping_fee; $pay_id = 1; $pay_name = "余额支付"; $sql = 'INSERT INTO ' . $GLOBALS['ecs']->table('order_info') . ' (`order_sn`, `user_id`,`consignee`, `country`, `province`,`city`, `district`, `address`, ' . '`tel`, `email`,`shipping_id`, `shipping_name`,`pay_id`, `pay_name`, `how_oos`, `goods_amount`,' . ' `shipping_fee`,`order_amount`,`referer`, `add_time`) VALUES ("' . $order_sn . '",' . $user_id . ',"' . $name . '",1,' . $province . ',' . $city . ',' . $district . ',"' . $address . '","' . $tel . '","' . $email . '",' . $shipping_id . ',"' . $shipping_name . '",' . $pay_id . ',"' . $pay_name . '","等待所有商品备齐后再发",0.00,' . $shipping_fee . ',' . $order_amount . ',"本站",' . gmtime() . ')'; $GLOBALS['db']->query($sql); $sql = 'select max(order_id) from ' . $GLOBALS['ecs']->table('order_info'); $order_id = $GLOBALS['db']->getOne($sql); $sql = 'select * from ' . $GLOBALS['ecs']->table('goods') . ' where goods_id = ' . $goods_id; $goods = $GLOBALS['db']->getRow($sql); //获奖商品信息 $sql = 'INSERT INTO ' . $GLOBALS['ecs']->table('order_goods') . ' (`order_id`, `goods_id`, `goods_name`, `goods_sn`, `market_price`, `goods_price`, `is_real`) VALUES (' . $order_id . ',' . $goods_id . ',"' . $goods['goods_name'] . '(抽奖获奖品)","' . $goods['goods_sn'] . '",' . $goods['market_price'] . ',0.00,1)'; $GLOBALS['db']->query($sql); $province = get_region_name($province); $city = get_region_name($city); $district = get_region_name($district); $address = $name . ',' . $address . ',' . $email; $address1 = $province . $city . $district; //修改获奖状态为已申请 $sql = "update " . $GLOBALS['ecs']->table('lottery_user') . " set speech='{$speech}', address1='{$address1}',address='{$address}', tel='{$tel}' ,order_id = '{$order_id}',gettime='" . gmtime() . "',ip = '" . real_ip() . "',applystatus=1 where id='{$id}' and user_id='{$user_id}'"; $GLOBALS['db']->query($sql); return "1"; }
$order['discount'] = ''; $order['tax'] = 0; $order['shipping_name'] = $_REQUEST['shipping_name']; $order['shipping_fee'] = $_REQUEST['shipping_fee']; $order['insure_fee'] = 0; $order['pay_name'] = $_REQUEST['pay_name']; $order['pay_fee'] = 0; $order['cod_fee'] = 0; $order['pack_fee'] = 0; $order['card_fee'] = 0; $order['order_amount'] = $order_amount; $order['integral_money'] = $integral_meny; $order['from_ad'] = 0; $order['referer'] = "本站"; $order['parent_id'] = 0; $order_sn = get_order_sn(); //获取新订单号 $order['order_sn'] = $order_sn; //获取新订单号 $sql = "SELECT `pay_code` FROM " . $ecs->table('payment') . " WHERE `pay_id`=" . $order['pay_id']; $pay_code = $db->getOne($sql); if ($pay_code == 'balance') { $sql = "SELECT `user_money` FROM " . $ecs->table('users') . " WHERE `user_id`='{$uid}'"; $user_money = $db->getOne($sql); if ($user_money > $order_amount) { $sql = "UPDATE " . $ecs->table('users') . " SET `user_money`=`user_money`-{$order_amount} WHERE `user_id`='{$uid}'"; $db->query($sql); $order['order_status'] = 1; $order['pay_status'] = 2; } }
function sendhonebao() { $msg = "你的凑红包成功啦!\n众筹进度:¥200元\n红包将会在1~3个工作内,通过微信红包打给你."; echo strlen($msg) . "<br/>"; $r = sendHongBao(array('mch_billno' => get_order_sn(), 'send_name' => '凑红包', 're_openid' => 'obb1AuBzVPvw8NE8UZ2gc0web854', 'total_amount' => '100', 'wishing' => $msg, 'act_name' => '测试红包', 'remark' => '凑红包')); var_dump($r); }
/** * 生成代理商余额流水账(消费者在代理商站点购物) * time :2014-05-21 * author:hg **/ function agency_order_log($order_id, $admin_agency_id, $user_id = '', $goods_amount) { if (!$goods_amount) { return false; } $arr['agency_order_sn'] = get_order_sn(); $arr['order_id'] = $order_id; $arr['agency_id'] = $admin_agency_id; $arr['user_id'] = $user_id ? $user_id : '0'; $arr['order_amount'] = $goods_amount; $result = $GLOBALS['db']->getOne("select order_id from " . $GLOBALS['ecs']->table('agency_pay_log') . " where order_id = {$order_id}"); if (!$result) { do { $arr['agency_order_sn'] = get_order_sn(); //获取新订单号 $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('agency_pay_log'), $arr, 'INSERT'); $error_no = $GLOBALS['db']->errno(); if ($error_no > 0 && $error_no != 1062) { die($GLOBALS['db']->errorMsg()); } } while ($error_no == 1062); //如果是订单号重复则重新提交数据 } else { $GLOBALS['db']->query("UPDATE " . $GLOBALS['ecs']->table('agency_pay_log') . " SET order_amount = order_amount + ('{$goods_amount}') WHERE order_id = {$order_id} LIMIT 1"); } subtract_agency_amount($admin_agency_id, $user_id, $goods_amount, $status = '1'); }
function sendhongbao() { header("Content-type:text/html;charset=utf-8"); // 设置过期 $list = M('hongbao')->where(array('state' => 1, 'addtime' => array('lt', time() - 86400)))->select(); foreach ($list as $item) { // 设置过期 M('hongbao')->where(array('id' => $item['id']))->save(array('state' => 3)); } $hongbao_list = M('hongbao')->where(array('state' => 2, 'is_send_hongbao' => 0))->select(); foreach ($hongbao_list as $hongbao) { $hongbao_send = M('hongbao_send')->where(array('id' => $hongbao['hongbao_id']))->find(); if (!$hongbao_send) { $bao = array('mch_billno' => get_order_sn(), 'send_name' => '凑红包', 're_openid' => $hongbao['openid'], 'total_amount' => floor($hongbao['total_amount'] * 0.98 * 100), 'wishing' => '恭喜您!您在凑红包发起的凑红包已经完成。', 'act_name' => '凑红包', 'remark' => '凑红包'); $send = $bao; $send['user_id'] = $hongbao['user_id']; $send['addtime'] = time(); $hongbao_id = M('hongbao_send')->add($send); if ($hongbao_id) { M('hongbao')->where(array("id='{$hongbao['id']}'"))->save(array('hongbao_id' => $hongbao_id, 'hongbao_sn' => $bao['mch_billno'], 'hongbao_time' => time())); $hongbao_send = M('hongbao_send')->find($hongbao_id); } } // 发送红包 if ($hongbao_send) { $bao = array('mch_billno' => $hongbao_send['mch_billno'], 'send_name' => '凑红包', 're_openid' => $hongbao['openid'], 'total_amount' => floor($hongbao['total_amount'] * 0.98 * 100), 'wishing' => '恭喜您!您在凑红包发起的凑红包已经完成。', 'act_name' => '凑红包', 'remark' => '凑红包'); $data = sendHongBao($bao); if ($data['result_code'] == 'SUCCESS' && $data['return_code'] == 'SUCCESS') { M('hongbao')->where(array("id='{$hongbao['id']}'"))->save(array('is_send_hongbao' => 1)); M('hongbao_send')->where(array("id='{$hongbao_send['id']}'"))->save(array('state' => 2, 'send_listid' => $data['send_listid'])); // 幸运星 $star = M('hongbao_order')->where(array('hongbao_id' => $hongbao['id'], 'is_star' => 1))->find(); if (!$star) { $list = M('hongbao_order')->where("hongbao_id='{$hongbao['id']}' AND state=2")->select(); if ($list) { $ids = array(); foreach ($list as $r) { $ids[] = $r['id']; } shuffle($ids); $k = array_rand($ids); $id = $ids[$k]; if ($id) { $order_info = M('hongbao_order')->find($id); $user_info = M('user')->find($order_info['user_id']); M('hongbao_order')->where("id='{$id}'")->save(array('is_star' => 1)); } } } else { $user_info = M('user')->find($star['user_id']); } $user_amount = number_format($hongbao['total_amount'] * 0.98, 2); $msg = "你发起的凑红包成功啦!\n\n众筹标题:{$hongbao['remark']}\n\n众筹进度:¥{$hongbao['total_amount']}已成功!\n\n幸运星:{$user_info['name']}\n\n红包已经通过微信红包打给你,其中已扣除2%微信支付手续费,扣除后金额为{$user_amount}元"; \Wechat\Wxapi::send_wxmsg($hongbao['openid'], '众筹状态提醒', U('/cou/hongbao/detail', array('id' => $hongbao['number_no']), true, true), $msg); $msg = "幸运星就是你!没想到吧\n\n众筹标题:{$hongbao['remark']}\n\n众筹进度:¥{$hongbao['total_amount']}已成功!\n\n快找发起人要福利吧 :D"; \Wechat\Wxapi::send_wxmsg($user_info['openid'], '众筹状态提醒', U('/cou/hongbao/detail', array('id' => $hongbao['number_no']), true, true), $msg); $log = "发送红包成功, 红包编号:{$hongbao['id']},发送编号:{$hongbao_send['id']}"; f_log($log, ROOT_PATH . 'Runtime/Logs/hongbao.log'); echo $log . "<br/>"; } else { $log = "发送红包失败, 红包编号:{$hongbao['id']},发送编号:{$hongbao_send['id']}"; f_log($log, ROOT_PATH . 'Runtime/Logs/hongbao.log'); echo $log . "<br/>"; print_r($data); } sleep(5); } } die('ok'); }
/** * 合并订单 * @param string $from_order_sn 从订单号 * @param string $to_order_sn 主订单号 * @return 成功返回true,失败返回错误信息 */ function merge_order($from_order_sn, $to_order_sn) { /* 订单号不能为空 */ if (trim($from_order_sn) == '' || trim($to_order_sn) == '') { return $GLOBALS['_LANG']['order_sn_not_null']; } /* 订单号不能相同 */ if ($from_order_sn == $to_order_sn) { return $GLOBALS['_LANG']['two_order_sn_same']; } /* 取得订单信息 */ $from_order = order_info(0, $from_order_sn); $to_order = order_info(0, $to_order_sn); /* 检查订单是否存在 */ if (!$from_order) { return sprintf($GLOBALS['_LANG']['order_not_exist'], $from_order_sn); } elseif (!$to_order) { return sprintf($GLOBALS['_LANG']['order_not_exist'], $to_order_sn); } /* 检查合并的订单是否为普通订单,非普通订单不允许合并 */ if ($from_order['extension_code'] != '' || $to_order['extension_code'] != 0) { return $GLOBALS['_LANG']['merge_invalid_order']; } /* 检查订单状态是否是已确认或未确认、未付款、未发货 */ if ($from_order['order_status'] != OS_UNCONFIRMED && $from_order['order_status'] != OS_CONFIRMED) { return sprintf($GLOBALS['_LANG']['os_not_unconfirmed_or_confirmed'], $from_order_sn); } elseif ($from_order['pay_status'] != PS_UNPAYED) { return sprintf($GLOBALS['_LANG']['ps_not_unpayed'], $from_order_sn); } elseif ($from_order['shipping_status'] != SS_UNSHIPPED) { return sprintf($GLOBALS['_LANG']['ss_not_unshipped'], $from_order_sn); } if ($to_order['order_status'] != OS_UNCONFIRMED && $to_order['order_status'] != OS_CONFIRMED) { return sprintf($GLOBALS['_LANG']['os_not_unconfirmed_or_confirmed'], $to_order_sn); } elseif ($to_order['pay_status'] != PS_UNPAYED) { return sprintf($GLOBALS['_LANG']['ps_not_unpayed'], $to_order_sn); } elseif ($to_order['shipping_status'] != SS_UNSHIPPED) { return sprintf($GLOBALS['_LANG']['ss_not_unshipped'], $to_order_sn); } /* 检查订单用户是否相同 */ if ($from_order['user_id'] != $to_order['user_id']) { return $GLOBALS['_LANG']['order_user_not_same']; } /* 合并订单 */ $order = $to_order; $order['order_id'] = ''; $order['add_time'] = gmtime(); // 合并商品总额 $order['goods_amount'] += $from_order['goods_amount']; // 合并折扣 $order['discount'] += $from_order['discount']; if ($order['shipping_id'] > 0) { // 重新计算配送费用 $weight_price = order_weight_price($to_order['order_id']); $from_weight_price = order_weight_price($from_order['order_id']); $weight_price['weight'] += $from_weight_price['weight']; $weight_price['amount'] += $from_weight_price['amount']; $weight_price['number'] += $from_weight_price['number']; $region_id_list = array($order['country'], $order['province'], $order['city'], $order['district']); $shipping_area = shipping_area_info($order['shipping_id'], $region_id_list); $order['shipping_fee'] = shipping_fee($shipping_area['shipping_code'], unserialize($shipping_area['configure']), $weight_price['weight'], $weight_price['amount'], $weight_price['number']); // 如果保价了,重新计算保价费 if ($order['insure_fee'] > 0) { $order['insure_fee'] = shipping_insure_fee($shipping_area['shipping_code'], $order['goods_amount'], $shipping_area['insure']); } } // 重新计算包装费、贺卡费 if ($order['pack_id'] > 0) { $pack = pack_info($order['pack_id']); $order['pack_fee'] = $pack['free_money'] > $order['goods_amount'] ? $pack['pack_fee'] : 0; } if ($order['card_id'] > 0) { $card = card_info($order['card_id']); $order['card_fee'] = $card['free_money'] > $order['goods_amount'] ? $card['card_fee'] : 0; } // 红包不变,合并积分、余额、已付款金额 $order['integral'] += $from_order['integral']; $order['integral_money'] = value_of_integral($order['integral']); $order['surplus'] += $from_order['surplus']; $order['money_paid'] += $from_order['money_paid']; // 计算应付款金额(不包括支付费用) $order['order_amount'] = $order['goods_amount'] - $order['discount'] + $order['shipping_fee'] + $order['insure_fee'] + $order['pack_fee'] + $order['card_fee'] - $order['bonus'] - $order['integral_money'] - $order['surplus'] - $order['money_paid']; // 重新计算支付费 if ($order['pay_id'] > 0) { // 货到付款手续费 $cod_fee = $shipping_area ? $shipping_area['pay_fee'] : 0; $order['pay_fee'] = pay_fee($order['pay_id'], $order['order_amount'], $cod_fee); // 应付款金额加上支付费 $order['order_amount'] += $order['pay_fee']; } /* 插入订单表 */ do { $order['order_sn'] = get_order_sn(); if ($GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), addslashes_deep($order), 'INSERT')) { break; } else { if ($GLOBALS['db']->errno() != 1062) { die($GLOBALS['db']->errorMsg()); } } } while (true); // 防止订单号重复 /* 订单号 */ $order_id = $GLOBALS['db']->insert_id(); /* 更新订单商品 */ $sql = 'UPDATE ' . $GLOBALS['ecs']->table('order_goods') . " SET order_id = '{$order_id}' " . "WHERE order_id " . db_create_in(array($from_order['order_id'], $to_order['order_id'])); $GLOBALS['db']->query($sql); include_once ROOT_PATH . 'includes/lib_clips.php'; /* 插入支付日志 */ insert_pay_log($order_id, $order['order_amount'], PAY_ORDER); /* 删除原订单 */ $sql = 'DELETE FROM ' . $GLOBALS['ecs']->table('order_info') . " WHERE order_id " . db_create_in(array($from_order['order_id'], $to_order['order_id'])); $GLOBALS['db']->query($sql); /* 删除原订单支付日志 */ $sql = 'DELETE FROM ' . $GLOBALS['ecs']->table('pay_log') . " WHERE order_id " . db_create_in(array($from_order['order_id'], $to_order['order_id'])); $GLOBALS['db']->query($sql); /* 返还 from_order 的红包,因为只使用 to_order 的红包 */ if ($from_order['bonus_id'] > 0) { unuse_bonus($from_order['bonus_id']); } /* 返回成功 */ return true; }
/** * 准备 */ function zhunbei($data) { $json = $this->json; do { // 判断是否有在进行中的游戏 $game = M('zhajinhua')->where("qun_id = '{$this->qun['id']}' AND status in(0) AND update_time>{$this->time}")->find(); if ($this->user['qun_credit'] < 10) { $json['data']['message'] = "@{$this->user['nickname']} 你的游戏金币少于10个,请充值后再进行游戏。充值地址:" . $this->U('/zjh/top', array(), true); break; } if (!$game) { $data = array('qun_id' => $this->qun['id'], 'qun_name' => $this->qun['nickname'], 'number_no' => get_order_sn('ZJH'), 'user_id' => $this->user['id'], 'addtime' => time(), 'update_time' => time()); $res = M('zhajinhua')->add($data); if ($res) { // `zha_id`, `user_id`, `card_data`, `status`, `credit`, `addtime`, `is_win`, `update_time`, `credit_log`, `is_show` $zha = M('zhajinhua')->where(array('number_no' => $data['number_no']))->find(); $data_user = array('zha_id' => $zha['id'], 'user_id' => $this->user['id'], 'addtime' => time(), 'nickname' => $this->user['nickname']); M('zhajinhua_user')->add($data_user); $json['data']['message'] = "@{$this->user['nickname']} 加入游戏,开始请按【开始】. 游戏详情:" . $this->U('/zjh/game/detail', array('id' => $zha['number_no']), true); break; } } $user_list = M('zhajinhua_user')->where(array('qun_id' => $game['id'], 'zha_id' => $game['id']))->select(); if (count($user_list) > 9) { $json['data']['message'] = "@{$this->user['nickname']} 参与人数已满,请下次再玩。请选择【开始】游戏"; break; } // 判断是否加入过 $user = M('zhajinhua_user')->where(array('qun_id' => $game['id'], 'user_id' => $this->user['id']))->find(); $game_user = M('qun_user')->find($game['user_id']); // `zha_id`, `user_id`, `card_data`, `status`, `credit`, `addtime`, `is_win`, `update_time`, `credit_log`, `is_show` if (!$user) { $data_user = array('zha_id' => $game['id'], 'user_id' => $this->user['id'], 'addtime' => time(), 'nickname' => $this->user['nickname']); M('zhajinhua_user')->add($data_user); M('zhajinhua')->where(array('id' => $game['id']))->save(array('update_time' => time())); $json['data']['message'] = "@{$this->user['nickname']} 加入游戏,开始【@{$game_user['nickname']}】请说【开始】.游戏详情:" . $this->U('/zjh/game/detail', array('id' => $game['number_no']), true); } else { $json['data']['message'] = "@{$this->user['nickname']} 已经加入游戏,开始【@{$game_user['nickname']}】请说【开始】.游戏详情:" . $this->U('/zjh/game/detail', array('id' => $game['number_no']), true); } } while (false); return $json; }