WeChat エンタープライズ アカウント インターフェイスを呼び出して通知情報を送信する PHP コード

WBOY
リリース: 2016-06-13 12:18:15
オリジナル
1222 人が閲覧しました

WeChat Enterprise Account インターフェースを呼び出して通知情報を送信するための PHP コード

PHP を使用して WeChat Enterprise Account インターフェースを呼び出して通知情報を送信することを勉強していたときに、問題が発生しました。中国語の文字エンコーディング。 POST を使用して送信されたデータが配列型の場合は、まず json_encode を使用して配列型データを josn 文字列に変換する必要があります。ただし、データに中国語の文字が含まれている場合、json_encode は GB2312 でエンコードされた中国語の文字をシリアル化できません。 UTF-8 でエンコードされた中国語文字も、json_encode を使用して変換されると認識できない文字化けとなり、WeChat エンタープライズ アカウント インターフェイスはこの文字化けを受信できませんでした。何をするか?調査とデバッグを繰り返した結果、最終的に 2 つの方法が見つかりました。

最初の方法 (配列データ):

1. ページ コードを UTF-8 エンコーディングに転送します。 2. urlencode を使用して中国語の文字をエンコードします。

?

3. json_encode を使用して配列データを josn 文字列に変換します。

4. urldecode を使用して josn 文字列データをデコードします。

5. 次に、デコードされた josn 文字列データを WeChat エンタープライズ アカウント インターフェイスに送信します。

?

2 番目の方法 (文字列データ):

1. ページ コードを UTF-8 エンコーディングに転送します。

2 .文字列連結を使用して送信されるデータ;

3. 次に、連結された文字列データを WeChat エンタープライズ アカウント インターフェイスに送信します。

?

コードを簡略化するために、2 番目の方法を使用しました。コードは次のとおりです。

?

?
<?phpfunction curlPost($url,$data=""){       $ch = curl_init();    $opt = array(			CURLOPT_URL     => $url,                        CURLOPT_HEADER  => 0,			CURLOPT_POST    => 1,            CURLOPT_POSTFIELDS      => $data,            CURLOPT_RETURNTRANSFER  => 1,            CURLOPT_TIMEOUT         => 20    );    $ssl = substr($url,0,8) == "https://" ? TRUE : FALSE;    if ($ssl){        $opt[CURLOPT_SSL_VERIFYHOST] = 1;        $opt[CURLOPT_SSL_VERIFYPEER] = FALSE;    }    curl_setopt_array($ch,$opt);    $data = curl_exec($ch);    curl_close($ch);    return $data;}$corpid="请修改为你企业号的corpid";$corpsecret="请修改为你企业号的corpsecret";$Url="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpid&corpsecret=$corpsecret";$res = curlPost($Url);$ACCESS_TOKEN=json_decode($res)->access_token;$Url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$ACCESS_TOKEN";$msg='要发送的文字信息';$data="{\"touser\":\"要发给的用户ID\",\"msgtype\":\"text\",\"agentid\":你的应用ID,\"text\":{\"content\":\"$msg\"},\"safe\":0}";$res = curlPost($Url,$data);$errmsg=json_decode($res)->errmsg;if($errmsg==="ok"){	echo "发送成功!";}else{	echo "发送失败,".$errmsg;}?>
ログイン後にコピー

?

その他の紹介: http://www.cnblogs.com/jisheng/archive/2012/02/13/2350040.html

?

?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート