本文給大家介紹的是個人總結(jié)的一些微信API接口,包括微信支付、微信紅包、微信卡券、微信小店等,十分的全面,有需要的小伙伴可以參考下。
微信入口綁定,微信事件處理,微信API全部操作包含在這些文件中。
微信支付、微信紅包、微信卡券、微信小店。
1. [代碼]index.php????
wcValid();
2. [代碼]微信入口類????
token = $token;
}
public function wcCheckSignature(){
try{
if (empty($this->token)) {
throw new Exception('TOKEN is not defined!');
}
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = $this->token;
$tmpArr = array($token, $timestamp, $nonce);
// use SORT_STRING rule
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
catch (Exception $e) {
echo 'Message: ' .$e->getMessage();
}
}
public function wcValid(){
$echoStr = isset($_GET["echostr"]) && !empty($_GET["echostr"]) ? addslashes($_GET["echostr"]) : NULL;
if(is_null($echoStr)){
$this->wcMsg();
}
else{
//valid signature , option
if($this->wcCheckSignature()){
echo $echoStr;
exit;
}
else{
exit();
}
}
}
public function wcMsg(){
//get post data, May be due to the different environments
$postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) && !empty($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : "";
if(!empty($postStr)){
libxml_disable_entity_loader(true);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$this->zcLog(TRUE,$postObj);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$MsgType = $postObj->MsgType;
if($MsgType == 'event'){//執(zhí)行事件相應
$Event = $postObj->Event;
switch ($Event) {
case 'subscribe'://關注
break;
case 'unsubscribe'://取消關注
break;
case 'SCAN'://掃描
break;
case 'LOCATION'://地址
break;
case 'CLICK'://點擊時間
break;
case 'VIEW'://跳轉(zhuǎn)
break;
case 'card_pass_check'://卡券審核通過
break;
case 'card_not_pass_check'://卡券審核失敗
break;
case 'user_get_card'://用戶領取卡券
break;
case 'user_del_card'://用戶刪除卡券
break;
case 'user_view_card'://用戶瀏覽會員卡
break;
case 'user_consume_card'://用戶核銷卡券
break;
case 'merchant_order'://微小店用戶下單付款
break;
default:
break;
}
}
else{
switch ($MsgType) {
case 'text'://文本格式
break;
case 'image'://圖片格式
break;
case 'voice'://聲音
break;
case 'video'://視頻
break;
case 'shortvideo'://小視頻
break;
case 'location'://上傳地理位置
break;
case 'link'://鏈接相應
break;
default:
break;
}
}
////////////////////////////////////////////////////////////////////
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
3. [代碼]微信操作類 - 更新了自定義菜單部分????
* @link
* @version 2.0.1
* @uses $wxApi = new WxApi();
* @package 微信API接口 陸續(xù)會繼續(xù)進行更新
********************************************************/
class WxApi {
//const appId
= "";
//const appSecret = "";
const appId
= "";
const appSecret = "";
//const mchid
= ""; //商戶號
//const privatekey = ""; //私鑰
public $parameters = array();
public function __construct(){
}
/****************************************************
* 微信提交API方法,返回微信指定JSON
****************************************************/
public function wxHttpsRequest($url,$data = null){
$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;
}
/****************************************************
* 微信帶證書提交數(shù)據(jù) - 微信紅包使用
****************************************************/
public function wxHttpsRequestPem($url, $vars, $second=30,$aHeader=array()){
$ch = curl_init();
//超時時間
curl_setopt($ch,CURLOPT_TIMEOUT,$second);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
//這里設置代理,如果有的話
//curl_setopt($ch,CURLOPT_PROXY, '10.206.30.98');
//curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
//以下兩種方式需選擇一種
//第一種方法,cert 與 key 分別屬于兩個.pem文件
//默認格式為PEM,可以注釋
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/apiclient_cert.pem');
//默認格式為PEM,可以注釋
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/apiclient_key.pem');
curl_setopt($ch,CURLOPT_CAINFO,'PEM');
curl_setopt($ch,CURLOPT_CAINFO,getcwd().'/rootca.pem');
//第二種方式,兩個文件合成一個.pem文件
//curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem');
if( count($aHeader) >= 1 ){
curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
}
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
$data = curl_exec($ch);
if($data){
curl_close($ch);
return $data;
}
else {
$error = curl_errno($ch);
echo "call faild, errorCode:$error\n";
curl_close($ch);
return false;
}
}
/****************************************************
* 微信獲取AccessToken 返回指定微信公眾號的at信息
****************************************************/
public function wxAccessToken($appId = NULL , $appSecret = NULL){
$appId
= is_null($appId) ? self::appId : $appId;
$appSecret = is_null($appSecret) ? self::appSecret : $appSecret;
$data = json_decode(file_get_contents("access_token.json"));
if ($data->expire_time wxHttpsRequest($url);
//print_r($result);
$jsoninfo = json_decode($result, true);
$access_token = $jsoninfo["access_token"];
if ($access_token) {
$data->expire_time = time() + 7000;
$data->access_token = $access_token;
$fp = fopen("access_token.json", "w");
fwrite($fp, json_encode($data));
fclose($fp);
}
}
else {
$access_token = $data->access_token;
}
return $access_token;
}
/****************************************************
* 微信獲取AccessToken 返回指定微信公眾號的at信息
****************************************************/
public function wxJsApiTicket($appId = NULL , $appSecret = NULL){
$appId
= is_null($appId) ? self::appId : $appId;
$appSecret = is_null($appSecret) ? self::appSecret : $appSecret;
$data = json_decode(file_get_contents("jsapi_ticket.json"));
if ($data->expire_time wxAccessToken();
$result
= $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result, true);
$ticket = $jsoninfo['ticket'];
if ($ticket) {
$data->expire_time = time() + 7000;
$data->jsapi_ticket = $ticket;
$fp = fopen("jsapi_ticket.json", "w");
fwrite($fp, json_encode($data));
fclose($fp);
}
}
else {
$ticket = $data->jsapi_ticket;
}
return $ticket;
}
/****************************************************
* 微信通過OPENID獲取用戶信息,返回數(shù)組
****************************************************/
public function wxGetUser($openId){
$wxAccessToken = $this->wxAccessToken();
$url
= "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$wxAccessToken."&openid=".$openId."&lang=zh_CN";
$result
= $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result, true);
return $jsoninfo;
}
/****************************************************
* 微信生成二維碼ticket
****************************************************/
public function wxQrCodeTicket($jsonData){
$wxAccessToken = $this->wxAccessToken();
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$wxAccessToken;
$result
= $this->wxHttpsRequest($url,$jsonData);
return $result;
}
/****************************************************
* 微信通過ticket生成二維碼
****************************************************/
public function wxQrCode($ticket){
$url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" . urlencode($ticket);
return $url;
}
/****************************************************
* 發(fā)送自定義的模板消息
****************************************************/
public function wxSetSend($touser, $template_id, $url, $data, $topcolor = '#7B68EE'){
$template = array(
'touser' => $touser,
'template_id' => $template_id,
'url' => $url,
'topcolor' => $topcolor,
'data' => $data
);
$jsonData = json_encode($template);
$result = $this->wxSendTemplate($jsonData);
return $result;
}
/****************************************************
* 微信設置OAUTH跳轉(zhuǎn)URL,返回字符串信息 - SCOPE = snsapi_base //驗證時不返回確認頁面,,只能獲取OPENID
****************************************************/
public function wxOauthBase($redirectUrl,$state = "",$appId = NULL){
$appId
= is_null($appId) ? self::appId : $appId;
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appId."&redirect_uri=".$redirectUrl."&response_type=code&scope=snsapi_base&state=".$state."#wechat_redirect";
return $url;
}
/****************************************************
* 微信設置OAUTH跳轉(zhuǎn)URL,返回字符串信息 - SCOPE = snsapi_userinfo //獲取用戶完整信息
****************************************************/
public function wxOauthUserinfo($redirectUrl,$state = "",$appId = NULL){
$appId
= is_null($appId) ? self::appId : $appId;
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appId."&redirect_uri=".$redirectUrl."&response_type=code&scope=snsapi_userinfo&state=".$state."#wechat_redirect";
return $url;
}
/****************************************************
* 微信OAUTH跳轉(zhuǎn)指定URL
****************************************************/
public function wxHeader($url){
header("location:".$url);
}
/****************************************************
* 微信通過OAUTH返回頁面中獲取AT信息
****************************************************/
public function wxOauthAccessToken($code,$appId = NULL , $appSecret = NULL){
$appId
= is_null($appId) ? self::appId : $appId;
$appSecret = is_null($appSecret) ? self::appSecret : $appSecret;
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appId."&secret=".$appSecret."&code=".$code."&grant_type=authorization_code";
$result
= $this->wxHttpsRequest($url);
//print_r($result);
$jsoninfo = json_decode($result, true);
//$access_token = $jsoninfo["access_token"];
return $jsoninfo;
}
/****************************************************
* 微信通過OAUTH的Access_Token的信息獲取當前用戶信息 // 只執(zhí)行在snsapi_userinfo模式運行
****************************************************/
public function wxOauthUser($OauthAT,$openId){
$url
= "https://api.weixin.qq.com/sns/userinfo?access_token=".$OauthAT."&openid=".$openId."&lang=zh_CN";
$result
= $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result, true);
return $jsoninfo;
}
/****************************************************
* 創(chuàng)建自定義菜單
****************************************************/
public function wxMenuCreate($jsonData){
$wxAccessToken = $this->wxAccessToken();
$url
= "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" . $wxAccessToken;
$result
= $this->wxHttpsRequest($url,$jsonData);
$jsoninfo = json_decode($result, true);
return $jsoninfo;
}
/****************************************************
* 獲取自定義菜單
****************************************************/
public function wxMenuGet(){
$wxAccessToken = $this->wxAccessToken();
$url
= "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" . $wxAccessToken;
$result
= $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result, true);
return $jsoninfo;
}
/****************************************************
* 刪除自定義菜單
****************************************************/
public function wxMenuDelete(){
$wxAccessToken = $this->wxAccessToken();
$url
= "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" . $wxAccessToken;
$result
= $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result, true);
return $jsoninfo;
}
/****************************************************
* 獲取第三方自定義菜單
****************************************************/
public function wxMenuGetInfo(){
$wxAccessToken = $this->wxAccessToken();
$url
= "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=" . $wxAccessToken;
$result
= $this->wxHttpsRequest($url);
$jsoninfo = json_decode($result, true);
return $jsoninfo;
}
/*****************************************************
* 生成隨機字符串 - 最長為32位字符串
*****************************************************/
public function wxNonceStr($length = 16, $type = FALSE) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$str = "";
for ($i = 0; $i parameters = $parameters;
return $this->parameters;
}
else{
return array();
}
}
/*******************************************************
* 微信格式化數(shù)組變成參數(shù)格式 - 支持url加密
*******************************************************/
public function wxFormatArray($parameters = NULL, $urlencode = FALSE){
if(is_null($parameters)){
$parameters = $this->parameters;
}
$restr = "";//初始化空
ksort($parameters);//排序參數(shù)
foreach ($parameters as $k => $v){//循環(huán)定制參數(shù)
if (null != $v && "null" != $v && "sign" != $k) {
if($urlencode){//如果參數(shù)需要增加URL加密就增加,不需要則不需要
$v = urlencode($v);
}
$restr .= $k . "=" . $v . "&";//返回完整字符串
}
}
if (strlen($restr) > 0) {//如果存在數(shù)據(jù)則將最后“&”刪除
$restr = substr($restr, 0, strlen($restr)-1);
}
return $restr;//返回字符串
}
/*******************************************************
* 微信MD5簽名生成器 - 需要將參數(shù)數(shù)組轉(zhuǎn)化成為字符串[wxFormatArray方法]
*******************************************************/
public function wxMd5Sign($content, $privatekey){
try {
if (is_null($privatekey)) {
throw new Exception("財付通簽名key不能為空!");
}
if (is_null($content)) {
throw new Exception("財付通簽名內(nèi)容不能為空");
}
$signStr = $content . "&key=" . $privatekey;
return strtoupper(md5($signStr));
}
catch (Exception $e)
{
die($e->getMessage());
}
}
/*******************************************************
* 微信Sha1簽名生成器 - 需要將參數(shù)數(shù)組轉(zhuǎn)化成為字符串[wxFormatArray方法]
*******************************************************/
public function wxSha1Sign($content){
try {
if (is_null($content)) {
throw new Exception("簽名內(nèi)容不能為空");
}
//$signStr = $content;
return sha1($content);
}
catch (Exception $e)
{
die($e->getMessage());
}
}
/*******************************************************
* 微信jsApi整合方法 - 通過調(diào)用此方法獲得jsapi數(shù)據(jù)
*******************************************************/
public function wxJsapiPackage(){
$jsapi_ticket = $this->wxJsApiTicket();
// 注意 URL 一定要動態(tài)獲取,不能 hardcode.
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = $protocol.$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
$timestamp = time();
$nonceStr = $this->wxNonceStr();
$signPackage = array(
"jsapi_ticket" => $jsapi_ticket,
"nonceStr" => $nonceStr,
"timestamp" => $timestamp,
"url" => $url
);
// 這里參數(shù)的順序要按照 key 值 ASCII 碼升序排序
$rawString = "jsapi_ticket=$jsapi_ticket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
//$rawString = $this->wxFormatArray($signPackage);
$signature = $this->wxSha1Sign($rawString);
$signPackage['signature'] = $signature;
$signPackage['rawString'] = $rawString;
$signPackage['appId'] = self::appId;
return $signPackage;
}
/*******************************************************
* 將數(shù)組解析XML - 微信紅包接口
*******************************************************/
public function wxArrayToXml($parameters = NULL){
if(is_null($parameters)){
$parameters = $this->parameters;
}
if(!is_array($parameters) || empty($parameters)){
die("參數(shù)不為數(shù)組無法解析");
}
$xml = "
4. [代碼]微信JSAPI????

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

抖音網(wǎng)頁版的登錄入口是https://www.douyin.com/。登錄步驟包括:1.打開瀏覽器;2.輸入網(wǎng)址https://www.douyin.com/;3.點擊“登錄”按鈕並選擇登錄方式;4.輸入賬號密碼;5.完成登錄。網(wǎng)頁版提供了瀏覽、搜索、互動、上傳視頻和個人主頁管理等功能,具有大屏幕體驗、多任務處理、便捷的賬號管理和數(shù)據(jù)統(tǒng)計等優(yōu)勢。

拷貝漫畫無疑是一個不容錯過的寶藏。在這裡,你可以找到各種風格的籃球漫畫,從熱血勵志的競技故事,到輕鬆幽默的日常喜劇,應有盡有。無論是想重溫經(jīng)典,還是想發(fā)掘新作,拷貝漫畫都能滿足你的需求。通過拷貝漫畫提供的正版在線閱讀入口,你將告別盜版資源的困擾,享受高清流暢的閱讀體驗,更能支持你喜愛的漫畫作者,為正版漫畫的發(fā)展貢獻一份力量。

選擇UC瀏覽器還是QQ瀏覽器取決於你的需求:1.UC瀏覽器適合追求快速加載和豐富娛樂功能的用戶;2.QQ瀏覽器適合需要穩(wěn)定性和與騰訊產(chǎn)品無縫連接的用戶。

結(jié)合 2025 年最新行業(yè)動態(tài)與多維度評測數(shù)據(jù),以下為綜合排名前十的 AI 寫作軟件推薦,涵蓋通用創(chuàng)作、學術研究、商業(yè)營銷等主流場景,同時兼顧中文優(yōu)化與本地化服務:

奈斯漫畫,一個致力於為漫畫愛好者打造的沉浸式閱讀體驗平臺,匯聚了海量國內(nèi)外優(yōu)質(zhì)漫畫資源。它不僅僅是一個漫畫閱讀平臺,更是一個連接漫畫家與讀者、分享漫畫文化的社區(qū)。通過簡潔直觀的界面設計和強大的搜索功能,奈斯漫畫讓你能夠輕鬆找到心儀的作品,享受流暢舒適的閱讀體驗。告別漫長的等待和繁瑣的操作,即刻進入奈斯漫畫的世界,開啟你的漫畫之旅吧!

蛙漫漫畫,憑藉其豐富多元的漫畫資源和便捷流暢的在線閱讀體驗,已成為眾多漫畫愛好者的首選。它就像一個充滿活力的池塘,源源不斷地湧現(xiàn)出新鮮有趣的故事,等待著你去發(fā)現(xiàn)和探索。蛙漫漫畫涵蓋了各種題材,從熱血冒險到甜蜜戀愛,從奇幻科幻到懸疑推理,無論你喜歡哪種類型,都能在這裡找到心儀的作品。其簡潔直觀的界面設計,更讓你能夠輕鬆上手,快速找到想看的漫畫,沉浸在精彩紛呈的漫畫世界中。

在這裡,您可以盡情暢遊於浩瀚的漫畫海洋,探索各種題材和風格的作品,從熱血激昂的少年漫,到細膩動人的少女漫,從懸疑燒腦的推理漫,到輕鬆搞笑的日常漫,應有盡有,總有一款能夠觸動您的心弦。我們不僅擁有海量的正版漫畫資源,還不斷引進和更新最新的作品,確保您能夠第一時間閱讀到您喜愛的漫畫。

2025b安最新官網(wǎng)入口地址:https://www.marketwebb.co/zh-CN/join?ref=507720986&type=wenzi;幣安(Binance)交易所是一家全球性的加密貨幣交易所,服務包括北美、歐洲、臺灣、中東、香港、馬來西亞在內(nèi)的180個國家地區(qū),提供超過600種加密貨幣,在全球擁有2.7億註冊用戶。
