forked from ZTO-Express/zopsdk-php
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ZopClient.php
61 lines (55 loc) · 2 KB
/
ZopClient.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
namespace zop;
include "ZopHttpUtil.php";
class ZopClient
{
private $zopProperties;
private $httpClient;
/**
* ZopClient constructor.
* @param $zopProperties
*/
public function __construct($zopProperties)
{
$this->zopProperties = $zopProperties;
$this->httpClient = new ZopHttpUtil();
}
public function execute($zopRequest)
{
if($zopRequest->getBody()==null) {
$url = $zopRequest->getUrl();
$params = $zopRequest->getParams();
$fixedParams = array();
foreach ($params as $k => $v) {
if (gettype($v) != "string") {
$fixedParams += [$k => json_encode($v)];
} else {
$fixedParams += [$k => $v];
}
}
$str_to_digest = "";
foreach ($fixedParams as $k => $v) {
$str_to_digest = $str_to_digest .$k ."=" .$v ."&";
}
$str_to_digest = substr($str_to_digest, 0, -1) .$this->zopProperties->getKey();
$data_digest = base64_encode(md5($str_to_digest, TRUE));
$headers = array(
"Content-Type: application/x-www-form-urlencoded; charset=UTF-8",
"x-companyid: " .$this->zopProperties->getCompanyid(),
"x-datadigest: " .$data_digest
);
return $this->httpClient->post($url, $headers, http_build_query($fixedParams), 2000);
} else{
$url = $zopRequest->getUrl();
$body = $zopRequest->getBody();
$str_to_digest = $body.$this->zopProperties->getKey();
$data_digest = base64_encode(md5($str_to_digest, TRUE));
$headers = array(
"Content-Type: application/json; charset=UTF-8",
"x-companyid: ".$this->zopProperties->getCompanyid(),
"x-datadigest: ".$data_digest
);
return $this->httpClient->post($url, $headers, $body, 2000);
}
}
}