POS 商户编号查询-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口

匿名 (未验证) 提交于 2019-12-02 22:56:40

更多资料请参考:www.woyaocha.net/product/posmcc

接口描述

功能描述

通过商户编号获取中国大陆地区所有线下收单机构的商户信息,如:收单机构、MCC编码类别、适用费率及商户所在地区等信息。

URL 示例

1)http 协议:

POST 方式请求:

Copy

 http://cha.ebaitian.cn/api/json?appid=xxx&module=getPosmccInfo&merchantNo=xxx&sign=xxx

GET 方式请求:

Copy

 http://cha.ebaitian.cn/api/json?type=get&appid=xxx&module=getPosmccInfo&merchantNo=xxx&sign=xxx

2)https 协议:

POST 方式请求:

Copy

 https://cha.ebaitian.cn/api/json?appid=xxx&module=getPosmccInfo&merchantNo=xxx&sign=xxx

GET 方式请求:

Copy

 https://cha.ebaitian.cn/api/json?type=get&appid=xxx&module=getPosmccInfo&merchantNo=xxx&sign=xxx

请求参数

数据包体

Copy

 {     "type": "get",     "appid": "1000xxxx",     "module": "getPosmccInfo",     "merchantNo": "820521154110001",     "sign": "ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4" }

参数说明

参数 必选 类型 描述
type string 授权接口的请求方式
appid string 授权接口的 AppID,请填写您在我要查官网上申请到的 AppID
module string 目标请求的数据模块,查询 POS 商户编号为:getPosmccInfo
merchantNo string 目标要查询的商户编号,即 POS 签购单上的商户编号,一般为15位数字
sign string 请求凭证,具体计算方式见下面的其他说明

其他说明

1)type:可选值 get,如果赋值 get,则以 get 方式提交数据;默认以 post 方式提交数据;
2)sign:签名校验,根据公式 $sign=sha256(appid=$appid&module=getPosmccInfo&merchantNo=$merchantNo&appkey=$appkey) 生成;其中:appkey 为授权接口的 AppKey,请填写您在我要查官网上申请到的 AppKey 。

构造伪代码如下:

Copy

 string type = "get"; //请求方式,可以赋值为:post string appid = "1000xxxx"; //sdkappid 对应的 appid,需要业务方高度保密 string module = "getPosmccInfo"; //请求的数据模块,此处赋值:getMobileArea string merchantNo = "820521154110001"; //要查询的手机号码,注意仅能为中国大陆地区11位手机号码 string sign = sha256(appid=1000xxxx&module=getPosmccInfo&merchantNo=820521154110001&appkey=56cf61af4b7897e704f67deb88ae8f24);

响应参数

数据包体

Copy

 {     "result":1,     "description":"TRUE",     "flag":"",     "posmccInfo":{         "posbankInfo":{             "bankclass":"收单资质机构",             "bankcode":"820",             "bankareacode":"0",             "bankareaname":null,             "bankname":"盛付通"         },         "posareaInfo":{             "areacode":"5211",             "province":"湖北省",             "city":"武汉市",             "dis":"江岸区"         },         "posmccInfo":{             "bclass":"民生类",             "sclass":"加油、超市类",             "mcccode":"5411",             "broad":"大型仓储式超级市场大型仓储式超级市场",             "rates":"0.34",             "note":"包含“超市、仓储式大卖场、连锁店、便利店”等字样; 开架式连锁便利店集团,当其以整体方式签订入网协议,且在同一地区门店数量在20 家以上; 食品饮料自动售货机,以及综合菜市场的零售活动"         }     } }

参数说明

参数说明

参数 必选 类型 描述
result string 接口响应结果:0-失败;1-成功
description string 接口响应描述:一般为 TURE(result=1) 与 FALSE(result=0),或者返回错误信息
flag string 错误说明,没有错误则返回空
posmccInfo object 返回 POS 收单商户信息

posmccInfo 参数说明:

参数 必选 类型 描述
posbankInfo object POS 收单机构信息,一般为银行或第三方电子支付公司
posareaInfo object POS 收单商户地区信息
posmccInfo object POS 收单商户详细信息

posbankInfo 参数说明:

参数 必选 类型 描述
bankclass string POS 收单机构类别,一般为商业银行或商业收单机构
bankcode string POS 收单机构代码
bankareacode string POS 收单机构区域代码
bankareaname string POS 收单机构区域名称
bankname string POS 收单机构名称

posareaInfo 参数说明:

参数 必选 类型 描述
areacode string POS 收单商户地区代码
province string POS 收单商户所在省(市/自治区)
city string POS 收单商户所在市(区/自治州)
dis string POS 收单商户所在区(县/市/区)

posmccInfo 参数说明:

