demo.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace refill\dixin_normal;
  3. class demo
  4. {
  5. //默认配置
  6. protected $config = [
  7. "access_token" => "您的访问token",
  8. "sign_key" => "您的签名key",
  9. 'url' =>'http://openapi.baishouopen.com/method',
  10. 'test_url' =>'http://t.openapi.baishouopen.com/method',
  11. ];
  12. //使用
  13. // $demo = new demo();
  14. // $rs = $demo->method('maintain.region',[]);
  15. // method
  16. // create.order 创建订单
  17. // query.order 查询订单
  18. // 更多见文档 http://api.35kds.com/web/#/64?page_id=720
  19. /**
  20. * @var string 请求地址
  21. */
  22. protected $service;
  23. /**
  24. * demo constructor.
  25. * @param bool $is_debug
  26. */
  27. public function __construct($is_debug=true)
  28. {
  29. $this->service = $is_debug?$this->config['test_url']:$this->config['url'];
  30. }
  31. /**
  32. * @introduce 请求接口
  33. * @param string $method 接口名称
  34. * @param json $data 参数
  35. * @param string $attach 透传参数
  36. * @return bool|string
  37. * @author yanglei
  38. * @Date 2022/1/27
  39. */
  40. public function method($method,$data = [],$attach = ''){
  41. $param = [
  42. 'access_token' => $this->config['access_token'],
  43. 'once' => uniqid() ,
  44. 'timestamp' => time()*1000,
  45. 'attach' => $attach,
  46. 'format' => 'JSON',
  47. 'sign_type' => 'MD5',
  48. 'version' => '1.0.0',
  49. 'method' => $method,
  50. 'data' => json_encode($data,256),
  51. ];
  52. $param = array_merge($param,['sign'=>$this->sign($param,$this->config['sign_key'])]);
  53. return $this->http($this->service,$param);
  54. }
  55. /**
  56. * @introduce 获取13时间戳
  57. * @return float
  58. * @Date 2022/1/27
  59. * @author yanglei
  60. */
  61. function getUnixTimestamp ()
  62. {
  63. list($s1, $s2) = explode(' ', microtime());
  64. return (float)sprintf('%.0f',(floatval($s1) + floatval($s2)) * 1000);
  65. }
  66. /**
  67. * 创建签名
  68. * @param $params array|object 参与签名的数据
  69. * @param $signKey string 签名key
  70. * @return string
  71. */
  72. protected function sign($params, $signKey = '')
  73. {
  74. if (is_object($params)) { //对象转数组
  75. $params = json_decode(json_encode($params), true);
  76. }
  77. if (!empty($signKey)) {
  78. $params['sign_key'] = $signKey;
  79. }
  80. ksort($params);
  81. $formatData = [];
  82. foreach ($params as $k => $v) {
  83. if (is_array($v) || is_object($v)) {
  84. $v = json_encode($v,JSON_UNESCAPED_UNICODE);
  85. }
  86. if ((!empty($v) || (string)$v === '0') && $k != 'sign') {
  87. $formatData[] = "$k=$v";
  88. }
  89. }
  90. $signStr = implode('&', $formatData);
  91. return strtoupper(md5($signStr));
  92. }
  93. /**
  94. * @introduce http post请求
  95. * @param $url string 请求地址
  96. * @param $data array 参数
  97. * @return bool|string
  98. * @Date 2022/1/4
  99. * @author yanglei
  100. */
  101. protected function http($url, $data){
  102. $curl = curl_init(); // 启动一个CURL会话
  103. curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
  104. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
  105. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
  106. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); // 模拟用户使用的浏览器
  107. //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
  108. //curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
  109. curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
  110. curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包x
  111. curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制 防止死循环
  112. curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
  113. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
  114. $tmpInfo = curl_exec($curl); // 执行操作
  115. if(curl_errno($curl))
  116. {
  117. return false;//捕抓异常
  118. }
  119. curl_close($curl); // 关闭CURL会话
  120. return $tmpInfo; // 返回数据
  121. }
  122. }