|
@@ -0,0 +1,285 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Agent\Lib;
|
|
|
+
|
|
|
+use Dever;
|
|
|
+
|
|
|
+class Order
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * 下单
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function action($mid)
|
|
|
+ {
|
|
|
+ if ($mid > 0) {
|
|
|
+ $member = Dever::db('agent/member')->find($mid);
|
|
|
+ if (!$member) {
|
|
|
+ Dever::alert('代理商不存在');
|
|
|
+ }
|
|
|
+ $mobile = $member['mobile'];
|
|
|
+ $parent_mid = $member['parent_mid'];
|
|
|
+ $data['type'] = $data['type'];
|
|
|
+ $data['name'] = $data['name'];
|
|
|
+ $data['idcard'] = $data['idcard'];
|
|
|
+ $data['idcard_front'] = $data['idcard_front'];
|
|
|
+ $data['idcard_back'] = $data['idcard_back'];
|
|
|
+ } else {
|
|
|
+ $mobile = Dever::input('mobile');
|
|
|
+ $where['mobile'] = Dever::load('agent/lib/member')->checkMobile($mobile);
|
|
|
+ $member = Dever::db('agent/member')->find($where);
|
|
|
+
|
|
|
+ if ($member) {
|
|
|
+ Dever::alert('注册失败,手机号已存在');
|
|
|
+ }
|
|
|
+
|
|
|
+ $member = Dever::db('agent/member')->find();
|
|
|
+ if ($member) {
|
|
|
+ $parent_member = Dever::load('agent/lib/member')->checkCode();
|
|
|
+ $parent_mid = $parent_member['id'];
|
|
|
+ } else {
|
|
|
+ $parent_mid = -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ $data['type'] = Dever::input('type', 1);
|
|
|
+ $data['name'] = Dever::input('name');
|
|
|
+ $data['idcard'] = Dever::input('idcard');
|
|
|
+ $data['idcard_front'] = Dever::input('idcard_front');
|
|
|
+ $data['idcard_back'] = Dever::input('idcard_back');
|
|
|
+ }
|
|
|
+
|
|
|
+ //Dever::load('agent/lib/member')->checkMcode($mobile);
|
|
|
+
|
|
|
+ $data['mobile'] = $mobile;
|
|
|
+ $data['parent_mid'] = $parent_mid;
|
|
|
+
|
|
|
+ if ($data['type'] == 1) {
|
|
|
+ $name = '姓名';
|
|
|
+ $idcard_name = '身份证号';
|
|
|
+
|
|
|
+ if (!$data['idcard_front']) {
|
|
|
+ Dever::alert('身份证正面不能为空');
|
|
|
+ }
|
|
|
+ if (!$data['idcard_back']) {
|
|
|
+ Dever::alert('身份证反面不能为空');
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ $name = '公司名称';
|
|
|
+ $idcard_name = '营业执照号码';
|
|
|
+
|
|
|
+ if (!$data['idcard_front']) {
|
|
|
+ Dever::alert('营业执照不能为空');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!$data['name']) {
|
|
|
+ Dever::alert($name . '不能为空');
|
|
|
+ }
|
|
|
+ if (!$data['idcard']) {
|
|
|
+ Dever::alert($idcard_name . '不能为空');
|
|
|
+ }
|
|
|
+
|
|
|
+ $data += $this->getPrice();
|
|
|
+
|
|
|
+ $data['sign'] = Dever::input('sign');
|
|
|
+ if (!$data['sign']) {
|
|
|
+ Dever::alert('手写签名不能为空');
|
|
|
+ }
|
|
|
+
|
|
|
+ $data['order_num'] = $this->getOrderId();
|
|
|
+
|
|
|
+ # 付款信息
|
|
|
+ $data['pay_type'] = Dever::input('pay_type', 1);
|
|
|
+
|
|
|
+ if ($data['pay_type'] == 3) {
|
|
|
+ $data['bank_id'] = Dever::input('bank_id');
|
|
|
+ if (!$data['bank_id']) {
|
|
|
+ Dever::alert('请选择银行');
|
|
|
+ }
|
|
|
+ $data['bank_card'] = Dever::input('bank_card');
|
|
|
+ if (!$data['bank_card']) {
|
|
|
+ Dever::alert('请输入银行卡号');
|
|
|
+ }
|
|
|
+ } elseif ($data['pay_type'] == 2) {
|
|
|
+ # 汇款
|
|
|
+ $data['pay_pic'] = Dever::input('pay_pic');
|
|
|
+ if (!$data['pay_pic']) {
|
|
|
+ Dever::alert('请上传打款凭证');
|
|
|
+ }
|
|
|
+ } elseif ($data['pay_type'] == 1) {
|
|
|
+ Dever::alert('暂时不支持在线支付');
|
|
|
+ $data['openid'] = Dever::input('openid');
|
|
|
+ if (!$data['openid']) {
|
|
|
+ Dever::alert('请先授权');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Dever::alert('付款方式不正确');
|
|
|
+ }
|
|
|
+
|
|
|
+ $where['mobile'] = $data['mobile'];
|
|
|
+ $where['role'] = $data['role'];
|
|
|
+ $where['area'] = $data['area'];
|
|
|
+
|
|
|
+ $info = Dever::db('agent/order')->find($where);
|
|
|
+ if ($info && $info['status'] != 5) {
|
|
|
+ Dever::alert('请勿重复提交');
|
|
|
+ }
|
|
|
+
|
|
|
+ $data['id'] = Dever::db('agent/order')->insert($data);
|
|
|
+
|
|
|
+ if ($data['id']) {
|
|
|
+ $result = array();
|
|
|
+ $result['msg'] = '您的申请已经提交完成,请耐心等待,我们将在工作日8小时内为您通过审核,非常感谢。';
|
|
|
+ if ($data['pay_type'] == 3) {
|
|
|
+ $result['bank_msg'] = '您需要使用银行卡:所有人('.$data['name'].'),账号('.$data['bank_card'].'),转账至如下账户('.$data['price_str'].'):';
|
|
|
+ $config = Dever::db('setting/base')->find();
|
|
|
+ $result['bank_user'] = $config['bank_user'];
|
|
|
+ $result['bank_name'] = $config['bank_name'];
|
|
|
+ $result['bank_card'] = $config['bank_card'];
|
|
|
+ } elseif ($data['pay_type'] == 1) {
|
|
|
+ # 在线支付 生成支付信息
|
|
|
+ $result['pay'] = $this->pay($data);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ } else {
|
|
|
+ Dever::alert('登录失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发起在线支付
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function pay($data)
|
|
|
+ {
|
|
|
+ $param = array
|
|
|
+ (
|
|
|
+ 'project_id' => 2,
|
|
|
+ 'channel_id' => 1,
|
|
|
+ 'system_source' => 5,
|
|
|
+ 'account_id' => 7,
|
|
|
+ 'uid' => $data['id'],
|
|
|
+ 'name' => $data['name'],
|
|
|
+ 'openid' => $data['openid'],
|
|
|
+ 'cash' => $data['price'],
|
|
|
+ 'product_id' => $data['id'],
|
|
|
+ 'order_id' => $data['order_num'],
|
|
|
+ 'refer' => Dever::input('refer'),
|
|
|
+ );
|
|
|
+
|
|
|
+ $receipt = Dever::input('receipt');
|
|
|
+ if ($receipt) {
|
|
|
+ $param['receipt'] = $receipt;
|
|
|
+ }
|
|
|
+
|
|
|
+ $result = Dever::load('pay/api.pay', $param);
|
|
|
+ $result['order_num'] = $data['order_num'];
|
|
|
+ $result['order_id'] = $data['id'];
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成订单号
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function getOrderId()
|
|
|
+ {
|
|
|
+ $where['order_num'] = Dever::order('D');
|
|
|
+ $state = Dever::db('agent/order')->one($where);
|
|
|
+ if (!$state) {
|
|
|
+ return $where['order_num'];
|
|
|
+ } else {
|
|
|
+ return $this->getOrderId();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ # 支付成功回调 安全加密 设置token
|
|
|
+ public function success_secure_api_token()
|
|
|
+ {
|
|
|
+ $project_id = Dever::input('pay_project_id');
|
|
|
+ $info = Dever::db('pay/project')->one($project_id);
|
|
|
+ if ($info) {
|
|
|
+ return $info['key'];
|
|
|
+ }
|
|
|
+ return 'agent_buy_dever_2020';
|
|
|
+ }
|
|
|
+
|
|
|
+ # 支付成功回调 安全加密
|
|
|
+ public function success_secure_api($param = array())
|
|
|
+ {
|
|
|
+ $this->success($param);
|
|
|
+ }
|
|
|
+
|
|
|
+ # 支付成功回调
|
|
|
+ public function success($param = array())
|
|
|
+ {
|
|
|
+ $send = $param ? $param : Dever::preInput('pay_');
|
|
|
+ $product_id = $send['pay_product_id'];
|
|
|
+ $order_id = $send['pay_order_id'];
|
|
|
+ $status = $send['pay_status'];
|
|
|
+ $cash = $send['pay_cash'];
|
|
|
+ $msg = $send['pay_msg'];
|
|
|
+
|
|
|
+ $order = Dever::db('shop/buy_order')->one(array('id' => $product_id, 'time' => time()));
|
|
|
+ if ($order && $order['status'] == 1 && $status == 2) {
|
|
|
+ $update['status'] = 2;
|
|
|
+ $update['where_id'] = $order['id'];
|
|
|
+ Dever::db('shop/buy_order')->update($update);
|
|
|
+
|
|
|
+ # 生成结算单
|
|
|
+ Dever::load('cash/lib/order')->up($order, 1, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ return 'ok';
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取支付金额
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function getPrice()
|
|
|
+ {
|
|
|
+ $data['role'] = Dever::input('role');
|
|
|
+ if (!$data['role']) {
|
|
|
+ Dever::alert('代理类型不能为空');
|
|
|
+ }
|
|
|
+ $role = Dever::db('setting/role')->find($data['role']);
|
|
|
+ if (!$role) {
|
|
|
+ Dever::alert('代理类型不正确');
|
|
|
+ }
|
|
|
+ $data['area'] = Dever::input('area');
|
|
|
+ if (!$data['area']) {
|
|
|
+ Dever::alert('代理区域不能为空');
|
|
|
+ }
|
|
|
+
|
|
|
+ # 计算支付金额
|
|
|
+ if ($role['type'] == 1) {
|
|
|
+ $data['price'] = $role['price'];
|
|
|
+ } elseif ($role['type'] == 2) {
|
|
|
+ $data['price'] = Dever::load('area/api')->getPrice($role['area'], $data['area']);
|
|
|
+ if ($data['price'] <= 0) {
|
|
|
+ Dever::alert('代理区域的代理价格为空,请联系客服');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Dever::alert('代理类型不正确');
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($data['price'] >= 10000) {
|
|
|
+ $data['price_str'] = ($data['price']/10000) . '万元';
|
|
|
+ } else {
|
|
|
+ $data['price_str'] = $data['price'] . '元';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (is_int($data['price'])) {
|
|
|
+ $data['price_str'] .= '整';
|
|
|
+ }
|
|
|
+
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+}
|