参数 必选 类型 描述
bclass string POS 收单商户所属 MCC 大类名称
sclass string POS 收单商户所属 MCC 小类名称
mcccode string POS 收单商户 MCC 编码
broad string POS 收单商户 MCC 编码类别
rates string POS 收单商户适用费率
note string POS 收单商户其他备注信息

SDK 及代码示例

PHP SDK

方法一:以 POST 方式请求数据

Copy

 //接口参数 $api_url='http://cha.ebaitian.cn/api/json'; $api_appid='1000xxxx'; $api_appkey='56cf61af4b7897e704f67deb88ae8f24';  //函数,以POST方式提交数据,PHP需要开启CURL函数;数据传输安全,建议使用 function getPosmccInfo($merchantNo){     global $api_url,$api_appid,$api_appkey;     $posturl=$api_url;     $data='appid='.$api_appid.'&module=getPosmccInfo&merchantNo='.$merchantNo;     $sign=hash("sha256",$data.'&appkey='.$api_appkey);     $postdata=array("appid"=>$api_appid,"appkey"=>$api_appkey,"module"=>"getPosmccInfo","merchantNo"=>$merchantNo,'sign'=>$sign);     $curl = curl_init();     curl_setopt($curl, CURLOPT_URL, $posturl);     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);     curl_setopt($curl, CURLOPT_POST, 1);     curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);     $output = curl_exec($curl);     curl_close($curl);     $obj=json_decode($output);     $result=$obj->result;     if($result==1){         $value=$obj->posmccInfo->posbankInfo->bankname;         $value.=','.$obj->posmccInfo->posareaInfo->province;         $value.=','.$obj->posmccInfo->posareaInfo->city;         $value.=','.$obj->posmccInfo->posareaInfo->dis;         $value.=','.$obj->posmccInfo->posmccInfo->broad;         $value.=','.$obj->posmccInfo->posmccInfo->rates;     }else{         $value=$obj->flag;     }     return $value; } //调用函数 $merchantNo='820521154110001'; echo getPosmccInfo($merchantNo); exit;

方法二:以 GET 方式请求数据

Copy

 //接口参数 $api_url='http://cha.ebaitian.cn/api/json'; $api_appid='1000xxxx'; $api_appkey='56cf61af4b7897e704f67deb88ae8f24';  //函数,以GET方式提交数据 function getPosmccInfo($merchantNo){     global $api_url,$api_appid,$api_appkey;     $data='appid='.$api_appid.'&module=getPosmccInfo&merchantNo='.$merchantNo;     $sign=hash("sha256",$data.'&appkey='.$api_appkey);     $info_get=file_get_contents($api_url.'?type=get&'.$data.'&sign='.$sign);     $info_json=json_decode($info_get, true);     $result=$info_json['result'];     if($result==1){         $value=$info_json['posmccInfo']['posbankInfo']['bankname'];         $value.=','.$info_json['posmccInfo']['posareaInfo']['province'];         $value.=','.$info_json['posmccInfo']['posareaInfo']['city'];         $value.=','.$info_json['posmccInfo']['posareaInfo']['dis'];         $value.=','.$info_json['posmccInfo']['posmccInfo']['broad'];         $value.=','.$info_json['posmccInfo']['posmccInfo']['rates'];     }else{         $value=$info_json['flag'];     }     return $value; } //调用函数 $merchantNo='820521154110001'; echo getPosmccInfo($merchantNo); exit;

Java SDK

Copy

 //以下示例是以 GET 方式请求数据 public class QueryHelper { 	     public static String apiurl="http://cha.ebaitian.cn/api/json";     public static String appid="1000xxxx";     public static String appkey="56cf61af4b7897e704f67deb88ae8f24";     public static String module="getPosmccInfo";          public static String getSHA256Str(String str){         MessageDigest messageDigest;         String encdeStr = "";         try {             messageDigest = MessageDigest.getInstance("SHA-256");             byte[] hash = messageDigest.digest(str.getBytes("UTF-8"));             encdeStr = Hex.encodeHexString(hash);         } catch (NoSuchAlgorithmException e) {             e.printStackTrace();         } catch (UnsupportedEncodingException e) {             e.printStackTrace();         }         return encdeStr;     }          public static String get(String urlString) {         try {             URL url = new URL(urlString);             HttpURLConnection conn = (HttpURLConnection) url.openConnection();             conn.setConnectTimeout(5 * 1000);             conn.setReadTimeout(5 * 1000);             conn.setDoInput(true);             conn.setDoOutput(true);             conn.setUseCaches(false);             conn.setInstanceFollowRedirects(false);             conn.setRequestMethod("GET");              int responseCode = conn.getResponseCode();             if (responseCode == 200) {                 StringBuilder builder = new StringBuilder();                 BufferedReader br = new BufferedReader(                         new InputStreamReader(conn.getInputStream(),"utf-8"));                 for (String s = br.readLine(); s != null; s = br.readLine()) {                     builder.append(s);                 }                 br.close();                 return builder.toString();             }         } catch (IOException e) {             e.printStackTrace();         }         return null;     }          public static String queryPosmcc(String merchantNo){         String sign=getSHA256Str("appid="+appid+"&module="+module+"&merchantNo="+merchantNo+"&appkey="+appkey);         String url=apiurl+"?type=get&appid="+appid+"&module="+module+"&merchantNo="+merchantNo+"&sign="+sign;         return get(url);     } }  //使用示例 QueryHelper.queryPosmcc("820521154110001");

