| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 | 
							- <?php
 
- /**
 
-  * 多媒体文件客户端
 
-  * @author yikai.hu
 
-  * @version $Id: AlipayMobilePublicMultiMediaClient.php, v 0.1 Aug 15, 2014 10:19:01 AM yikai.hu Exp $
 
-  */
 
- //namespace alipay\api ;
 
- include("AlipayMobilePublicMultiMediaExecute.php");
 
- class AlipayMobilePublicMultiMediaClient
 
- {
 
-     private $DEFAULT_CHARSET = 'UTF-8';
 
-     private $METHOD_POST = "POST";
 
-     private $METHOD_GET = "GET";
 
-     private $SIGN = 'sign'; //get name
 
-     private $timeout = 10;// 超时时间
 
-     private $serverUrl;
 
-     private $appId;
 
-     private $privateKey;
 
-     private $prodCode;
 
-     private $format = 'json'; //todo
 
-     private $sign_type = 'RSA'; //todo
 
-     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;
 
-     }
 
-     /**
 
-      * getContents 获取网址内容
 
-      * @param $request
 
-      * @return text | bin
 
-      */
 
-     public function getContents()
 
-     {
 
-         //自己的服务器如果没有 curl,可用:fsockopen() 等
 
-         //1:
 
-         //2: 私钥格式
 
-         $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'),//yyyy-MM-dd HH:mm:ss
 
-             "biz_content" => '{"mediaId":"' . $this->media_id . '"}',
 
-             "charset" => $this->charset
 
-         );
 
-         //要提交的数据
 
-         $data_sign = $this->buildGetUrl($datas);
 
-         $post_data = $data_sign;
 
-         //初始化 curl
 
-         $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') {
 
-             // post数据
 
-             curl_setopt($ch, CURLOPT_POST, 1);
 
-             // post的变量
 
-             curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
 
-         }
 
-         $output = curl_exec($ch);
 
-         $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 
-         curl_close($ch);
 
-         echo $output;
 
-         //分离头部
 
-         //list($header, $body) = explode("\r\n\r\n", $output, 2);
 
-         $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);
 
-     }
 
-     /**
 
-      *
 
-      * @param $request
 
-      * @return text | bin
 
-      */
 
-     public function execute($header = '', $body = '', $httpCode = '')
 
-     {
 
-         $exe = new AlipayMobilePublicMultiMediaExecute($header, $body, $httpCode);
 
-         return $exe;
 
-     }
 
-     public function buildGetUrl($query = array())
 
-     {
 
-         if (!is_array($query)) {
 
-             //exit;
 
-         }
 
-         //排序参数,
 
-         $data = $this->buildQuery($query);
 
-         // 私钥密码
 
-         $passphrase = '';
 
-         $key_width = 64;
 
-         //私钥
 
-         $privateKey = $this->privateKey;
 
-         $p_key = array();
 
-         //如果私钥是 1行
 
-         if (!stripos($privateKey, "\n")) {
 
-             $i = 0;
 
-             while ($key_str = substr($privateKey, $i * $key_width, $key_width)) {
 
-                 $p_key[] = $key_str;
 
-                 $i++;
 
-             }
 
-         } else {
 
-             //echo '一行?';
 
-         }
 
-         $privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" . implode("\n", $p_key);
 
-         $privateKey = $privateKey . "\n-----END RSA PRIVATE KEY-----";
 
- //		echo "\n\n私钥:\n";
 
- //		echo( $privateKey );
 
- //		echo "\n\n\n";
 
-         //私钥
 
-         $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);
 
-         //$signature = 'XjUN6YM1Mc9HXebKMv7GTLy7gmyhktyOgKk2/Jf+cz4DtP6udkzTdpkjW2j/Z4ZSD7xD6CNYI1Spz4yS93HPT0a5X9LgFWYY8SaADqe+ArXg+FBSiTwUz49SE//Xd9+LEiIRsSFkbpkuiGoO6mqJmB7vXjlD5lx6qCM3nb41wb8=';
 
-         $out = $data . '&' . $this->SIGN . '=' . $signature;
 
- //		echo "\n\n 加密后:\n";
 
- //		echo( $out );
 
- //		echo "\n\n\n";
 
-         return $out;
 
-     }
 
-     /*
 
-      * 查询参数排序 a-z
 
-      * */
 
-     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;
 
-     }
 
- }
 
 
  |