Convertor.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2018/12/12
  6. * Time: 11:13 AM
  7. */
  8. namespace openapi;
  9. class Convertor
  10. {
  11. private $fields = [];
  12. public function __construct($fields)
  13. {
  14. $this->fields = $fields;
  15. //['appid','convert_sn','batch_code','commonid','time','appkey','mobile','convert_type'];
  16. }
  17. public function exist($convert_sn,$appid)
  18. {
  19. $model = Model();
  20. $items = $model->table('goods_convert')->where(['convert_sn' => $convert_sn, 'appid' => $appid])->master(true)->select();
  21. return !empty($items);
  22. }
  23. public function add_fcode($appid,$convert_sn,$batch_code,$commonid,$fcode,$mobile)
  24. {
  25. $data = [];
  26. $data['appid'] = $appid;
  27. $data['convert_sn'] = $convert_sn;
  28. $data['convert_type'] = 'fcode';
  29. $data['batch_code'] = $batch_code;
  30. $data['goods_commonid'] = $commonid;
  31. $data['add_time'] = time();
  32. $data['goods_fcode'] = $fcode;
  33. $data['user_mobile'] = $mobile;
  34. $model = Model();
  35. $insertid = $model->table('goods_convert')->insert($data);
  36. return ($insertid > 0);
  37. }
  38. private function presign_body($input)
  39. {
  40. ksort($input);
  41. reset($input);
  42. $params = [];
  43. foreach ($input as $key => $val)
  44. {
  45. if(in_array($key,$this->fields)) {
  46. $params[] = "{$key}={$val}";
  47. }
  48. }
  49. return implode('&',$params);
  50. }
  51. public function verify($input)
  52. {
  53. $signed = $input['signed'];
  54. $appid = $input['appid'];
  55. if(empty($signed) || empty($appid)) return false;
  56. $signed = base64_decode($signed);
  57. $body = $this->presign_body($input);
  58. return KeyManager::instance()->verify($appid,$body,$signed);
  59. }
  60. }