Python SDK

Copy

 #!/usr/bin/python # -*- coding: utf-8 -*- import httplib2 import hashlib from urllib.parse import urlencode #python3 #from urllib import urlencode #python2  apiurl='http://cha.ebaitian.cn/api/json' appid='1000xxxx' appkey='56cf61af4b7897e704f67deb88ae8f24' module='getPosmccInfo' merchantNo='820521154110001' data='appid='+appid+'&module='+module+'&merchantNo='+merchantNo sign_data=data+'&appkey='+appkey  # from Crypto.Cipher import AES # from Crypto.Hash import SHA256 # 256 hash_256 = hashlib.sha256() hash_256.update(sign_data.encode('utf-8')) sign = hash_256.hexdigest()  postdata = urlencode({'appid':appid,'module':module,'merchantNo':merchantNo,'sign':sign}) url = apiurl+'?'+postdata http = httplib2.Http() response, content = http.request(url,'GET') print(content.decode("utf-8"))

Node.js SDK

方法一:以 POST 方式请求数据

Copy

 //以 POST 方式提交 var http = require('http');    var querystring = require('querystring');    //参数设置 var appid = '1000xxxx'; var appkey = '56cf61af4b7897e704f67deb88ae8f24'; var module = 'getPosmccInfo';  //目标查询商户编号 var merchantNo='820521154110001';  //签名,SHA256 不可直接调用;函数参考下载地址:https://github.com/alexweber/jquery.sha256 var sign = SHA256('appid='+appid+'&module='+module+'&merchantNo='+merchantNo+'&appkey='+appkey);  //这是需要提交的数据 var post_data = {     appid: appid,       module: module,     merchantNo: merchantNo,     sign: sign };    var content = querystring.stringify(post_data);    var options = {       hostname: 'cha.ebaitian.cn',       port: 80,       path: '/api/json',       method: 'POST',       headers: {           'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'       }   };    var req = http.request(options, function (res) {       console.log('STATUS: ' + res.statusCode);       console.log('HEADERS: ' + JSON.stringify(res.headers));       res.setEncoding('utf8');       res.on('data', function (chunk) {           console.log('BODY: ' + chunk);       //JSON.parse(chunk)     });   });    req.on('error', function (e) {       console.log('problem with request: ' + e.message);   });    // write data to request body   req.write(content);    req.end();   

方法二:以 GET 方式请求数据

Copy

 //以 GET 方式提交 var http = require('http');    var querystring = require('querystring');    //参数设置 var appid = '1000xxxx'; var appkey = '56cf61af4b7897e704f67deb88ae8f24'; var module = 'getPosmccInfo';  //目标查询商户编号 var merchantNo='820521154110001';  //签名,SHA256 不可直接调用;函数参考下载地址:https://github.com/alexweber/jquery.sha256 var sign = SHA256('appid='+appid+'&module='+module+'&merchantNo='+merchantNo+'&appkey='+appkey);  //这是需要提交的数据 var data = {     appid: appid,      module: module,     merchantNo: merchantNo,     sign: sign };  var content = querystring.stringify(data);    var options = {       hostname: 'cha.ebaitian.cn',       port: 80,       path: '/api/json?' + content,       method: 'GET'   };    var req = http.request(options, function (res) {       console.log('STATUS: ' + res.statusCode);       console.log('HEADERS: ' + JSON.stringify(res.headers));       res.setEncoding('utf8');       res.on('data', function (chunk) {           console.log('BODY: ' + chunk);     });   });    req.on('error', function (e) {       console.log('problem with request: ' + e.message);   });    req.end();   

C# SDK

Copy

 using System; using System.Collections.Generic; using System.Web; using System.Net; using System.Text;  public class getPosmccInfo{     public static string getInfo(string appid, string appkey, string module, string mobile){         string url = string.Format("http://cha.ebaitian.cn/api/json?type=get&appid={0}&module={1}&mobile={2}&sgin={3}", appid, module, mobile, sgin);         using (WebClient client = new WebClient()){             client.Encoding = Encoding.UTF8;             return client.DownloadString(url);         }     } }  string posmccInfo = getPosmccInfo.getInfo("1000xxxx", "getPosmccInfo", "820521154110001", "ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4", Request.UserHostAddress); Console.WriteLine(posmccInfo); Response.Write(posmccInfo);

