123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
- namespace app\service\mobile_get;
- use fast\Http;
- use stdClass;
- use think\Cache;
- class Gdian extends MobileGetService {
- const PUK_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCEMt8QR5miQjxNJQPh0ruKiq6KIaK9g7Rd3NPE7YfdHUgJwMQy760ddqesNmg2wNAzH2lezzFYjZp2RFxIHaeY2ZTvJnQAazfR8x9UiQ1u+Pz0RyouAhCzIFdLknRMdx/zwOPiYeI2KCZPNCVJFdTgpbo0prCwzi1qXMZEPWasewIDAQAB';
- const IV = '0123456789ABEDEF'; //IV参数必须是16位。
- protected $appid;
- protected $apppwd;
- protected $appCode='JS0020000091';
- protected $pubkey;
- protected $pubkey_getted;
- private $private_key;
- private $private_key_getted;
- protected $mode='debug';
- protected $api=[
- 'debug'=>[
- 'token'=>'http://223.160.16.24:8080/oauth',
- 'selectno'=>'http://223.160.16.24:8080/gwec-contact-web/openapi',
- 'area'=>'http://223.160.16.24:8080/gwec-contact-web/openapi',
- ],
- 'prod'=>[
- 'token'=>'https://partner.10099.com.cn/oauth',
- 'selectn0'=>'https://partner.10099.com.cn/openapi',
- 'area'=>'https://partner.10099.com.cn/openapi',
- ]
- ];
- public function __construct()
- {
- $this->appid='test103';
- $this->apppwd='123456';
- $this->pubkey=("-----BEGIN PUBLIC KEY-----
- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCEMt8QR5miQjxNJQPh0ruKiq6K
- IaK9g7Rd3NPE7YfdHUgJwMQy760ddqesNmg2wNAzH2lezzFYjZp2RFxIHaeY2ZTv
- JnQAazfR8x9UiQ1u+Pz0RyouAhCzIFdLknRMdx/zwOPiYeI2KCZPNCVJFdTgpbo0
- prCwzi1qXMZEPWasewIDAQAB
- -----END PUBLIC KEY-----");
- $this->private_key = "-----BEGIN RSA PRIVATE KEY-----
- ......
- -----END RSA PRIVATE KEY-----";
- $this->pubkey_getted=openssl_pkey_get_public($this->pubkey);
- $this->private_key_getted=openssl_pkey_get_private($this->private_key);
- }
- public function fetchNo(){
- $areas=$this->getAreas();
- foreach ($areas as $area){
- foreach ($area['children'] as $city){
- $code=$city['areaCode'];
- $list=$this->request($this->url('selectno')."/fenxiao/openAcount/qryNumberNew?token={$this->token()}",[
- 'regionId'=>$code,
- 'currentPage'=>1,
- 'pageSize'=>30,
- ]);
- $noList=$list["result"]["numList"]??[];
- foreach ($noList as $noData){
- $result=$this->addMobile([
- 'no'=>$noData["accessNum"],
- 'city'=>$city['areaName'],
- ]);
- echo "{$city['areaName']}号码:{$noData['accessNum']},result:{$result}\n";
- self::log($logData=[
- 'no'=>$noData['accessNum'],
- 'result'=>$result?$result['id']:$result,
- ]);
- }
- }
- }
- }
- protected function request($url,$data=[]){
- $random='12345678';
- $randoms=$random.$random.$random;
- openssl_public_encrypt($randoms, $encrypted, $this->pubkey_getted);
- $code=base64_encode($encrypted);
- if(!$data){
- $data=new stdClass;
- }
- $newData=json_encode($data);
- $encrypt=openssl_encrypt($newData,'AES-192-CBC',$randoms,1,self::IV);
- $encrypted=base64_encode($encrypt);
- $requestData=[
- 'requestParams'=>$encrypted,
- ];
- //dd($newData);
- $headers=[
- 'ajaxrandomcode'=>$code,
- 'publicKey'=>self::PUK_KEY,
- 'CRC'=>$this->apppwd,
- 'ostype'=>'h5',
- 'appCode'=>$this->appCode,
- ];
- $arr=$this->post($url,$requestData,$headers);
- return $arr;
- }
- protected function token(){
- return Cache::remember('gidan_token',function (){
- $res=Http::get($this->url('token'),[
- 'username'=>$this->appid,
- 'password'=>$this->apppwd,
- 'sign'=>md5("{$this->appid}&{$this->apppwd}"),
- ]);
- $json=json_decode($res,true);
- if(empty($json['token'])){
- throw_user('get token fail '.$res);
- }
- return $json['token'];
- },29);
- }
- protected function url($api){
- $mode=$this->mode;
- return $this->api[$mode][$api];
- }
- public function getAreas(){
- $list=$this->request($this->url('area')."/fenxiao/openAcount/qryNumberOwnership?token={$this->token()}");
- //file_put_contents('aaa.json',json_encode($list,JSON_UNESCAPED_UNICODE));
- return $list['result']['regionalList']??[];
- }
- }
|