lzbase.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. class lzbaseControl
  3. {
  4. private $mMchid;
  5. private $mAdminid;
  6. private $mUseKey;
  7. protected $available;
  8. public function __construct()
  9. {
  10. $mchid = $_POST['usr'];
  11. $mchinfo = Model('merchant')->getMerchantInfo(['mchid' => $mchid]);
  12. if(empty($mchinfo)) {
  13. throw new LzException(self::text_content(-5,0));
  14. }
  15. else {
  16. $this->mAdminid = intval($mchinfo['admin_id']);
  17. }
  18. $mchinfo = Model('merchant')->getMerchantInfo(['mchid' => $mchid]);
  19. $mod_member = Model('member');
  20. $minfo = $mod_member->getMemberInfo(['member_id' => $this->mAdminid], '*', true);
  21. $this->available = $minfo['available_predeposit'];
  22. if ($mchinfo['merchant_state'] != 1) {
  23. throw new LzException(self::text_content(-7,$this->available));
  24. }
  25. $ips = unserialize($mchinfo['ip_white_list']);
  26. if(!empty($ips)) {
  27. $addr = $_SERVER['REMOTE_ADDR'];
  28. Log::record("request ip:{$addr}",Log::DEBUG);
  29. if(!in_array($addr,$ips)) {
  30. throw new LzException(self::text_content(-12,$this->available));
  31. }
  32. }
  33. $this->mUseKey = intval($mchinfo['use_key']);
  34. if($this->mUseKey && !$this->verify_md5($mchinfo['secure_key'])) {
  35. throw new LzException(self::text_content(-4,$this->available));
  36. }
  37. $this->mMchid = intval($mchid);
  38. }
  39. public function mchid() : int
  40. {
  41. return $this->mMchid;
  42. }
  43. public function adminid() : int {
  44. return $this->mAdminid;
  45. }
  46. private function verify_md5($key)
  47. {
  48. $input = $_GET;
  49. $sign = $input['sgn'];
  50. $body = $this->sign_body($input);
  51. if($this->mUseKey) {
  52. $body .= $key;
  53. }
  54. return ($sign == strtoupper(md5($body)));
  55. }
  56. private function sign_body($params)
  57. {
  58. $op = $params['op'];
  59. if($op == 'add_mob') {
  60. $content = $params['usr'] . $params['ord'] . $params['mob'] . $params['amt'] . $params['tim'];
  61. }
  62. elseif($op == 'balance') {
  63. $content = $params['usr'];
  64. }
  65. elseif($op == 'query') {
  66. $content = $params['usr'] . $params['ord'];
  67. }
  68. else {
  69. $content = 'error';
  70. }
  71. return $content;
  72. }
  73. public static function msg($code)
  74. {
  75. static $msgs = [0 => '订单提交成功',
  76. 2 => '运营商充值账户余额不足',
  77. 4 => '账户余额不足',
  78. 6 => '暂不支持此商品',
  79. 7 => '连接该运营商设备失败',
  80. 8 => '在规定时间内不得重复提交同一号码',
  81. 10 => '该帐号不能在此计算机缴费',
  82. 11 => '流水号重复',
  83. 30 => '面值不符',
  84. 41 => '该地区维护',
  85. 42 => '运营商设备忙',
  86. 43 => '暂不支持该面额的缴费',
  87. 44 => '无该地区缴费权限',
  88. -2 => '命令已发送,请查看交易流水是否有缴费成功(这种情况是服务器在排队等待处理,间隔10-20分钟后查单核实)',
  89. -3 => '数据添加失败',
  90. -4 => '签名错误',
  91. -5 => '没有此代理商',
  92. -6 => '提交失败',
  93. -7 => '无此接口权限',
  94. -8 => '提交日期不是当天日期',
  95. -9 => '参数不对',
  96. -11 => '手机号码位数不符',
  97. -12 => '绑定IP不符',
  98. 1001 => '销售数量请大于0',
  99. 1002 => '该商品库存维护',
  100. 1003 => '该供货商品库存维护'];
  101. if(array_key_exists($code,$msgs)) {
  102. return $msgs[$code];
  103. }
  104. else {
  105. return '';
  106. }
  107. }
  108. public static function text_content($code,$available)
  109. {
  110. $msg = self::msg($code);
  111. $available = ncPriceFormat($available);
  112. $content = "0|{$msg}|{$available}";
  113. return $content;
  114. }
  115. public static function outsuccess($available)
  116. {
  117. echo self::text_content(0,$available);
  118. return true;
  119. }
  120. public static function outerr($code,$available)
  121. {
  122. echo self::text_content($code,$available);
  123. return true;
  124. }
  125. }