rabin 3 years ago
parent
commit
3dc01d9201
4 changed files with 512 additions and 179 deletions
  1. 48 1
      app/shop/database/sign.php
  2. 152 0
      app/shop/database/sign_log.php
  3. 11 0
      app/shop/database/sign_pic.php
  4. 301 178
      app/shop/lib/Sign.php

+ 48 - 1
app/shop/database/sign.php

@@ -12,10 +12,26 @@ $mer_type = array
 );
 $id = Dever::input('search_option_shop_id');
 $shop = array();
+$desc = '';
 if ($id) {
 	$shop = Dever::db('shop/info')->one($id);
+    $desc = Dever::timeline('签约状态', array('test', 'ss'));
 }
 
+$step = array
+(
+    -1 => '待提交资料',
+    1 => '入网:资料提交',//3.2
+    2 => '入网:对公账户打款',//3.7
+    3 => '入网:对公账户验证',//3.6
+    4 => '入网:前台签约',//3.3
+    5 => '入网:签约成功',//3.4
+
+    11 => '变更:资料提交',//3.9
+    14 => '变更:前台签约',//3.10
+    15 => '变更:签约成功',//3.11
+);
+
 return array
 (
     # 表名
@@ -40,6 +56,16 @@ return array
             'order'     => 'desc',
         ),
 
+        'mid'      => array
+        (
+            'type'      => 'varchar-50',
+            'name'      => '分账商户号',
+            'default'   => '',
+            'desc'      => '分账商户号',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
         'ums_reg_id'      => array
         (
             'type'      => 'varchar-50',
@@ -50,6 +76,27 @@ return array
             // 'update'    => 'text',
         ),
 
+        'url'      => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '签约前台页面地址',
+            'default'   => '',
+            'desc'      => '签约前台页面地址',
+            'match'     => 'option',
+            // 'update'    => 'text',
+        ),
+
+        'step'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '当前要进行的步骤',
+            'default'   => '-1',
+            'desc'      => '当前步骤',
+            'match'     => 'option',
+            'update'    => 'text',
+            'option'    => $step,
+        ),
+
         'shop_id'       => array
         (
             'type'      => 'int-11',
@@ -414,7 +461,7 @@ return array
     ),
 	'manage' => array
     (
-        'desc' => Dever::timeline('签约状态', array('test', 'ss')),
+        'desc' => $desc,
         'tab' => array('门店信息', '法人信息', '企业信息', '银行信息'),
     ),
 );

+ 152 - 0
app/shop/database/sign_log.php

@@ -0,0 +1,152 @@
+<?php
+$acct_type = array
+(
+    -1 => '个人账户',
+    1 => '公司账户',
+);
+$mer_type = array
+(
+    2 => '个人工商户',
+    1 => '企业商户',
+    //3 => '小微商户',
+);
+$id = Dever::input('search_option_shop_id');
+$shop = array();
+if ($id) {
+	$shop = Dever::db('shop/info')->one($id);
+}
+
+$step = array
+(
+    -1 => '待提交资料',
+    1 => '入网:资料提交',//3.2
+    2 => '入网:对公账户打款',//3.7
+    3 => '入网:对公账户验证',//3.6
+    4 => '入网:前台签约',//3.3
+    5 => '入网:签约成功',//3.4
+
+    11 => '变更:资料提交',//3.9
+    14 => '变更:前台签约',//3.10
+    15 => '变更:签约成功',//3.11
+);
+
+return array
+(
+    # 表名
+    'name' => 'sign_log',
+    # 显示给用户看的名称
+    'lang' => '自主签约日志',
+    # 后台菜单排序
+    'order' => 99,
+    'menu' => false,
+    # 数据结构
+    'struct' => array
+    (
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            //'list'      => true,
+            'order'     => 'desc',
+        ),
+
+        'shop_id'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '店铺id',
+            'default'   => '0',
+            'desc'      => '请选择用户',
+            'match'     => 'is_numeric',
+            'update'    => 'hidden',
+        ),
+
+        'sign_id'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '签约id',
+            'default'   => '0',
+            'desc'      => '签约id',
+            'match'     => 'is_numeric',
+            'update'    => 'hidden',
+        ),
+
+        'step'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '当前步骤',
+            'default'   => '',
+            'desc'      => '当前步骤',
+            'match'     => 'option',
+            'update'    => 'text',
+            'option'    => $step,
+        ),
+
+        'desc'     => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '日志描述',
+            'default'   => '',
+            'desc'      => '日志描述',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
+        'request_seq'     => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '请求流水号',
+            'default'   => '',
+            'desc'      => '请求流水号',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
+        'request'     => array
+        (
+            'type'      => 'text-255',
+            'name'      => '请求数据',
+            'default'   => '',
+            'desc'      => '请求数据',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
+        'response'     => array
+        (
+            'type'      => 'text-255',
+            'name'      => '响应数据',
+            'default'   => '',
+            'desc'      => '响应数据',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '录入时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            'insert'    => true,
+            //'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+	'manage' => array
+    (
+        
+    ),
+);

+ 11 - 0
app/shop/database/sign_pic.php

@@ -47,6 +47,17 @@ return array
             //'list'      => '{uid} > 0 ? Dever::load("passport/user-find#username", {uid}) : "匿名用户"',
         ),
 
