123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- <?php
- include("AlipayMobilePublicMultiMediaExecute.php");
- class AlipayMobilePublicMultiMediaClient
- {
- private $DEFAULT_CHARSET = 'UTF-8';
- private $METHOD_POST = "POST";
- private $METHOD_GET = "GET";
- private $SIGN = 'sign';
- private $timeout = 10;
- private $serverUrl;
- private $appId;
- private $privateKey;
- private $prodCode;
- private $format = 'json';
- private $sign_type = 'RSA';
- private $charset;
- private $apiVersion = "1.0";
- private $apiMethodName = "alipay.mobile.public.multimedia.download";
- private $media_id = "L21pZnMvVDFQV3hYWGJKWFhYYUNucHJYP3Q9YW13ZiZ4c2lnPTU0MzRhYjg1ZTZjNWJmZTMxZGJiNjIzNDdjMzFkNzkw575";
-
- private $connectTimeout = 3000;
- private $readTimeout = 15000;
- function __construct($serverUrl = '', $appId = '', $partner_private_key = '', $format = '', $charset = 'GBK')
- {
- $this->serverUrl = $serverUrl;
- $this->appId = $appId;
- $this->privateKey = $partner_private_key;
- $this->format = $format;
- $this->charset = $charset;
- }
-
- public function getContents()
- {
-
-
-
- $datas = array(
- "app_id" => $this->appId,
- "method" => $this->METHOD_POST,
- "sign_type" => $this->sign_type,
- "version" => $this->apiVersion,
- "timestamp" => date('Y-m-d H:i:s'),
- "biz_content" => '{"mediaId":"' . $this->media_id . '"}',
- "charset" => $this->charset
- );
-
- $data_sign = $this->buildGetUrl($datas);
- $post_data = $data_sign;
-
- $ch = curl_init();
-
- curl_setopt($ch, CURLOPT_URL, $this->serverUrl);
- curl_setopt($ch, CURLOPT_HEADER, TRUE);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
-
- curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
- if ($this->METHOD_POST == 'POST') {
-
- curl_setopt($ch, CURLOPT_POST, 1);
-
- curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
- }
- $output = curl_exec($ch);
- $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
- curl_close($ch);
- echo $output;
-
-
- $datas = explode("\r\n\r\n", $output, 2);
- $header = $datas[0];
- if ($httpCode == '200') {
- $body = $datas[1];
- } else {
- $body = '';
- }
- return $this->execute($header, $body, $httpCode);
- }
-
- public function execute($header = '', $body = '', $httpCode = '')
- {
- $exe = new AlipayMobilePublicMultiMediaExecute($header, $body, $httpCode);
- return $exe;
- }
- public function buildGetUrl($query = array())
- {
- if (!is_array($query)) {
-
- }
-
- $data = $this->buildQuery($query);
-
- $passphrase = '';
- $key_width = 64;
-
- $privateKey = $this->privateKey;
- $p_key = array();
-
- if (!stripos($privateKey, "\n")) {
- $i = 0;
- while ($key_str = substr($privateKey, $i * $key_width, $key_width)) {
- $p_key[] = $key_str;
- $i++;
- }
- } else {
-
- }
- $privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" . implode("\n", $p_key);
- $privateKey = $privateKey . "\n-----END RSA PRIVATE KEY-----";
-
- $private_id = openssl_pkey_get_private($privateKey, $passphrase);
-
- $signature = '';
- if ("RSA2" == $this->sign_type) {
- openssl_sign($data, $signature, $private_id, OPENSSL_ALGO_SHA256);
- } else {
- openssl_sign($data, $signature, $private_id, OPENSSL_ALGO_SHA1);
- }
- openssl_free_key($private_id);
-
- $signature = base64_encode($signature);
- $signature = urlencode($signature);
-
- $out = $data . '&' . $this->SIGN . '=' . $signature;
- return $out;
- }
-
- public function buildQuery($query)
- {
- if (!$query) {
- return null;
- }
- ksort($query);
-
- $params = array();
- foreach ($query as $key => $value) {
- $params[] = $key . '=' . $value;
- }
- $data = implode('&', $params);
- return $data;
- }
- }
|