Mt4Api.php 4.5 KB

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