Mt4Api.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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'] = 'pwdhandz';
  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. $data['NAME'] = iconv("utf-8", "gbk", $data['NAME']);
  67. //--- prepare query
  68. $query="NEWACCOUNT MASTER={$data['MASTER']}|IP={$data['IP']}|GROUP={$data['GROUP']}|NAME={$data['NAME']}|".
  69. "PASSWORD={$data['PASSWORD']}|INVESTOR={$data['INVESTOR']}|EMAIL={$data['EMAIL']}|COUNTRY={$data['COUNTRY']}|".
  70. "STATE={$data['STATE']}|CITY={$data['CITY']}|ADDRESS={$data['ADDRESS']}|COMMENT={$data['COMMENT']}|".
  71. "PHONE={$data['PHONE']}|PHONE_PASSWORD={$data['PHONE_PASSWORD']}|STATUS={$data['STATUS']}|ZIPCODE={$data['ZIPCODE']}|".
  72. "ID={$data['ID']}|LEVERAGE={$data['LEVERAGE']}|AGENT={$data['AGENT']}|SEND_REPORTS={$data['SEND_REPORTS']}|".
  73. "DEPOSIT={$data['DEPOSIT']}";
  74. //--- send request
  75. $ret = $this->MQ_Query($query, $real);
  76. $info = $this->qgstr($ret);
  77. return $info;
  78. }
  79. //处理api返回的信息 如: OK LOGIN=50010 or ERROR IP is blocked. Please wait 60 secs and try again.
  80. protected function qgstr($str)
  81. {
  82. if( strstr($str, 'OK')){
  83. $tmp = explode('=', $str);
  84. $login = str_replace('\r\n', '', $tmp[1]);
  85. return array('Ret'=>0, 'Obj'=> array('Login' => $login));
  86. }else{
  87. return array('Ret'=>1, 'str'=>$str);
  88. }
  89. }
  90. }