JavaScript SDK

方法一:以 POST 方式请求数据

Copy

 //使用 JQuery 请先加载最新的 JQuery 插件 //参数设置 var apiurl = 'http://cha.ebaitian.cn/api/json'; var appid = '1000xxxx'; var appkey = '56cf61af4b7897e704f67deb88ae8f24'; var module = 'getPosmccInfo';  //目标查询商户编号 var merchantNo='820521154110001';  //签名,SHA256 不可直接调用;函数参考下载地址:https://github.com/alexweber/jquery.sha256 var sign = SHA256('appid='+appid+'&module='+module+'&merchantNo='+merchantNo+'&appkey='+appkey);  //提交数据 $.ajax({     url:apiurl,     type:'post',     dataType:'json',     data:{         appid:appid,         module:module,         merchantNo:merchantNo,         sign:sign     },     success:function(res){         console.log(res);     } });

方法二:以 GET 方式请求数据

Copy

 //使用 JQuery 请先加载最新的 JQuery 插件 //参数设置 var apiurl = 'http://cha.ebaitian.cn/api/json'; var appid = '1000xxxx'; var appkey = '56cf61af4b7897e704f67deb88ae8f24'; var module = 'getPosmccInfo';  //目标查询商户编号 var merchantNo='820521154110001';  //签名,SHA256 不可直接调用;函数参考下载地址:https://github.com/alexweber/jquery.sha256 var sign = SHA256('appid='+appid+'&module='+module+'&merchantNo='+merchantNo+'&appkey='+appkey);  //提交数据 $.ajax({     url:apiurl,     type:'post',     dataType:'json',     data:{         appid:appid,         module:module,         merchantNo:merchantNo,         sign:sign     },     success:function(res){         console.log(res);     } });

ASP SDK

Copy

 '设置参数 dim apiurl, appid, appkey, module, merchantNo, sign apiurl="http://cha.ebaitian.cn/api/json" appid="1000xxxx' appkey="56cf61af4b7897e704f67deb88ae8f24" module="getPosmccInfo" merchantNo="820521154110001"  '签名,SHA256 不可直接调用;函数参考地址:https://blog.csdn.net/yesoce/article/details/128546 sgin=SHA256("appid=&appid&"&module="&module&"&merchantNo="&merchantNo&"&appkey="&appkey)  '异步提交数据 function PostHTTPPage(url,data)     dim Http      set Http=server.createobject("MSXML2.SERVERXMLHTTP.3.0")     Http.open "POST",url,false     Http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"     Http.send(data)      if Http.readystate<>4 then      exit function      End if     PostHTTPPage=bytesToBSTR(Http.responseBody,"UTF-8")     set http=nothing      if err.number<>0 then err.Clear  End function  '提交数据 dim postdata, strTest postdata="appid=&appid&"&module="&module&"&merchantNo="&merchantNo&"&sign="&sign strTest=PostHTTPPage(apiurl,postdata)  '返回结果 response.write(strTest) response.end

常见问题

API 接口参数为空

此错误返回 JSON 数据如下:

Copy

 {     "result":0,     "description":"API接口参数为空",     "flag":"appid:sign" }

解决方法:
1)请检查 appid 及 sign 是否为空;
2)确保 appid 是从官网获取到正确的接口授权;
3)确保 sign 计算生成是正确的。

API 接口参数无效

此错误返回 JSON 数据如下:

Copy

 {     "result":0,     "description":"API接口参数无效",     "flag":"appid" }

解决方法:
1)请检查 appid 是否正确;
2)确保 appid 是从官网获取到正确的接口授权。

API 接口授权已到期

此错误返回 JSON 数据如下:

Copy

 {     "result":0,     "description":"API接口授权已到期",     "flag":"end:2018-12-31 23:59:59" }

解决方法:
1)请检查 appid 对应接口授权的期限是否过期;
2)如果接口授权过期,请到官网更新(免费用户直接更新,无需续费)或续费(针对商业付费用户)。

签名错误

此错误返回 JSON 数据如下:

Copy

 {     "result":0,     "description":"签名错误",     "flag":"getPosmccInfo->sign" }

解决方法:
1)请检查 sign 签名计算是否正确;
2)签名 sign 根据公式 $sign=sha256(appid=$appid&module=getPosmccInfo&merchantNo=$merchantNo&appkey=$appkey) 生成;其中:appkey 为授权接口的 AppKey,请填写您在我要查官网上申请到的 AppKey 。

请求受限

此错误返回 JSON 数据如下:

Copy

 {     "result":0,     "description":"请求受限",     "flag":"getPosmccInfo->daylimit" }

解决方法:
1)授权接口已超出当前接口产品请求的最大限制;
2)请根据实际使用需求升级您的接口产品。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!