Mt4Api.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace common\lib;
  3. use common\helpers\Utils;
  4. class Mt4Api {
  5. protected $realip = '';
  6. protected $port = '';
  7. public function __construct($realip, $port)
  8. {
  9. $this->realip = $realip;
  10. $this->port = $port;
  11. }
  12. public function MQ_Query($query,$real = 0 ){
  13. $ret='error';
  14. //---- open socket
  15. $ptr=@fsockopen($this->realip,$this->port,$errno,$errstr,5);
  16. /*
  17. if( $real ){
  18. $ptr=@fsockopen($this->realip,$this->port,$errno,$errstr,5);
  19. }else{
  20. $ptr=@fsockopen($this->demoip,'443',$errno,$errstr,5);
  21. }
  22. */
  23. //---- check connection
  24. if($ptr){
  25. //---- send request
  26. if(fputs($ptr,"W$query\nQUIT\n")!=FALSE){
  27. //---- clear default answer
  28. $ret='';
  29. //---- receive answer
  30. while(!feof($ptr)) {
  31. $line=fgets($ptr,128);
  32. if($line=="end\r\n") break;
  33. $ret.= $line;
  34. }
  35. }
  36. fclose($ptr);
  37. }
  38. //---- return answer
  39. return $ret;
  40. }
  41. public function addAccount($data, $real = 0){
  42. //字段:
  43. //INVESTOR STATUS ZIPCODE ID SEND_REPORTS PHONE_PASSWORD 属性不明
  44. $data['MASTER'] = 'passwordvg';
  45. $data['IP'] = isset($data['IP']) && trim($data['IP']) != '' ? trim($data['IP']) : Utils::getClientIp();
  46. $data['GROUP'] = isset($data['GROUP']) ? trim($data['GROUP']) : '';
  47. $data['NAME'] = isset($data['NAME']) ? trim($data['NAME']) : '';
  48. $data['PASSWORD'] = isset($data['PASSWORD']) ? trim($data['PASSWORD']) : '';
  49. $data['INVESTOR'] = isset($data['INVESTOR']) ? trim($data['INVESTOR']) : '';
  50. $data['EMAIL'] = 'email';
  51. $data['COUNTRY'] = 'hk';
  52. $data['STATE'] = 'hk';
  53. $data['CITY'] = 'hk';
  54. $data['ADDRESS'] = 'hk';
  55. $data['PHONE'] = '00000000';
  56. $data['PHONE_PASSWORD'] = isset($data['PHONE_PASSWORD']) ? trim($data['PHONE_PASSWORD']) : '';
  57. $data['STATUS'] = '';
  58. $data['ZIPCODE'] = isset($data['ZIPCODE']) ? trim($data['ZIPCODE']) : '';
  59. $data['ID'] = isset($data['ID']) ? trim($data['ID']) : '';
  60. $data['LEVERAGE'] = isset($data['LEVERAGE']) ? trim($data['LEVERAGE']) : '';
  61. $data['AGENT'] = 0;
  62. $data['SEND_REPORTS'] = 1;
  63. $data['DEPOSIT'] = '';
  64. $data['COMMENT'] = '';
  65. $data['LOGIN'] = isset($data['LOGIN']) ? $data['LOGIN'] : '';
  66. // iconv('GB2312', 'UTF-8', $str);
  67. //iconv('GB2312', 'UTF-8', $str);
  68. $data['NAME'] = iconv("utf-8", "gbk", $data['NAME']);
  69. /*
  70. $query = 'NEWACCOUNT MASTER='.$data['MASTER'].'|IP='.$data['IP'].'|GROUP='.$data['GROUP'].'|NAME='.$data['NAME'].'|PASSWORD='.$data['PASSWORD'].
  71. '|INVESTOR='.$data['INVESTOR'] .'|EMAIL=email|COUNTRY=hk|STATE=hk|CITY=hk|ADDRESS=hk|COMMENT='.$data['COMMENT'].'|PHONE=000000000|PHONE_PASSWORD='.$data['PHONE_PASSWORD'].'|STATUS=resident|ZIPCODE=000000|ID=10|LEVERAGE='.$data['LEVERAGE'].'|AGENT=0'.
  72. '|SEND_REPORTS=1|DEPOSIT=0';
  73. */
  74. //--- prepare query
  75. $query="NEWACCOUNT MASTER={$data['MASTER']}|IP={$data['IP']}|GROUP={$data['GROUP']}|NAME={$data['NAME']}|".
  76. "PASSWORD={$data['PASSWORD']}|INVESTOR={$data['INVESTOR']}|EMAIL={$data['EMAIL']}|COUNTRY={$data['COUNTRY']}|".
  77. "STATE={$data['STATE']}|CITY={$data['CITY']}|ADDRESS={$data['ADDRESS']}|COMMENT={$data['COMMENT']}|".
  78. "PHONE={$data['PHONE']}|PHONE_PASSWORD={$data['PHONE_PASSWORD']}|STATUS={$data['STATUS']}|ZIPCODE={$data['ZIPCODE']}|".
  79. "ID={$data['ID']}|LEVERAGE={$data['LEVERAGE']}|AGENT={$data['AGENT']}|SEND_REPORTS={$data['SEND_REPORTS']}|".
  80. "DEPOSIT={$data['DEPOSIT']}";
  81. //--- send request
  82. //echo $query;die;
  83. $ret = $this->MQ_Query($query, $real);
  84. $info = $this->qgstr($ret);
  85. return $info;
  86. }
  87. //处理api返回的信息 如: OK LOGIN=50010 or ERROR IP is blocked. Please wait 60 secs and try again.
  88. protected function qgstr($str)
  89. {
  90. if( strstr($str, 'OK')){
  91. $tmp = explode('=', $str);
  92. $login = str_replace('\r\n', '', $tmp[1]);
  93. return array('Ret'=>0, 'Obj'=> array('Login' => $login));
  94. }else{
  95. return array('Ret'=>1, 'str'=>$str);
  96. }
  97. }
  98. }