文件
mashangyoujiu/Application/Pay/Controller/StarController.class.php

583 行
22 KiB
PHP
可执行文件

<?php
namespace Pay\Controller;
use Think\Controller;
/**
*
* 星POS接口文档信息
* @author Administrator
*
*/
//[1.1.63]
class StarController extends Controller {
// 网关 测试环境
// static private $gatewayUrl = "http://sandbox.starpos.com.cn/emercapp";
static private $OrgNo;
static private $Key;
static private $version;
private $postCharset;
// 网关 正式环境
static private $gatewayUrl = "https://gateway.starpos.com.cn/emercapp";
public function _initialize(){
//判断当前调用类的身份
$cache = M('continent_config')->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 "<meta charset=\"utf8\" />";
echo "请求值:".$data;
echo "<br />";
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;
}
}