+        'key'      => array
+        (
+            'type'      => 'varchar-32',
+            'name'      => '图片key',
+            'default'   => '',
+            'desc'      => '图片key',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+        ),
 
         'document_name'      => array
         (

+ 301 - 178
app/shop/lib/Sign.php

@@ -6,90 +6,72 @@ Class Sign {
 	static $key = "udik876ehjde32dU61edsxsf";
 	static $accesser_id = 'zsma';
 	static $sign_type = 'SHA-256';
-    //加密
-	public function encrypt_api($data='', $key='', $use3des = true)
-    {
-    	$key = self::$key;
-    	$res = bin2hex(openssl_encrypt($data, 'DES-EDE3', $key, OPENSSL_RAW_DATA));
-		return $res;
-    }
+	//private $product_id = array('0','1','in1','in2','in3','in4');
+	private $product_id = array('0');
+	private $document_type = array
+	(
+        ['document_type' => '0001','document_name' => '身份证正面', 'key' => 'idcard_front'],
+        ['document_type' => '0011','document_name' => '身份证反面', 'key' => 'idcard_back'],
+        ['document_type' => '0002','document_name' => '营业执照', 'key' => 'license'],
+        ['document_type' => '0003','document_name' => '税务登记证', 'key' => 'tax'],
+        ['document_type' => '0005','document_name' => '门头照', 'key' => 'door'],
+        ['document_type' => '0007','document_name' => '手持身份证自拍照', 'key' => 'hand_idcard'],
+        ['document_type' => '0006','document_name' => '开户许可证', 'key' => 'open'],
+        ['document_type' => '0025','document_name' => '银行卡正面照', 'key' => 'bank_fount'],
+        ['document_type' => '0026','document_name' => '银行卡反面照', 'key' => 'bank_back'],
+        ['document_type' => '0015','document_name' => '室内照片', 'key' => 'house_pic'],
+    );
 
-    public function decrypt_api($data='', $key='', $use3des = true)
+    # 统一处理接口
+    public function handle($shop_id)
     {
-    	$key = self::$key;
-    	$data = '36df3aff8ecac519ca56f5d1141948211d85248a2886d95207f7af1e71c637a810bd349bfa9d009e6cf19a6a4fac559faf155026f397ea02c52b466c41ae5fb0a9a1af13ba2951f2';
-    	return openssl_decrypt(pack('H*',$data), 'DES-EDE3', $key, OPENSSL_RAW_DATA);
-    }
-
-    public function common($service,$data,$request_seq=false){
-    	$accesser_id = self::$accesser_id;
-    	$sign_type = self::$sign_type;
-    	$param = $data;
-    	$param['service'] = $service;
-    	$param['sign_type'] = $sign_type;
-    	$param['accesser_id'] = $accesser_id;
-    	$param['request_date'] = date('YmdHis');
-    	if($request_seq){
-    		$param['request_seq'] = $request_seq;
-    	}else{
-    		$param['request_seq'] = date('YmdHis');#mt_rand (10,100);#
-    	}
-    	$sign_data = json_encode($param, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);;
-    	$send['json_data'] = $this->encrypt_api($sign_data);
-    	$send['sign_data'] = hash('sha256', $sign_data);
-    	
-    	$send['accesser_id'] = $accesser_id;
-    	$url = 'https://selfapply-test.chinaums.com/self-contract-nmrs/interface/autoReg/';
-    	if ($service == 'agreement_sign') {
-    		$url . '?' . http_build_query($send);
-    		$result = Dever::curl($url, $send, 'get');
-    	} else {
-    		$result = Dever::curl($url, $send, 'post');
+    	$shop = Dever::db('shop/info')->find($shop_id);
+    	$sign = Dever::db('shop/sign')->find(array('shop_id'=>$shop_id));
+    	if (!$sign) {
+    		Dever::alert('档案资料未上传');
     	}
-    	return $result;
-    }
-    #查询支行
-    public function bank_list($areaCode,$key){
-    	$service = 'branch_bank_list';
-    	$data['areaCode'] = $areaCode;
-    	$data['key'] = $key;
-    	$url = $this->common($service,$data);
-    	return $url;
-    }
-    #生成图片3.1
-    public function pic($pic){
-    	$service = 'pic_upload';
-    	if($pic){
-    		$pic_base64 = file_get_contents($pic);
-    		$two = explode('?',$pic);
-    		if($two){
-    			$one = pathinfo($two[0]);
-    		}else{
-    			$one = pathinfo($pic);
-    		}
-	    	
-	    	if($pic_base64){
-		    	$data['pic_base64'] = "data:image/".$one['extension'].";base64,".base64_encode($pic_base64);
-		    	$url = $this->common($service,$data);
-		    	return $url;
-	    	}
+    	switch($sign['step']) {
+    		case -1;
+    			# 提交资料
+    			return $this->up($shop, $sign);
+    			break;
+    		case 1;
+    		case 6;
+    			if ($sign['bank_acct_type'] == 1) {
+    				# 对公打款
+					return $this->account($sign);
+				} else {
+					# 签约
+					return $this->agreement($sign);
+				}
+				break;
+    		case 2;
+    			# 打款验证
+    			return $this->account_check($sign);
+    			break;
+    		case 4;
+    			# 验证签约
+    			return $this->check($sign);
+    			break;
+    		case 5;
+    			# 签约成功,变更签约?
+    			return true;
+    			return $this->up($sign);
+    			break;
     	}
+    	return 'ok';
     }
-    // public function shop_api(){
-    // 	$data = Dever::db('shop/info')->state();
-    // }
+
     #3.2  详细采集档案资料上传接口
-    public function complex_api($shop_id){
-    	$shop_id = 59;
-    	$shop = Dever::db('shop/info')->find($shop_id);
-    	$sign = Dever::db('shop/sign')->find(array('shop_id'=>$shop_id));
+    private function up($shop, $sign)
+    {
     	$service = 'complex_upload';
-    	$data['accesser_user_id'] = $shop_id;#店铺id
+    	$data['accesser_user_id'] = $shop['id'];
     	if ($sign['reg_mer_type'] == 1) {
     		$sign['reg_mer_type'] = '00';
-    	} elseif ($sign['reg_mer_type'] ==2) {
+    	} elseif ($sign['reg_mer_type'] == 2) {
     		$sign['reg_mer_type'] = '01';
-    	} elseif ($sign['reg_mer_type'] ==3) {
+    	} elseif ($sign['reg_mer_type'] == 3) {
     		$sign['reg_mer_type'] = '02';
     	}
     	$data['reg_mer_type'] = $sign['reg_mer_type'];#注册类型
@@ -98,10 +80,11 @@ Class Sign {
     	$data['legal_mobile'] = $sign['mobile'];#法人手机号
     	$data['legal_card_deadline'] = date('Y-m-d',$sign['card_deadline']);#证件截止代表日期
     	$data['shop_name'] = $shop['name'];#店铺名称
-    	if($sign['bank_acct_type'] == -1){
-    		$sign['bank_acct_type'] = '0';
+    	if ($sign['bank_acct_type'] == -1) {
+    		$data['bank_acct_type'] = 0;
+    	} else {
+    		$data['bank_acct_type'] = 1;
     	}
-    	$data['bank_acct_type'] = $sign['bank_acct_type'];#账户类型
 
     	$data['bank_acct_no'] = $sign['bank_acct_no'];#开户行账号
     	if ($sing['acct_type'] == 1) {
@@ -109,19 +92,19 @@ Class Sign {
     	} else {
     		$data['bank_acct_name'] = $sign['name'];#开户账号名称
     	}
-    	
-    	$data['mccCode'] = '5499';
-    	$area = explode(',',$shop['area']);
+    	$data['mccCode'] = $sign['mccCode'];
+
+    	$area = explode(',', $shop['area']);
     	$data['shop_province_id'] = $area[0]/10000;
     	$data['shop_city_id'] = $area[1]/100;
     	$data['shop_country_id'] = $area[2];
     	$sign_area = explode(',',$shop['area']);
     	$data['shop_lic'] = $shop['license_number'];#营业执照号
-    	if(isset($sign['bank_no']) && $sign['bank_no']){
+    	if (isset($sign['bank_no']) && $sign['bank_no']) {
     		$data['bank_no'] = $sign['bank_no'];
     		$data['shop_addr_ext'] = $sign['shop_addr_ext'];
-    	}else{
-    		$bank = (array)json_decode($this->bank_list($sign_area[0]/10000,$sign['bank_acct_noname']));
+    	} else {
+    		$bank = Dever::json_decode($this->bank_list($sign_area[0]/10000,$sign['bank_acct_noname']));
 	    	if($bank && isset($bank['branchBankList']) && $bank['branchBankList']){
 	    		foreach($bank['branchBankList'] as $k =>$v){
 		    		$bank['branchBankList'] = (array)$v;
@@ -133,130 +116,270 @@ Class Sign {
 		    	$data['bank_no'] = $bank['branchBankList']['code'];
 		    	$data['shop_addr_ext'] = $bank['branchBankList']['bankBranchName'];
 	    	} else {
-	    		Dever::alert('开户行行号不存在');
+	    		return $this->log(1, $sign, '开户行行号不存在');
 	    	}
     	}
     	
     	if ($sign['reg_mer_type'] == '00') {
     		if ($sign['bank_acct_type'] != '1') {
-    			Dever::alert('账户类型不正确');
+    			return $this->log(1, $sign, '账户类型不正确');
     		}
 
     	} elseif ($sign['reg_mer_type'] == '01') {
     		if ($sign['bank_acct_type'] != '0') {
-    			Dever::alert('账户类型不正确');
+    			return $this->log(1, $sign, '账户类型不正确');
     		}
     	}
     	if ($sign['legalmanHomeAddr']) { 
-    			$data['legalmanHomeAddr'] = $sign['legalmanHomeAddr'];
-    		} 
-    	
-    	$sign_pic = Dever::db('shop/sign_pic')->find(array('shop_id'=>$shop_id));
-    	if (!$sign_pic) {
-    		$document_type = array(
-
-	            ['document_type'=>'0001','document_name'=>'身份证正面',$this->pic($sign['idcard_front'])],
-
-	            ['document_type'=>'0011','document_name'=>'身份证反面',$this->pic($sign['idcard_back'])],
-
-	            ['document_type'=>'0002','document_name'=>'营业执照',$this->pic($shop['license'])],
-
-	            ['document_type'=>'0003','document_name'=>'税务登记证',$this->pic($sign['tax'])],
-
-	            ['document_type'=>'0005','document_name'=>'门头照',$this->pic($sign['door'])],
-
-	            ['document_type'=>'0007','document_name'=>'手持身份证自拍照',$this->pic($sign['hand_idcard'])],
-
-	            ['document_type'=>'0006','document_name'=>'开户许可证',$this->pic($sign['open'])],
-
-	            ['document_type'=>'0025','document_name'=>'银行卡正面照',$this->pic($sign['bank_fount'])],
+			$data['legalmanHomeAddr'] = $sign['legalmanHomeAddr'];
+		} 
+    	$document_type = $this->document_type;
 
-	            ['document_type'=>'0026','document_name'=>'银行卡反面照',$this->pic($sign['bank_fount'])],
-
-	            ['document_type'=>'0015','document_name'=>'室内照片',$this->pic($sign['house_pic'])],
-	        );
-	        foreach($document_type as $k => $v){
-        		$insert['shop_id'] = $shop_id;
-        		$insert['document_type'] = $v['document_type'];
-        		$insert['document_name'] = $v['document_name'];
-        		$insert['path'] = $v[0];
-        		if($v[0]){
-        			Dever::db('shop/sign_pic')->insert($insert);
+        foreach ($document_type as $k => $v) {
+        	if (isset($sign[$v['key']]) && $sign[$v['key']]) {
+        		$sign_pic = Dever::db('shop/sign_pic')->find(array('shop_id' => $shop['id'], 'key' => $v['key']));
+        		if (!$sign_pic) {
+        			$pic = $this->pic($sign[$v['key']]);
+        			if ($pic && isset($pic['path']) && $pic['path']) {
+        				$insert = array();
+        				$insert['shop_id'] = $shop['id'];
+		        		$insert['document_type'] = $v['document_type'];
+		        		$insert['document_name'] = $v['document_name'];
+		        		$insert['key'] = $v['key'];
+		        		$insert['path'] = Dever::json_encode($pic);
+		        		Dever::db('shop/sign_pic')->insert($insert);
+		        		$data['pic_list'][] = array('document_name' => $v['document_name'], 'document_type' => $v['document_type'] , 'file_path'=> $pic['file_path'], 'file_size'=>$pic['file_size']);
+        			}
+        		} else {
+        			$pic = Dever::json_decode($sign_pic['path']);
+        			$data['pic_list'][] = array('document_name' => $sign_pic['document_name'], 'document_type' => $sign_pic['document_type'] , 'file_path'=> $pic['file_path'], 'file_size'=>$pic['file_size']);
         		}
         	}
-    	}
-    	
-        $data['pic_list'] = array();
-        $sign_pic = Dever::db('shop/sign_pic')->state(array('shop_id'=>$shop_id));
-        foreach($sign_pic as $k => $v){
-        	if($v['path']){
-        		$path = (array)json_decode($v['path']);
-        		$data['pic_list'][$k] = array('document_name'=>$v['document_name'],'document_type'=>$v['document_type'],'file_path'=>$path['file_path'],'file_size'=>$path['file_size']);
-        	}
         }
-        $data['pic_list'] = array_values($data['pic_list']);
-    	// $ids = array('0','1','in1','in2','in3','in4');
-    	$ids = array('0');
+    	$ids = $this->product_id;
     	$data['product'] = array();
-    	foreach($ids as $k=>$v){
-    		$data['product'][$k] = ['product_id'=>$v]; 
+    	foreach ($ids as $k => $v) {
+    		$data['product'][$k] = ['product_id' => $v]; 
     	}
-    	// print_R($data);
-    	$url = $this->common($service,$data);
-    	if($url){
-    		$res = (array)json_decode($url);
-    		if($res && isset($res['ums_reg_id']) && $res['ums_reg_id']){
-    			$where['where_id'] = $sign['id'];
-    			$where['ums_reg_id'] = $res['ums_reg_id'];
-    			Dever::db('shop/sign')->update($where);
-    		}
+    	$result = $this->get($service, $data);
+    	if ($result && $result['code'] == 1 && isset($result['data']['ums_reg_id']) && $result['data']['ums_reg_id']) {
+    		$update = array();
+			$update['where_id'] = $sign['id'];
+			$sign['ums_reg_id'] = $update['ums_reg_id'] = $result['data']['ums_reg_id'];
+			Dever::db('shop/sign')->update($update);
+			$this->log(1, $sign, '资料上传成功', $data, $result['data'], $result['request_seq']);
+			if ($data['bank_acct_type'] == 1) {
+				return $this->account($sign);
+			} else {
+				return $this->agreement($sign);
+			}
+    	} else {
+    		$this->log(1, $sign, $result['msg'], $data, $result['data'], $result['request_seq']);
     	}
-    	// print_R($url);die;
-    	return 'ok';
+    	return $result;
     }
-    #3.3  前台签约接口
-    public function agreement_sign_api($shop){
-    	$sign = Dever::db('shop/sign')->find(array('shop_id'=>$shop_id));
+
+    # 3.7  发起对公账户验证交易接口
+    public function account($sign)
+    {
+    	$step = 2;
+    	$service = 'request_account_verify';
+    	$data['ums_reg_id'] = $sign['ums_reg_id'];
+    	$data['company_account'] = $sign['bank_acct_no'];
+    	$result = $this->get($service, $data);
+    	if ($result && $result['code'] == 1 && isset($result['data']['request_seq']) && $result['data']['request_seq']) {
+    		$update = array();
+			$update['where_id'] = $sign['id'];
+			$update['step'] = $step;
+			$update['clear'] = true;
+    		Dever::db('shop/sign')->update($update);
+			$this->log($update['step'], $sign, '公户打款成功', $data, $result['data'], $result['request_seq']);
+    	} else {
+    		$this->log($step, $sign, $result['msg'], $data, $result['data'], $result['request_seq']);
+    	}
+    	return $result;
+    }
+
+    # 3.6  对公账户认证接口
+    public function account_check($sign)
+    {
+    	$step = 3;
+    	$trans_amt = Dever::input('num');
+    	$service = 'company_account_verify';
+    	$data['ums_reg_id'] = $sign['ums_reg_id'];
+    	$data['company_account'] = $sign['bank_acct_no'];
+    	$data['trans_amt'] = $trans_amt;
+    	$result = $this->get($service, $data, $sign['ums_reg_id']);
+    	if ($result && $result['code'] == 1 && isset($result['data']['request_seq']) && $result['data']['request_seq']) {
+    		$update = array();
+			$update['where_id'] = $sign['id'];
+			$update['step'] = $step;
+			$update['clear'] = true;
+    		Dever::db('shop/sign')->update($update);
+			$this->log($update['step'], $sign, '公户对账成功', $data, $result['data'], $result['request_seq']);
+			return $this->agreement($sign);
+    	} else {
+    		$this->log($step, $sign, $result['msg'], $data, $result['data'], $result['request_seq']);
+    	}
+    	return $result;
+    }
+
+    # 3.3  前台签约接口
+    public function agreement($sign)
+    {
+    	$step = 4;
     	$service = 'agreement_sign';
     	$data['ums_reg_id'] = $sign['ums_reg_id'];
     	$data['pcOrH5'] = 'H5';
-    	$url = $this->common($service,$data);
-    	return $url;
+    	$result = $this->get($service, $data);
+    	if ($result && $result['code'] == 1 && isset($result['data']['url']) && $result['data']['url']) {
+    		$update = array();
+			$update['where_id'] = $sign['id'];
+			$update['step'] = $step;
+			$update['clear'] = true;
+    		Dever::db('shop/sign')->update($update);
+			$this->log($update['step'], $sign, '获取前台签约合同链接', $data, $result['data'], $result['request_seq']);
+    	} else {
+    		$this->log($step, $sign, $result['msg'], $data, $result['data'], $result['request_seq']);
+    	}
+    	return $result;
     }
 
-    #3.4  入网状态查询接口
-    public function apply_api($shop_id){
-    	$sign = Dever::db('shop/sign')->find(array('shop_id'=>$shop_id));
+    # 3.4  入网状态查询接口
+    public function check($sign)
+    {
+    	$step = 5;
     	$service = 'apply_qry';
     	$data['ums_reg_id'] = $sign['ums_reg_id'];
-    	$url = $this->common($service,$data,$sign['ums_reg_id']);
-    	return $url;
+    	$result = $this->get($service, $data, $sign['ums_reg_id']);
+    	if ($result && $result['code'] == 1 && isset($result['data']['apply_status']) && $result['data']['apply_status'] == '03') {
+    		$update = array();
+			$update['where_id'] = $sign['id'];
+			$update['step'] = $step;
+			$update['clear'] = true;
+    		Dever::db('shop/sign')->update($update);
+			$this->log($update['step'], $sign, '签约成功', $data, $result['data'], $result['request_seq']);
+    	} else {
+    		$this->log($step, $sign, $result['data']['apply_status_msg'], $data, $result['data'], $result['request_seq']);
+    	}
+    	return $result;
     }
-    #3.6  对公账户认证接口
-    public function company_account_verify_api(){
-    	$shop_id = Dever::input('shop_id');
-    	$trans_amt = Dever::input('trans_amt');
-    	$sign = Dever::db('shop/sign')->find(array('shop_id'=>$shop_id));
-    	if ($sign['bank_acct_type'] == 1) {
-    		$service = 'company_account_verify';
-	    	$data['ums_reg_id'] = $sign['ums_reg_id'];
-	    	$data['company_account'] = $sign['bank_acct_no'];
-	    	$data['trans_amt'] = $trans_amt;
-	    	$url = $this->common($service,$data,$sign['ums_reg_id']);
-	    	return $url;
+
+	private function encrypt($data='', $key='', $use3des = true)
+    {
+    	$key = self::$key;
+    	$res = bin2hex(openssl_encrypt($data, 'DES-EDE3', $key, OPENSSL_RAW_DATA));
+		return $res;
+    }
+
+    private function decrypt($data='', $key='', $use3des = true)
+    {
+    	$key = self::$key;
+    	return openssl_decrypt(pack('H*',$data), 'DES-EDE3', $key, OPENSSL_RAW_DATA);
+    }
+
+    private function get($service, $data, $request_seq = false)
+    {
+    	$accesser_id = self::$accesser_id;
+    	$sign_type = self::$sign_type;
+    	$param = $data;
+    	$param['service'] = $service;
+    	$param['sign_type'] = $sign_type;
+    	$param['accesser_id'] = $accesser_id;
+    	$param['request_date'] = date('YmdHis');
+    	$param['request_seq'] = Dever::order();
+    	$sign_data = json_encode($param, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);
+    	$send['json_data'] = $this->encrypt($sign_data);
+    	$send['sign_data'] = hash('sha256', $sign_data);
+    	$send['accesser_id'] = $accesser_id;
+    	$url = 'https://selfapply-test.chinaums.com/self-contract-nmrs/interface/autoReg/';
+
+    	$result = array();
+    	$result['request_seq'] = $param['request_seq'];
+    	if ($service == 'agreement_sign') {
+    		$url . '?' . http_build_query($send);
+    		$response = Dever::curl($url, $send, 'get');
+    	} else {
+    		$response = Dever::curl($url, $send, 'post');
+    	}
+    	$result['code'] = 2;
+		$result['msg'] = '请求失败';
+		$result['data'] = $response;
+    	if ($response) {
+    		$response = Dever::json_decode($response);
+    		if (isset($response['res_code']) && $response['res_code'] == '0000') {
+    			$result['code'] = 1;
+    			$result['msg'] = '请求成功';
+    			$result['data'] = $response;
+    		} elseif (isset($result['res_msg']) && $result['res_msg']) {
+    			$result['code'] = 2;
+    			$result['msg'] = $result['res_msg'];
+    			$result['data'] = $response;
+    		} elseif (isset($result['apply_status_msg']) && $result['apply_status_msg']) {
+    			$result['code'] = 2;
+    			$result['msg'] = $result['apply_status_msg'];
+    			$result['data'] = $response;
+    		}
     	}
     	
+		return $result;
+    }
+
+    private function pic($pic)
+    {
+    	$service = 'pic_upload';
+    	if ($pic) {
+    		$pic_base64 = file_get_contents($pic);
+
+	    	if ($pic_base64) {
+	    		$temp = explode('?', $pic);
+	    		if ($temp) {
+	    			$one = pathinfo($temp[0]);
+	    		} else {
+	    			$one = pathinfo($pic);
+	    		}
+		    	$data['pic_base64'] = "data:image/".$one['extension'].";base64,".base64_encode($pic_base64);
+		    	$result = $this->get($service,$data);
+		    	return $result;
+	    	}
+    	}
+    	return false;
+    }
+
+    # 查询支行
+    private function bank_list($areaCode, $key)
+    {
+    	$service = 'branch_bank_list';
+    	$data['areaCode'] = $areaCode;
+    	$data['key'] = $key;
+    	$result = $this->get($service,$data);
+    	return $result;
+    }
+
+    # 记录日志
+    private function log($step, $sign, $msg, $request = array(), $response = array(), $request_seq = '')
+    {
+    	if (!$sign) {
+    		return $msg;
+    	}
+    	$data['step'] = $step;
+    	$data['shop_id'] = $sign['shop_id'];
+    	$data['sign_id'] = $sign['id'];
+    	$data['desc'] = $msg;
+    	if ($request_seq) {
+    		$data['request_seq'] = $request_seq;
+    	}
+    	if ($request) {
+    		$data['request'] = Dever::json_encode($request);
+    	}
+    	if ($response) {
+    		if (is_array($response)) {
+    			$response = Dever::json_encode($response);
+    		}
+    		$data['response'] = $response;
+    	}
+    	
+    	Dever::db('shop/sign_log')->insert($data);
+    	return $msg;
     }
-    #3.7  发起对公账户验证交易接口
-    public function request_account_verify_api($shop_id){
-    	$sign = Dever::db('shop/sign')->find(array('shop_id'=>$shop_id));
-    	$service = 'request_account_verify';
-    	if ($sign['bank_acct_type'] == 1) {
-	    	$data['ums_reg_id'] = $sign['ums_reg_id'];
-	    	$data['company_account'] = $sign['bank_acct_no'];
-	    	$url = $this->common($service,$data,$sign['request_seq']);
-	    	return $url;
-	    }
-    } 
-   
 }