find(); self::$OrgNo = $cache['continent_number']; self::$Key = $cache['continent_pay_secret_key']; } /** 商户信息进件 * @param $param * @return array */ public function createSubmerchantApi($param){ $arrData['serviceId'] = "6060601"; $arrData['version'] = "V1.0.5"; $arrData['stl_sign'] =$param['stl_sign']; $arrData['stl_typ'] =1; $arrData['incom_type'] = $param['incom_type']; $arrData['orgNo'] = self::$OrgNo; $arrData['stl_oac'] = $param['stl_oac'];//结算账号 $arrData['bnk_acnm'] = $param['bnk_acnm'];//户名 $arrData['wc_lbnk_no'] = $param['wc_lbnk_no'];//联行行号 $arrData['stoe_nm'] = $param['stoe_nm'];//签购单名称=省市+门 $arrData['stoe_cnt_nm'] = $param['stoe_cnt_nm'];//联系人名称 $arrData['stoe_cnt_tel'] = $param['stoe_cnt_tel'];//联系人手机 $arrData['mcc_cd'] = $param['mcc_cd'];//mcc $arrData['stoe_area_cod'] = $param['stoe_area_cod'];//stoe_area_cod 区域码 $arrData['stoe_adds'] = $param['stoe_adds'];//门店地址 $arrData['alipay_flg'] = "Y";//扫码产品 $arrData['yhkpay_flg'] = "N";//银行卡产品 $arrData['mailbox'] = $param['mailbox'];//联系人邮箱 //必填的数据先生成签名 $arrData['signValue'] = $this->getSign($arrData); //不是必填 if($param['incom_type'] == 2){ $arrData['wx_appid'] = $param['wx_appid']; //公众号APPID $arrData['wx_appsecrect'] = $param['wx_appsecrect']; //公众号APPIDKEY $arrData['wx_pay_catalog'] = $param['wx_pay_catalog']; //支付授权目录 $arrDatap['recom_wx_appid'] = $param['recom_wx_appid']; } $arrData['bus_lic_no'] = $param['bus_lic_no'];//营业执照号 $arrData['bse_lice_nm'] = $param['bse_lice_nm'];//营业执照名 $arrData['crp_nm'] = $param['crp_nm'];//法人 $arrData['mercAdds'] = $param['mercAdds'];//营业执照地址 $arrData['bus_exp_dt'] = $param['bus_exp_dt'];//营业执照有效期 $arrData['crp_id_no'] = $param['crp_id_no'];//法人身份证号 $arrData['crp_exp_dt'] = $param['crp_exp_dt'];//法人身份证有效期 $arrData['icrp_id_no'] = $param['icrp_id_no'] ; //持卡人身份证号 $arrData['crp_exp_dt_tmp'] = $param['crp_exp_dt_tmp']; // 持卡人身份证有效期 $arrData['trm_rec'] = 1;//终端数量 $arrData['fee_rat_scan'] = "0.38"; //扫码费率 $arrData['fee_rat3_scan'] = "0.38"; //微信费率 // $arrData['crp_exp_dt_tmp'] = $param['crp_exp_dt']; // $arrData['icrp_id_no'] = $param['crp_id_no']; //下面是不必填参数 /* $arrData['icrp_id_no'] = $param['icrp_id_no']; //结算人身份证有效期 $arrData['fee_rat_scan'] = $param['fee_rat_scan']; //扫码费率 $arrData['fee_rat1_scan'] = $param['fee_rat1_scan']; //银联二维码费率 $arrData['fee_rat2_scan'] = $param['fee_rat2_scan']; //银联二维码费率 $arrData['fee_rat'] = $param['fee_rat']; //借记卡费率 $arrData['max_fee_amt'] = 20; //借记卡费率 $arrData['fee_rat1'] = 0.6; //贷记卡费率 $arrData['tranTyps'] = "C1,C2,C3,C4,C5,C6,C7"; //贷记卡费率 $arrData['scan_stoe_cnm'] = $arrData['scan_stoe_cnm']; //扫码小票商户名称*/ $jsondata = json_encode($arrData); $re = $this->http_request($jsondata); $request = $this->GBK_decode($re); // print_r($this->print_data($jsondata,$re));exit(); // dump($request);exit(); if($request['msg_cd']==000000){ $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return $request; }else{ //失败返回接口 $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return $request; } //return $data; } /** * 商户修改申请 请求参数 * * Array ( [msg_cd] => 000000 [msg_dat] => 成功 [signValue] => b1dcdead5f17845c6e6f73e58964f8ad [REC] => Array ( [0] => Array ( [stoe_id] => 101301000000636 ) ) [log_no] => 201903260002048746 [mercId] => 800301000006658 ) */ public function applySave($mercId){ // $mercId = I('post.mercId'); $MerData['serviceId'] = 6060605; $MerData['mercId'] = $mercId; $MerData['version'] = 'V1.0.1'; $MerData['orgNo'] = self::$OrgNo; $MerData['signValue'] = $this->getSign($MerData); // print_r($MerData);exit(); $MerData = json_encode($MerData); $re = $this->http_request($MerData); $request = $this->GBK_decode($re); // print_r($request);exit(); if($request['msg_cd']==000000){ $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return $request; }else{ //失败返回接口 $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return $request; } } /** * @param $mercId 修改商户新修改 * * $mercId,$storeId, */ public function MerchantUpdate($param){ $arrData['serviceId'] ='6060604'; $arrData['stoe_id'] = $param['stoe_id']; $arrData['log_no'] = $param['log_no']; $arrData['mercId'] = $param['mercId']; $arrData['version'] = 'V1.0.5'; $arrData['incom_type'] = $param['incom_type']; $arrData['stl_typ'] = 1; $arrData['stl_sign'] = $param['stl_sign']; $arrData['orgNo'] = self::$OrgNo; $arrData['stl_oac'] = $param['stl_oac'];//结算账号 $arrData['bnk_acnm'] = $param['bnk_acnm'];//户名 $arrData['wc_lbnk_no'] = $param['wc_lbnk_no'];//联行行号 $arrData['stoe_nm'] = $param['stoe_nm'];//签购单名称=省市+门 $arrData['stoe_cnt_nm'] = $param['stoe_cnt_nm'];//联系人名称 $arrData['stoe_cnt_tel'] = $param['stoe_cnt_tel']; //联系人手机号码 // $arrData['mcc_cd'] = $param['mcc_cd'];//mcc $arrData['stoe_area_cod'] = $param['stoe_area_cod'];//stoe_area_cod 区域码 $arrData['stoe_adds'] = $param['stoe_adds'];//门店地址 $arrData['mailbox'] = $param['mailbox'];//联系人邮箱 $arrData['alipay_flg'] = "Y";//扫码产品 $arrData['yhkpay_flg'] = "N";//银行卡查询 //必填的数据先生成签名 // dump($param);exit(); $arrData['signValue'] = $this->getSign($arrData); if($param['incom_type'] == 2){ $arrData['wx_appid'] = $param['wx_appid']; //公众号APPID $arrData['wx_appsecrect'] = $param['wx_appsecrect']; //公众号APPIDKEY $arrData['wx_pay_catalog'] = $param['wx_pay_catalog']; //支付授权目录 $arrDatap['recom_wx_appid'] = $param['recom_wx_appid']; } $arrData['fee_rat_scan'] = "0.38"; //扫码费率 $arrData['fee_rat3_scan'] = "0.38"; //微信费率 $arrData['bus_lic_no'] = $param['bus_lic_no'];//营业执照号 $arrData['bse_lice_nm'] = $param['bse_lice_nm'];//营业执照名 $arrData['mercAdds'] = $param['mercadds'];//营业执照地址 $arrData['bus_exp_dt'] = $param['bus_exp_dt'];//营业执照有效期 $arrData['crp_nm'] = $param['crp_nm'];//法人 $arrData['crp_id_no'] = $param['crp_id_no'];//法人身份证号 $arrData['crp_exp_dt'] = $param['crp_exp_dt'];//法人身份证有效期 $arrData['mercAdds'] = $param['mercAdds'];//商户地址 $arrData['icrp_id_no'] = $param['icrp_id_no'] ; //持卡人身份证号 $arrData['crp_exp_dt_tmp'] = $param['crp_exp_dt_tmp']; // 持卡人身份证有效期 $arrData['trm_rec'] = 1;//终端数量 //不是必填 //下面是不必填参数 // $arrData['icrp_id_no'] = $param['icrp_id_no']; // $arrData['crp_exp_dt_tmp'] = $param['crp_exp_dt_tmp']; //结算人身份证有效期 // $arrData['fee_rat_scan'] = $param['fee_rat_scan']; //扫码费率 // $arrData['fee_rat1_scan'] = $param['fee_rat1_scan']; //银联二维码费率 // $arrData['fee_rat2_scan'] = $param['fee_rat2_scan']; //银联二维码费率 // $arrData['fee_rat'] = $param['fee_rat']; //借记卡费率 // $arrData['max_fee_amt'] = 20; //借记卡费率 // $arrData['fee_rat1'] = 0.6; //贷记卡费率 // $arrData['tranTyps'] = "C1,C2,C3,C4,C5,C6,C7"; //贷记卡费率 // $arrData['scan_stoe_cnm'] = $arrData['scan_stoe_cnm']; //扫码小票商户名称 // print_r($arrData);exit(); $arrData = json_encode($arrData); $re = $this->http_request($arrData); $request = $this->GBK_decode($re); // print_r($this->print_data($arrData,$re));exit(); // dump($request);exit(); return $request; } /** * 商户信息提交 */ public function submitMerchant($merid,$log_no){ $subData['serviceId'] = 6060603; $subData['mercId'] = $merid; $subData['orgNo'] = self::$OrgNo; $subData['version'] = 'V1.0.1'; $subData['log_no'] = $log_no; //签名 $subData['signValue'] = $this->getSign($subData); // print_r($subData);exit(); $subJson = json_encode($subData); $re = $this->http_request($subJson); $request = $this->GBK_decode($re); // dump($request);exit(); if($request['msg_cd']==000000){ $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return $request; }else{ //失败返回接口 $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return $request; } } //审核通过后 配置微信公众号和小程序 public function wx_configure($param){ $wxp['serviceId'] = '6060111'; $wxp['version'] = 'V1.0.0'; $wxp['stoe_id'] = $param['stoe_id']; //101305048160274 $param['stoe_id'] $wxp['Appid'] =$param['appid'] ; //wxcbda3adcd402c76f $param['appid'] $wxp['appkey'] = $param['appkey']; //28b2e2878fa918843a4d159a821e2efa $param['appkey'] $wxp['PUBLIC_Appid'] =$param['PUBLIC_Appid'] ; //wxcbda3adcd402c76f $param['PUBLIC_Appid'] $wxp['WX_TYPE'] = $param['wx_type'] ; //配置类型 1 公众号 2 小程序 $param['wx_type'] $wxp['orgNo'] = self::$OrgNo; $wxp['signValue'] = $this->getSign($wxp); $subJson = json_encode($wxp); $re = $this->http_request($subJson); $request = $this->GBK_decode($re); // print_r($this->print_data($subJson,json_encode($request)));exit(); // print_r($request); return $request; } //公众号小程序查询 public function seewx_config(){ $wxp['serviceId'] = '6060112'; $wxp['version'] = 'V1.0.0'; $wxp['stoe_id'] = '101301000000636'; $wxp['Appid'] = 'wxeeb317941efaec77'; $wxp['orgNo'] = self::$OrgNo; $wxp['signValue'] = $this->getSign($wxp); $subJson = json_encode($wxp); $re = $this->http_request($subJson); $request = $this->GBK_decode($re); // print_r($request);exit(); return $request; } /* * 图片资料上传 * */ public function Picturedata($param){ $subData['serviceId'] = '6060606'; $subData['version'] = 'V1.0.1'; $subData['mercId'] = $param['mercId']; //商户号 $subData['orgNo'] = self::$OrgNo; //机构号 $subData['log_no'] = $param['log_no']; //流水号 $subData['stoe_id'] = $param['stoe_id']; //门店id $subData['imgTyp'] = $param['imgTyp']; //图片类型 $subData['imgNm'] = $param['imgNm']; //图片名字 //签名 $subData['signValue'] = $this->getSign($subData); $subData['imgFile'] = $this->Hexadecimal($param['imgFile']); //图片不参与签名 $subJson = json_encode($subData); $re = $this->http_request($subJson); $request = $this->GBK_decode($re); if($request['msg_cd']==000000){ $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; // file_put_contents('4.txt',$request['msg_cd']);exit(); return $request; }else{ //失败返回接口 $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return $request; } } /* * 图片转换成十六进制 * */ public function Hexadecimal($imgUrl){ $imgUrl = '.'.$imgUrl; if(file_exists($imgUrl)){ $data = file_get_contents($imgUrl); $newdata=bin2hex($data); file_put_contents('4.txt',$newdata); } return $newdata ; } /** * 商户信息查询 */ public function getMerchantInfo($mercId){ // $mercId = I('post.mercId'); $MerData['serviceId'] = '6060300'; $MerData['version'] ='V1.0.1'; $MerData['mercId'] = $mercId; $MerData['orgNo'] = self::$OrgNo; $MerData['signValue'] = $this->getSign($MerData); $MerData = json_encode($MerData); $re = $this->http_request($MerData); $request = $this->GBK_decode($re); // print_r($request['REC']);exit(); // print_r($request);exit(); if($request['msg_cd']==000000){ $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return $request; }else{ //失败返回接口 $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return $request; } } /** 调用该方法 给机构号和秘钥赋值 */ public function orN($merchantid){ $partnerid = M('retail_merchant')->where(array('id'=>$merchantid))->getField('partnerid'); $partner = M('systemconfig')->where(array('partnerid'=>$partnerid))->find(); if($partner['continent_orgno']!='' && $partner['continent_key']!= ''){ self::$Key = $partner['continent_key']; self::$OrgNo =$partner['continent_orgno']; }else{ if($partner['continent_orgno']==''){ $request['msg_dat'] = '服务商机构号错误!'; }elseif ($partner['continent_key']== ''){ $request['msg_dat'] = '服务商机构秘钥错误!'; }else{ $request['msg_dat'] = '请先联系您的上级开通新大陆服务'; } $request['msg_cd'] = 111; $this->errMsg = $request['msg_dat']; return false; } } /** * 获取区域码 * 系统数据已存在 无需对接 */ public function getcity(){ $province = I('post.province'); $city = I('post.city'); if(!empty($city) && !empty($province)){ $pro = M('citys')->where(array('cityid' => $province))->getField('city_name'); $city = M('citys')->where(array('cityid' => $city))->getField('city_name'); } $cityData['serviceId'] = 6060206; $cityData['orgNo'] = self::$OrgNo; $cityData['version'] = 'V1.0.1'; $cityData['signValue'] = $this->getSign($cityData); $cityData['prov_nm'] =$pro; $cityData['city_nm'] =$city; $data = json_encode($cityData); $re = $this->http_request($data); $request = $this->GBK_decode($re); // print_r($request);exit(); if($request['msg_cd']==000000){ $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; $res['status'] = 1; $res['msg'] = '查询成功'; $res['rec'] = $request['REC']; }else{ //失败返回接口 $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; $res['status'] = 0; $res['msg'] = $request['msg_dat']; } $this->ajaxReturn($res); } //页面需要区域 public function getArea($province,$city){ if(!empty($city) && !empty($province)){ $pro = M('citys')->where(array('cityid' => $province))->getField('city_name'); $city = M('citys')->where(array('cityid' => $city))->getField('city_name'); } $cityData['serviceId'] = 6060206; $cityData['orgNo'] = self::$OrgNo; $cityData['version'] = 'V1.0.1'; $cityData['signValue'] = $this->getSign($cityData); $cityData['prov_nm'] =$pro; $cityData['city_nm'] =$city; $data = json_encode($cityData); $re = $this->http_request($data); $request = $this->GBK_decode($re); // print_r($request);exit(); if($request['msg_cd']==000000){ $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; $res['status'] = 1; $res['msg'] = '查询成功'; $res['rec'] = $request['REC']; }else{ //失败返回接口 $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; $res['status'] = 0; $res['msg'] = $request['msg_dat']; } return $request['REC']; } public function getserviceId(){ $serviceId = rand(1000000,9999999); return $serviceId; } public function getMcc(){ $MccData['serviceId'] = "6060203"; $MccData['orgNo'] = self::$OrgNo; $MccData['version'] = self::$version; $MccData['signValue'] = $this->getSign($MccData); $data = json_encode($MccData); $re = $this->http_request($data); $request = $this->GBK_decode($re); if($request['msg_cd']==000000){ $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return $request['REC']; }else{ //失败返回接口 $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return false; } } /** 支行名称模糊查询 * @param $name * @return bool */ public function getBankCode($name){ // $name = I('post.name'); // 农业银行无锡藕塘支行 中国工商银行股份有限公司南京朝天宫支行 $Bankdata['serviceId'] = "6060208"; $Bankdata['orgNo'] = self::$OrgNo; $Bankdata['lbnk_nm'] = $name; $Bankdata['version'] = 'V1.0.1'; $Bankdata['signValue'] = $this->getSign($Bankdata); // print_r($Bankdata); $data = json_encode($Bankdata); $re = $this->http_request($data); $request = $this->GBK_decode($re); // print_r($request);exit(); if($request['msg_cd']==000000){ $this->errCode = $request['msg_cd']; $this->Data = $request['REC']; return $request['REC']; }else{ //失败返回接口 $this->errCode = $request['msg_cd']; $this->errMsg = $request['msg_dat']; return false; } //调试:$this->print_data($data,$re); } public function print_data($data,$re){ //echo ""; echo "请求值:".$data; echo "
"; echo "返回值:".$re; } public function GBK_decode($gbk_txt){ $text = mb_convert_encoding($gbk_txt,"utf8","gbk"); $request = json_decode($text,true); return $request; } /** 接口数字签名方法 * @param $data * @return mixed */ private function getSign($data){ $key = self::$Key; $arr = array_change_key_case($data,CASE_LOWER); ksort ($arr); $str = ""; foreach($arr as $val){ $str.= $val; } $str.= $key; return MD5($str); } /** * 转换字符集编码 * * @param * $data * @param * $targetCharset * @return string */ public function characet($data, $targetCharset) { if (!empty ($data)) { $fileType = $this->fileCharset; if (strcasecmp($fileType, $targetCharset) != 0) { $data = mb_convert_encoding($data, $targetCharset); } } return $data; } /** * @param $url 接口请求方法 * @param null $postFields * @return mixed */ public function http_request($data){//file_get_content $url = self::$gatewayUrl; $ch = curl_init(); //用curl发送数据给api $header = array( 'content-type:application/json;charset=GBK' ); curl_setopt($ch, CURLOPT_HTTPHEADER , $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_POSTFIELDS, $data ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, FALSE ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, FALSE ); $response = curl_exec($ch); if($response === FALSE ){ echo "CURL Error:".curl_error($ch); } curl_close( $ch ); return $response; } }