위챗 공중 백그라운드 개발의 소재 관리
3691 단어 위챗 공중 백그라운드 개발
위챗 공중 백그라운드 개발의 소재 관리
최근 회사의 요구에 따라 회사의 위챗 공중번호 백그라운드를 업그레이드하고 일부 기능을 추가한다. 그 중에서 백그라운드에서 사진을 올려야 하고 공중번호는 사용자의 단추에 따라 이벤트를 누르면 백그라운드에서 올린 사진으로 돌아간다.보기만 해도 간단한 수요지만 위챗 개발 문서를 먼저 알고 위챗 개발 문서를 개발해야 한다.
문서를 보니 생각보다 간단하지 않다. 여기에는 세 가지 시스템의 상호작용이 관련된다. 하나는 사용자의 수집이고 하나는 자신의 백엔드 서버이며 하나는 위챗 서버이다. 공중번호의 사진 답장을 할 때 사진을 위챗 서버에 업로드하고 소재를 얻는 미디어_id, 그리고 미디어_id는 위챗에 규정된 XML 정보 템플릿으로 조립하여 사용자가 단추를 눌렀을 때 업로드한 그림으로 되돌려줍니다.
위챗은 업로드된 소재에 대해 임시 소재와 영구 소재를 구분했다. 그들이 업로드하는 방식도 다르고 요구도 있을 것이다.영구 소재의 경우 삭제 작업이 필요합니다.저는 PHP를 이용하여 개발을 했습니다. 우선 임시 소재를 업로드하고 문서가 우리에게 URL과 요청 방법을 주었습니다.그리고 프로그래밍을 해요.프로그래밍은 먼저 요청한 방법을 포장합니다.protected static function https_request($url, $data = null)
{
// cURL
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
요청에 대한 조작을 포장한 다음에 업로드 소재를 만들었습니다. 위챗은 인터넷 소재를 받아들이지 않고 자신의 로컬 사진을 업로드할 수밖에 없습니다. 여기에 임시 소재를 업로드하는 방법을 썼습니다.// medioId
public function get_media_id($imgUrl){
$TOKEN="idtbxhOnI4YZ8gFRHeUEU-MYk4T3XxVndEZKvx2jlx3dGteEWEyG6Twck9MTgsyXRl_MqyBhgYa4w73mjGnvXH17Nguhqs7Z2QCpCu7SvzUYIWjAHALVJ";
$URL ='http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token='.$TOKEN.'&type=image';
$filedata = array("media" => "@".$imgUrl);
$result =$this->https_request($URL,$filedata);
echo var_dump($result).'
';
$res = json_decode($result,true);
return $res;
}
위의 토큰은 위챗 자신의 공식 계정입니다.
accessToken, 문서 웹 테스트를 통해 테스트를 받을 수도 있고, 직접 쓰는 방법으로 얻을 수도 있습니다. 여기는 쓰지 않습니다. 파라미터에 $imageUrl을 주면 얻을 수 있습니다.
media_id, 미디어 사용 중_id는 영구 소재를 올리는 것과 임시 소재를 올리는 것은 같지만 링크가 다르다. //
public function uploadImg($imgUrl){
$TOKEN="7ZT1cX_zIh0PFJnINPPaVew5yIDAU9N0umuwt5kmyuMwGVW2LCCTmokixxt99Rix0NixyKiQP-kB-T8KxYNllkRz7pZ7znWfIKOkK8bYUmsCFIgAFAFIL";
$url = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token='.$TOKEN.'&type=image';
// $URL ='http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token='.$TOKEN.'&type=image';
$data = array('media'=>'@'.$imgUrl);
$result = $this->https_request($url,$data);
$data = @json_decode($result,true);
return $data['media_id'];
// return $data;
}
간단하지 않아요? 이제 영구 소재를 지우고 소재를 삭제하는 방법을 봅시다. 먼저 소재를 얻는 미디어_id, 미디어를 통해서_id는 소재를 삭제합니다. 업로드된 소재를 우리끼리 저장해야 합니다.media_id, 삭제 작업을 편리하게 할 수 있습니다.여기에 직접 코드를 제공합니다. public function del_media($media_id){
$TOKEN="7ZT1cX_zIh0PFJnINPPaVew5yIDAU9N0umuwt5kmyuMwGVW2LCCTmokixxt99Rix0NixyKiQP-kB-T8KxYNllkRz7pZ7znWfIKOkK8bYUmsCFIgAFAFIL";
$media_id = 'b6geinBHCE6Z3WrilwK0NEeVU4JZDlcdebGYQrYOy-k';
// $media_id = 'b6geinBHCE6Z3WrilwK0NBO88W4Q5nNrhWQOiUKQouA';
$url = 'https://api.weixin.qq.com/cgi-bin/material/del_material?access_token='.$TOKEN;
$data = '{"media_id":"%s"
}';
$data = sprintf($data,$media_id);
$result = $this->https_request($url,$data);
$res = json_decode($result,true);
return $res;
}
여기에 요청한 매개 변수의 형식을 주의해야 합니다. 그렇지 않으면 오류가 발생할 수 있습니다.
protected static function https_request($url, $data = null)
{
// cURL
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
// medioId
public function get_media_id($imgUrl){
$TOKEN="idtbxhOnI4YZ8gFRHeUEU-MYk4T3XxVndEZKvx2jlx3dGteEWEyG6Twck9MTgsyXRl_MqyBhgYa4w73mjGnvXH17Nguhqs7Z2QCpCu7SvzUYIWjAHALVJ";
$URL ='http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token='.$TOKEN.'&type=image';
$filedata = array("media" => "@".$imgUrl);
$result =$this->https_request($URL,$filedata);
echo var_dump($result).'
';
$res = json_decode($result,true);
return $res;
}
//
public function uploadImg($imgUrl){
$TOKEN="7ZT1cX_zIh0PFJnINPPaVew5yIDAU9N0umuwt5kmyuMwGVW2LCCTmokixxt99Rix0NixyKiQP-kB-T8KxYNllkRz7pZ7znWfIKOkK8bYUmsCFIgAFAFIL";
$url = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token='.$TOKEN.'&type=image';
// $URL ='http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token='.$TOKEN.'&type=image';
$data = array('media'=>'@'.$imgUrl);
$result = $this->https_request($url,$data);
$data = @json_decode($result,true);
return $data['media_id'];
// return $data;
}
public function del_media($media_id){
$TOKEN="7ZT1cX_zIh0PFJnINPPaVew5yIDAU9N0umuwt5kmyuMwGVW2LCCTmokixxt99Rix0NixyKiQP-kB-T8KxYNllkRz7pZ7znWfIKOkK8bYUmsCFIgAFAFIL";
$media_id = 'b6geinBHCE6Z3WrilwK0NEeVU4JZDlcdebGYQrYOy-k';
// $media_id = 'b6geinBHCE6Z3WrilwK0NBO88W4Q5nNrhWQOiUKQouA';
$url = 'https://api.weixin.qq.com/cgi-bin/material/del_material?access_token='.$TOKEN;
$data = '{"media_id":"%s"
}';
$data = sprintf($data,$media_id);
$result = $this->https_request($url,$data);
$res = json_decode($result,true);
return $res;
}