Model_apittv1.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <?php
  2. class Model_apittv1 extends Lin_Model {
  3. function __construct(){
  4. parent::__construct();
  5. $this->load->_model("Model_logic_ding","logic_ding");
  6. $this->load->_model("Model_apitt","apitt");
  7. }
  8. private function sign($method,$query,$body,$secret){
  9. unset($query['sign']);
  10. unset($query['access_token']);
  11. $input = $method;
  12. ksort($query);
  13. foreach ($query as $key => $value) {
  14. $input.= $key.$value;
  15. }
  16. if(!empty($body)){
  17. $input.= json_encode($body);
  18. }
  19. $input = $secret . $input . $secret;
  20. // 生成签名
  21. $sign = hash_hmac('sha256', $input,$secret);
  22. return $sign;
  23. }
  24. private function reqGet($url,$headers){
  25. // 初始化cURL
  26. $ch = curl_init();
  27. // 设置cURL选项
  28. curl_setopt_array($ch, [
  29. CURLOPT_URL => $url,
  30. CURLOPT_RETURNTRANSFER => true,
  31. CURLOPT_HTTPGET => true, // 明确设置为GET请求
  32. CURLOPT_HTTPHEADER => $headers,
  33. // SSL设置 - 禁用验证(仅测试环境)
  34. CURLOPT_SSL_VERIFYPEER => false,
  35. CURLOPT_SSL_VERIFYHOST => false,
  36. // 其他设置
  37. CURLOPT_TIMEOUT => 300,
  38. CURLOPT_FOLLOWLOCATION => true,
  39. ]);
  40. // 执行请求
  41. $response = curl_exec($ch);
  42. // 检查错误
  43. $error_msg = "";
  44. if (curl_errno($ch)) {
  45. $error_msg = $ch;
  46. }
  47. // 获取HTTP状态码
  48. $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  49. return [
  50. 'httpCode'=>$httpCode,
  51. 'response'=>$response,
  52. 'errorMsg'=>$error_msg
  53. ];
  54. }
  55. private function reqPost($url,$headers,$data){
  56. // 初始化cURL
  57. $ch = curl_init();
  58. // 设置cURL选项
  59. curl_setopt_array($ch, [
  60. CURLOPT_URL => $url,
  61. CURLOPT_RETURNTRANSFER => true,
  62. CURLOPT_POST => true,
  63. CURLOPT_HTTPHEADER => $headers,
  64. CURLOPT_POSTFIELDS => json_encode($data),
  65. CURLOPT_SSL_VERIFYPEER => false, // 根据实际情况调整,生产环境建议设为true
  66. CURLOPT_TIMEOUT => 300,
  67. ]);
  68. // 执行请求
  69. $response = curl_exec($ch);
  70. // 检查错误
  71. $error_msg = "";
  72. if (curl_errno($ch)) {
  73. $error_msg = curl_error($ch);
  74. }
  75. // 获取HTTP状态码
  76. $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  77. // 关闭cURL资源
  78. curl_close($ch);
  79. return [
  80. 'httpCode'=>$httpCode,
  81. 'response'=>$response,
  82. 'errorMsg'=>$error_msg
  83. ];
  84. }
  85. public function ShipByTiktok($package_id,$shop,$info){
  86. $r = $this->apitt->ShipByTiktok($package_id,$shop,$info);
  87. var_dump($r);
  88. }
  89. public function downloadLabel($package_id,$shop,$info){
  90. $rr1 = $this->apitt->getExpressCompany($info,$shop);
  91. var_dump($rr1);
  92. die;
  93. if($rr1['x'] == 0){
  94. return $rr1;
  95. }
  96. $info = $rr1['data'];
  97. if(is_string($info['extra_text'])){
  98. $info['extra_text'] = json_decode($info['extra_text'],true);
  99. }
  100. // $res = $this->apitt->downloadLabel($package_id,$shop,$info);
  101. // return $res;
  102. }
  103. // public function downloadLabel($package_id,$shop,$info){
  104. // $url = 'https://open-api.tiktokglobalshop.com';
  105. // $link = '/fulfillment/202309/packages/'.$package_id.'/shipping_documents';
  106. // $time = time();
  107. // $querys = [
  108. // 'timestamp'=>$time,
  109. // 'shop_cipher'=>$shop['shop_cipher'],
  110. // 'app_key'=>$shop['app_key'],
  111. // 'document_type'=>'SHIPPING_LABEL'
  112. // ];
  113. // echo "<pre>";
  114. // $sign = $this->sign($link,$querys,[],$shop['app_key']);
  115. // var_dump($sign);
  116. // $full_url = $url.$link.'?'.http_build_query($querys).'&sign='.$sign;
  117. // $ch = curl_init();
  118. // curl_setopt_array($ch, [
  119. // CURLOPT_URL => $full_url,
  120. // CURLOPT_RETURNTRANSFER => true, // 返回响应内容而不是直接输出
  121. // CURLOPT_HTTPGET => true, // 明确设置为GET请求
  122. // CURLOPT_HTTPHEADER => [
  123. // 'x-tts-access-token: '.$full_url.'',
  124. // 'content-type: application/json',
  125. // ],
  126. // CURLOPT_SSL_VERIFYPEER => false, // 仅用于测试环境,生产环境应设为true
  127. // CURLOPT_TIMEOUT => 30 // 设置超时时间
  128. // ]);
  129. // // 执行请求并获取响应
  130. // $response = curl_exec($ch);
  131. // // 检查是否有错误
  132. // if (curl_errno($ch)) {
  133. // echo 'cURL错误: ' . curl_error($ch);
  134. // }
  135. // // 获取HTTP状态码
  136. // $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  137. // // 关闭cURL资源
  138. // curl_close($ch);
  139. // var_dump($response);
  140. // // $link .= '?'.http_build_query($querys);
  141. // // $url = $url.$link;
  142. // // $sign = $this->apitt->sign($url,$shop['app_key'],'') ;
  143. // // $headers = array('Content-Type: application/json','x-tts-access-token:'.$shop['token']);
  144. // // var_dump($headers);
  145. // // $url .= '&sign='.$sign;
  146. // // var_dump($sign);
  147. // // var_dump($url);
  148. // // $res = $this->apitt->su_curl('',$url,$headers,'json',300,"GET");
  149. // // print_r($res);
  150. // // die;
  151. // // $res = $this->reqGet($url,$headers);
  152. // // if($res['httpCode'] != 200){
  153. // // echo "<pre>";
  154. // // print_r($res);
  155. // // }else{
  156. // // echo "<pre>";
  157. // // print_r($res);
  158. // // }
  159. // }
  160. }