国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
第二步:通過code換取網(wǎng)頁授權(quán)access_token
第四步:拉取用戶,和自己網(wǎng)站用戶綁定
附:檢驗(yàn)授權(quán)憑證(access_token)是否有效
Rumah applet WeChat pembangunan WeChat 詳解微信開發(fā)模式之自定義菜單實(shí)現(xiàn)代碼

詳解微信開發(fā)模式之自定義菜單實(shí)現(xiàn)代碼

Mar 26, 2017 pm 03:06 PM
pembangunan WeChat

? ? ? ? 最近有做了關(guān)于微信公眾號(hào)和自己網(wǎng)站用戶進(jìn)行用戶關(guān)聯(lián)授權(quán)登錄的一個(gè)功能,主要是用戶關(guān)注該公眾號(hào),點(diǎn)擊會(huì)員中心,則會(huì)彈出需要關(guān)聯(lián)授權(quán)的網(wǎng)頁授權(quán):OAuth2.0網(wǎng)頁授權(quán),然后用戶同意獲取用戶信息,進(jìn)行用戶和網(wǎng)站的關(guān)聯(lián),然后用戶則可以使用微信進(jìn)行登錄。

??????? 本次做的是一個(gè)在Java的Action層處理各個(gè)返回參數(shù)獲取數(shù)據(jù)。

???????一、 使用到的工具:

??????????? 1、ngrok,將你自己的本機(jī)映射到公網(wǎng),這樣保證可以隨時(shí)測試開發(fā);

?????????????????? 1、下載ngrok,網(wǎng)址:http://www.tunnel.mobi/

???????????????????2、將文件放到Tomcat目錄下,在cmd中運(yùn)行ngrok -config ngrok.cfg -subdomain xinzhi 8080

?????????????????? 3、ngrok工具為在慕課網(wǎng)@LAOBI 看到的

??????????? 2、微信公眾號(hào)測試賬號(hào),隨時(shí)測試,首先保證在測試賬號(hào)下沒有問題后在進(jìn)行公眾號(hào)的移植。

?????? 二、使用到在Java中發(fā)送一個(gè)Http請求,然后返回JSON參數(shù),獲得JSON參數(shù),然后進(jìn)行處理。

?????????? 首先,獲取將公眾號(hào)測試號(hào)放到properties文件中,以便我們進(jìn)行調(diào)用或者更換,如:url請用https

Properties代碼 ?收藏代碼

AppID?=?wxf00**c3dd2ebfa0??
AppSecret?=?3cb220755f****506dc35391aa5c03ec??
url?=?https://xinzhi.tunnel.mobi

?????????? 這里url為我們映射到外網(wǎng)的地址,一會(huì)需要用到。然后需要兩個(gè)工具類,該工具類作用是在Java的Action中發(fā)送http請求后獲取到去返回值

? ? ? ? ? ?啟用自己有相應(yīng)的改動(dòng),以適應(yīng)本項(xiàng)目的需求:

?????????? WeixinUtil.java 和 MyX509TrustManager.java

Java代碼 ?收藏代碼

package?com.zhtx.common.util;??
import?java.io.BufferedReader;??
import?java.io.InputStream;??
import?java.io.InputStreamReader;??
import?java.io.OutputStream;??
import?java.net.ConnectException;??
import?java.net.URL;??
import?javax.net.ssl.HttpsURLConnection;??
import?javax.net.ssl.SSLContext;??
import?javax.net.ssl.SSLSocketFactory;??
import?javax.net.ssl.TrustManager;??
import?org.slf4j.Logger;??
import?org.slf4j.LoggerFactory;??
/**
?*?公眾平臺(tái)通用接口工具類
?*?
?*?@author?xinz
?*?@date?2015-10-14
?*/
public?class?WeixinUtil?{??
????private?static?Logger?log?=?LoggerFactory.getLogger(WeixinUtil.class);??
????/**
?????*?發(fā)起https請求并獲取結(jié)果
?????*?
?????*?@param?requestUrl?請求地址
?????*?@param?requestMethod?請求方式(GET、POST)
?????*?@param?outputStr?提交的數(shù)據(jù)
?????*?@return?JSONObject(通過JSONObject.get(key)的方式獲取json對象的屬性值)
?????*/
????public?static?String?httpRequest(String?requestUrl,?String?requestMethod,?String?outputStr)?{??
????????StringBuffer?buffer?=?new?StringBuffer();??
????????try?{??
????????????//?創(chuàng)建SSLContext對象,并使用我們指定的信任管理器初始化
????????????TrustManager[]?tm?=?{?new?MyX509TrustManager()?};??
????????????SSLContext?sslContext?=?SSLContext.getInstance("SSL",?"SunJSSE");??
????????????sslContext.init(null,?tm,?new?java.security.SecureRandom());??
????????????//?從上述SSLContext對象中得到SSLSocketFactory對象
????????????SSLSocketFactory?ssf?=?sslContext.getSocketFactory();??
????????????URL?url?=?new?URL(requestUrl);??
????????????HttpsURLConnection?httpUrlConn?=?(HttpsURLConnection)?url.openConnection();??
????????????httpUrlConn.setSSLSocketFactory(ssf);??
????????????httpUrlConn.setDoOutput(true);??
????????????httpUrlConn.setDoInput(true);??
????????????httpUrlConn.setUseCaches(false);??
????????????//?設(shè)置請求方式(GET/POST)
????????????httpUrlConn.setRequestMethod(requestMethod);??
????????????if?("GET".equalsIgnoreCase(requestMethod))??
????????????????httpUrlConn.connect();??
????????????//?當(dāng)有數(shù)據(jù)需要提交時(shí)
????????????if?(null?!=?outputStr)?{??
????????????????OutputStream?outputStream?=?httpUrlConn.getOutputStream();??
????????????????//?注意編碼格式,防止中文亂碼
????????????????outputStream.write(outputStr.getBytes("UTF-8"));??
????????????????outputStream.close();??
????????????}??
????????????//?將返回的輸入流轉(zhuǎn)換成字符串
????????????InputStream?inputStream?=?httpUrlConn.getInputStream();??
????????????InputStreamReader?inputStreamReader?=?new?InputStreamReader(inputStream,?"utf-8");??
????????????BufferedReader?bufferedReader?=?new?BufferedReader(inputStreamReader);??
????????????String?str?=?null;??
????????????while?((str?=?bufferedReader.readLine())?!=?null)?{??
????????????????buffer.append(str);??
????????????}??
????????????bufferedReader.close();??
????????????inputStreamReader.close();??
????????????//?釋放資源
????????????inputStream.close();??
????????????inputStream?=?null;??
????????????httpUrlConn.disconnect();??
????????}?catch?(ConnectException?ce)?{??
????????????log.error("Weixin?server?connection?timed?out.");??
????????}?catch?(Exception?e)?{??
????????????log.error("https?request?error:{}",?e);??
????????}??
????????return?buffer.toString();??
????}??
}

?對于https請求,我們需要一個(gè)證書信任管理器,這個(gè)管理器類需要自己定義,但需要實(shí)現(xiàn)X509TrustManager接口,代碼如下:

Java代碼 ?收藏代碼

package?com.zhtx.common.util;??
import?java.security.cert.CertificateException;??
import?java.security.cert.X509Certificate;??
import?javax.net.ssl.X509TrustManager;??
/**
?*?證書信任管理器(用于https請求)
?*?
?*?@author?xinz
?*?@date?2015-10-14
?*/
public?class?MyX509TrustManager?implements?X509TrustManager?{??
????public?void?checkClientTrusted(X509Certificate[]?chain,?String?authType)?throws?CertificateException?{??
????}??
????public?void?checkServerTrusted(X509Certificate[]?chain,?String?authType)?throws?CertificateException?{??
????}??
????public?X509Certificate[]?getAcceptedIssuers()?{??
????????return?null;??
????}??
}

?微信返回參數(shù)的一個(gè)POJO類:

Java代碼 ?收藏代碼

private?String??openid;??//用戶的唯一標(biāo)識(shí)?
private?String??nickname;//用戶昵稱?
private?Integer?sex;//?用戶的性別,值為1時(shí)是男性,值為2時(shí)是女性,值為0時(shí)是未知?
private?String??province;//用戶個(gè)人資料填寫的省份?
private?String??city;//普通用戶個(gè)人資料填寫的城市?
private?String??country;//?國家,如中國為CN?
private?String??headimgurl;??//?用戶頭像,最后一個(gè)數(shù)值代表正方形頭像大?。ㄓ?、46、64、96、132數(shù)值可選,0代表640*640正方形頭像),用戶沒有頭像時(shí)該項(xiàng)為空。若用戶更換頭像,原有頭像URL將失效。?
private?String??privilege;//?用戶特權(quán)信息,json?數(shù)組,如微信沃卡用戶為(chinaunicom)?
private?String??unionid;//?只有在用戶將公眾號(hào)綁定到微信開放平臺(tái)帳號(hào)后,才會(huì)出現(xiàn)該字段。詳見:獲取用戶個(gè)人信息(UnionID機(jī)制)?
private?String?access_token;

?授權(quán)憑證驗(yàn)證的類:

Java代碼 ?收藏代碼

private?String?errcode;??
private?String?errmsg;

?通過code換取網(wǎng)頁授權(quán)access_token

Java代碼 ?收藏代碼

private?String?access_token;??
private?String?expires_in;??
private?String?refresh_token;??
private?String?openid;??
private?String?scope;??
private?String?unionid;

?關(guān)于微信頭像的,獲取的是一個(gè)http的url,則需要將圖片下載到服務(wù)器存儲(chǔ),然后獲得相對路徑:

Java代碼 ?收藏代碼

/**
?????*?使用url或者h(yuǎn)ttp存入文件
?????*?@Title:?fileUpload
?????*?@param?@param?fileUrl??文件url,可以是http
?????*?@param?@param?path?????文件存儲(chǔ)路徑
?????*?@return?void
?????*?@throws?xinz
?????*/
????public?static?void?fileUpload?(String?fileUrl,String?path){??
?????????//讀取文件
??????????String?s1?=?fileUrl;?????
??????????java.io.InputStream?is?=?null;?//定義一個(gè)輸入流。
??????????BufferedInputStream?bis?=?null;//定義一個(gè)帶緩沖的輸入流?。?
????????//寫到本地?
??????????BufferedOutputStream?bos?=?null;?//定義一個(gè)帶緩沖的輸出流。
??????????try{???
????????????java.net.URL?url?=?new?java.net.URL(s1);//創(chuàng)建一個(gè)URL對象。
????????????is?=?url.openStream();//打開到此?URL?的連接并返回一個(gè)用于從該連接讀入的?InputStream。
????????????bis?=?new?java.io.BufferedInputStream(is);???????
????????????File?file?=?new?File(path);?????
????????????if(!file.exists()){?//測試此抽象路徑名表示的文件或目錄是否存在。??
????????????????file.createNewFile();???//創(chuàng)建此抽象路徑名表示的文件或目錄。
????????????}?????
??????????bos?=?new?BufferedOutputStream(new?FileOutputStream(file));;???????
??????????byte[]?b?=?new?byte[1024];?//創(chuàng)建字節(jié)數(shù)組。
??????????while(bis.read(b)!=-1){//輸入流中的數(shù)據(jù)如果還有下一行(!=-1)將繼續(xù)循環(huán)
??????????????bos.write(b);//將字節(jié)數(shù)組寫入輸出流。????
??????????}???
??????????}catch(Exception???e){???????
??????????????System.out.println(e.toString());?????????
??????????}finally{???????
??????????????try{???????
??????????????????bos.flush();//刷新此緩沖的輸出流。?
??????????????????bis.close();?//關(guān)閉此輸入流?。?
??????????????}catch(Exception???e){???????
??????????????????System.out.println(e.toString());?????????
??????????????}???????
??????????}????
????}

現(xiàn)在是基礎(chǔ)工作都做完了,現(xiàn)在開發(fā)代碼的開發(fā),然后我們按照這個(gè)步驟開發(fā):

第一步:用戶同意授權(quán),獲取code

? 這里的url就是前面所準(zhǔn)備在properties中的url了。

Java代碼 ?收藏代碼

/**
?????*?微信用戶授權(quán)
?????*?@Title:?wechatOauth
?????*?@param?@param?request
?????*?@param?@param?response
?????*?@param?@param?model
?????*?@param?@return
?????*?@return?String
?????*?@throws?xinz
?????*/
????@RequestMapping("wechatOauth")??
????public?String?wechatOauth(HttpServletRequest?request,HttpServletResponse?response,Model?model)??{??
????????/**
?????????*??1?第一步:用戶同意授權(quán),獲取code
?????????*/
????????//首先拿到微信公眾號(hào)的AppID、AppSecret等參數(shù)
????????String?AppID?=?ZhtxHelper.getApplicationResourcesProp("sendSms","AppID");??
????????String?urlOpen?=?ZhtxHelper.getApplicationResourcesProp("sendSms","url");??
????????//如果用戶授權(quán)成功則跳轉(zhuǎn)到此url
????????String?loginUrl?=?""+urlOpen+"/zhtx-wap/weixin/getAccessToken";??
????????//用戶授權(quán),獲取code
????????String?url?=?"https://open.weixin.qq.com/connect/oauth2/authorize?"
????????????????????+?"appid="+AppID+""
????????????????????+?"&redirect_uri="+loginUrl+""
????????????????????+?"&response_type=code"
????????????????????+?"&scope=snsapi_userinfo"
????????????????????+?"&state=123#wechat_redirect";??
????????//forward?redirect
????????return?"redirect:"+url+"";???
????}

第二步:通過code換取網(wǎng)頁授權(quán)access_token

Java代碼 ?收藏代碼

/**
?????*?通過code換取網(wǎng)頁授權(quán)access_token
?????*?@Title:?getAccessToken
?????*?@param?@param?request
?????*?@param?@param?response
?????*?@param?@param?model
?????*?@param?@return
?????*?@return?String
?????*?@throws?xinz
?????*/
????@RequestMapping("getAccessToken")??
????public?String?getAccessToken(HttpServletRequest?request,HttpServletResponse?response,Model?model)?{??
????????//獲取到返回的參數(shù)
????????try?{??
????????????//首先拿到微信公眾號(hào)的AppID、AppSecret等參數(shù)
????????????String?AppID?=?ZhtxHelper.getApplicationResourcesProp("sendSms","AppID");??
????????????String?AppSecret?=?ZhtxHelper.getApplicationResourcesProp("sendSms","AppSecret");??
????????????String?code?=?request.getParameter("code");??
????????????String?url?=?null;??
????????????if(code!=null){??
????????????????/**
?????????????????*??2?第二步:通過code換取網(wǎng)頁授權(quán)access_token
?????????????????*/
????????????????//用戶授權(quán),獲取code
????????????????url?=?"https://api.weixin.qq.com/sns/oauth2/access_token?"
????????????????????????+?"appid="+AppID+""
????????????????????????+?"&secret="+AppSecret+""
????????????????????????+?"&code="+code+""
????????????????????????+?"&grant_type=authorization_code";??
????????????????String?requestMethod?=?"GET";??
????????????????String?outputStr?=?"";??
????????????????String?httpRequest?=?WeixinUtil.httpRequest(url,?requestMethod,?outputStr);??
????????????????System.out.println("通過code換取網(wǎng)頁授權(quán)access_token="+httpRequest);??
????????????????AccessTokenModel?accTok?=?JSON.parseObject(httpRequest,?AccessTokenModel.class);??
????????????????/**
?????????????????*??4?第四步:拉取用戶信息(需scope為?snsapi_userinfo)
?????????????????*/
????????????????//用戶授權(quán),獲取code
????????????????String?urlUser?=?"https://api.weixin.qq.com/sns/userinfo?"
????????????????????????+?"access_token="+accTok.getAccess_token()+""
????????????????????????+?"&openid="+accTok.getOpenid()+""
????????????????????????+?"&lang=zh_CN";??
????????????????String?httpUser?=?WeixinUtil.httpRequest(urlUser,?requestMethod,?outputStr);??
????????????????System.out.println("拉取用戶信息=="+httpUser);??
????????????????WechatUser?wechatUser?=?JSON.parseObject(httpUser,?WechatUser.class);??
????????????????wechatUser.setAccess_token(accTok.getAccess_token());??
????????????????/**
?????????????????*??5?附:檢驗(yàn)授權(quán)憑證(access_token)是否有效
?????????????????*/
????????????????WechatMsg?checkAccessToken?=?checkAccessToken(wechatUser.getAccess_token(),?wechatUser.getOpenid());??
????????????????if(checkAccessToken.getErrcode().equals("0")){??
????????????????????CurrentSession.setAttribute("wechatUser",?wechatUser);??
????????????????????WechatUser?wechatU?=?new?WechatUser();??
????????????????????wechatU.setOpenid(wechatUser.getOpenid());??
????????????????????List<WechatUser>?findWechatUser?=?wechatUserService.findWechatUser(wechatU);??
????????????????????if(findWechatUser.size()>0){??
????????????????????????UserRegister?userRegister?=?userService.findUserByOpenid(wechatUser.getOpenid());??
????????????????????????CurrentSession.setAttribute("user",?userRegister);??
????????????????????????return?"redirect:/user/userCenter";??
????????????????????}else{??
????????????????????????return?"/jsp/wechat/wechatregister";???
????????????????????}??
????????????????}else{??
????????????????????//如果access_token失效,則再次進(jìn)行調(diào)用,并存儲(chǔ)access_token值,access_token有效期為2個(gè)小時(shí)
????????????????????this.wechatOauth(request,?response,?model);???
????????????????}??
????????????}??
????????}?catch?(Exception?e)?{??
????????????System.out.println("===拉取用戶出錯(cuò)===");??
????????????e.printStackTrace();??
????????}??
????????//forward?redirect
????????return?"/jsp/wechat/wechatregister";???
????}

第四步:拉取用戶,和自己網(wǎng)站用戶綁定

Java代碼 ?收藏代碼

/**
?????*?微信關(guān)聯(lián)用戶
?????*?@Title:?saveWechatUser
?????*?@param?@param?mobilePhone
?????*?@param?@param?password
?????*?@param?@param?validataCode
?????*?@param?@return
?????*?@return?String
?????*?@throws?xinz
?????*/
????@RequestMapping("saveWechatUser")??
????public?String?saveWechatUser(HttpServletResponse?response,String?mobilePhone,String?password,String?validataCode){??
????????//使用手機(jī)號(hào)來判斷該手機(jī)是否在注冊
????????UserRegister?userRegister?=?userService.findUserByPhone(mobilePhone);??
????????WechatUser?wechatUser?=?(WechatUser)CurrentSession.getAttribute("wechatUser");??
????????WechatUser?wechatU?=?new?WechatUser();??
????????wechatU.setOpenid(wechatUser.getOpenid());??
????????List<WechatUser>?findWechatUser?=?wechatUserService.findWechatUser(wechatU);??
????????if(findWechatUser.size()>0?&&?userRegister.getOpenid()!=null){??
????????????CurrentSession.setAttribute("user",?userRegister);??
????????????return?"redirect:/user/userCenter";??
????????}else{??
????????????//如果沒有注冊,開始注冊
????????????if(userRegister==null){??
????????????????Result<UserRegister>?saveUserInfoApp?=?userRegisterService.saveUserInfoApp(mobilePhone,?password,?validataCode,wechatUser);??
????????????????if(saveUserInfoApp.getState()==1){??
????????????????????//進(jìn)行微信和用戶的關(guān)聯(lián)
????????????????????wechatUserService.saveWechatUser(wechatUser);??
????????????????????CurrentSession.setAttribute("user",?userRegister);??
????????????????????return?"redirect:/user/userCenter";??
????????????????}??
????????????}else?if(userRegister.getOpenid()==null?||?userRegister.getOpenid().equals("")){??
????????????//否則,查詢出用戶信息,放入session中,關(guān)聯(lián)微信,跳轉(zhuǎn)到用戶中心????
????????????????UserRegister?userReg?=?new?UserRegister();??
????????????????userReg.setId(userRegister.getId());??
????????????????//存入微信openid
????????????????userReg.setOpenid(wechatUser.getOpenid());??
????????????????userService.upUser(userReg);??
????????????????UserInfo?user?=?new?UserInfo();??
????????????????//存入微信頭像
????????????????//圖片類型
????????????????String?dateStr?=DateUtil.format(DateUtil.getCurrentDate(),?"yyyyMMdd")??+?"/";??
????????????????//圖片類型
????????????????String?imgType?=?"JPG";??
????????????????//微信頭像名稱
????????????????String?app2DBarNameAndType?=?UuidUtil.getUUID()+"."+imgType;??
????????????????//微信頭像路徑
????????????????String?path?=???ZhtxHelper.getApplicationResourcesProp("application","app.img.projectpath")+?SysConstant.GOODS2DBARPATH?+?dateStr;??
????????????????File?file1?=?new?File(path);??
????????????????file1.mkdirs();??
????????????????//圖片全路徑
????????????????String?imgUrl?=?SysConstant.GOODS2DBARPATH?+?dateStr+app2DBarNameAndType;??
????????????????FileUtil.fileUpload(wechatUser.getHeadimgurl(),?path);??
????????????????user.setRegisterId(userRegister.getId());??
????????????????user.setImageUrl(imgUrl);??
????????????????userInfoService.updateUserInfo(user);??
????????????????//存入微信用戶
????????????????wechatUserService.saveWechatUser(wechatUser);??
????????????????UserRegister?userW?=?userService.findUserByPhone(mobilePhone);??
????????????????CurrentSession.setAttribute("user",?userW);??
????????????????return?"redirect:/user/userCenter";??
????????????}else{??
????????????????CurrentSession.setAttribute("user",?userRegister);??
????????????????return?"redirect:/user/userCenter";??
????????????}??
????????}??
????????return?"redirect:/user/userCenter";??
????}

附:檢驗(yàn)授權(quán)憑證(access_token)是否有效

Java代碼 ?收藏代碼

/**
?????*?檢驗(yàn)授權(quán)憑證(access_token)是否有效
?????*?@Title:?checkAccessToken
?????*?@param?@param?access_token?網(wǎng)頁授權(quán)接口調(diào)用憑證,注意:此access_token與基礎(chǔ)支持的access_token不同?
?????*?@param?@param?openid?用戶的唯一標(biāo)識(shí)?
?????*?@return?WechatMsg???返回消息實(shí)體
?????*?@throws?xinz
?????*/
????public?static?WechatMsg?checkAccessToken(String?access_token,String?openid){??
?????????String?requestMethod?=?"GET";??
?????????String?outputStr?=?"";???
?????????String?url?=?"https://api.weixin.qq.com/sns/auth?"
????????????????+?"access_token="+access_token+""
????????????????+?"&openid="+openid+"";??
?????????String?httpmsg?=?WeixinUtil.httpRequest(url,?requestMethod,?outputStr);??
?????????System.out.println("拉取用戶信息返回消息=="+httpmsg);??
?????????WechatMsg?msg?=?JSON.parseObject(httpmsg,?WechatMsg.class);??
?????????return?msg;??
????}

?然后在網(wǎng)頁端,則是需要編寫H5頁面,進(jìn)行自己網(wǎng)站和微信用戶的關(guān)聯(lián),我這里是使用手機(jī)號(hào),用戶輸入手機(jī)號(hào),進(jìn)行判斷,如果注冊過就直接關(guān)聯(lián),如果用戶沒有注冊則進(jìn)行注冊后關(guān)聯(lián),完成后跳轉(zhuǎn)到會(huì)員中心。

?
詳解微信開發(fā)模式之自定義菜單實(shí)現(xiàn)代碼
?

Atas ialah kandungan terperinci 詳解微信開發(fā)模式之自定義菜單實(shí)現(xiàn)代碼. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276
Pembangunan PHP WeChat: Bagaimana untuk melaksanakan penyulitan dan penyahsulitan mesej Pembangunan PHP WeChat: Bagaimana untuk melaksanakan penyulitan dan penyahsulitan mesej May 13, 2023 am 11:40 AM

PHP ialah bahasa skrip sumber terbuka yang digunakan secara meluas dalam pembangunan web dan pengaturcaraan sisi pelayan, terutamanya dalam pembangunan WeChat. Hari ini, semakin banyak syarikat dan pembangun mula menggunakan PHP untuk pembangunan WeChat kerana ia telah menjadi bahasa pembangunan yang benar-benar mudah dipelajari dan mudah digunakan. Dalam pembangunan WeChat, penyulitan dan penyahsulitan mesej merupakan isu yang sangat penting kerana ia melibatkan keselamatan data. Untuk mesej tanpa kaedah penyulitan dan penyahsulitan, penggodam boleh mendapatkan data dengan mudah, menimbulkan ancaman kepada pengguna.

Pembangunan PHP WeChat: Bagaimana untuk melaksanakan fungsi pengundian Pembangunan PHP WeChat: Bagaimana untuk melaksanakan fungsi pengundian May 14, 2023 am 11:21 AM

Dalam pembangunan akaun awam WeChat, fungsi pengundian sering digunakan. Fungsi undian ialah cara yang bagus untuk pengguna mengambil bahagian dalam interaksi dengan pantas, dan ia juga merupakan alat penting untuk mengadakan acara dan meninjau pendapat. Artikel ini akan memperkenalkan anda cara menggunakan PHP untuk melaksanakan fungsi undian WeChat. Dapatkan kebenaran akaun rasmi WeChat Pertama, anda perlu mendapatkan kebenaran akaun rasmi WeChat. Pada platform awam WeChat, anda perlu mengkonfigurasi alamat API akaun awam WeChat, akaun rasmi dan token yang sepadan dengan akaun awam. Dalam proses pembangunan kami menggunakan bahasa PHP, kami perlu menggunakan PH yang disediakan secara rasmi oleh WeChat

Menggunakan PHP untuk membangunkan alat pemesejan massa WeChat Menggunakan PHP untuk membangunkan alat pemesejan massa WeChat May 13, 2023 pm 05:00 PM

Dengan populariti WeChat, semakin banyak syarikat mula menggunakannya sebagai alat pemasaran. Fungsi pemesejan kumpulan WeChat ialah salah satu cara penting bagi perusahaan untuk menjalankan pemasaran WeChat. Walau bagaimanapun, jika anda hanya bergantung pada penghantaran manual, ia adalah tugas yang sangat memakan masa dan susah payah untuk pemasar. Oleh itu, adalah amat penting untuk membangunkan alat pemesejan massa WeChat. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan alat penghantaran massa WeChat. 1. Kerja penyediaan Untuk membangunkan alat pemesejan massa WeChat, kita perlu menguasai perkara teknikal berikut: Pengetahuan asas PHP WeChat alat pembangunan platform awam: Sub

Pembangunan PHP WeChat: Bagaimana untuk melaksanakan pengurusan tetingkap sembang perkhidmatan pelanggan Pembangunan PHP WeChat: Bagaimana untuk melaksanakan pengurusan tetingkap sembang perkhidmatan pelanggan May 13, 2023 pm 05:51 PM

WeChat kini merupakan salah satu platform sosial dengan pangkalan pengguna terbesar di dunia Dengan populariti Internet mudah alih, semakin banyak syarikat mula menyedari kepentingan pemasaran WeChat. Apabila menjalankan pemasaran WeChat, perkhidmatan pelanggan adalah bahagian yang penting. Untuk mengurus tetingkap sembang perkhidmatan pelanggan dengan lebih baik, kami boleh menggunakan bahasa PHP untuk pembangunan WeChat. 1. Pengenalan kepada pembangunan PHP WeChat PHP ialah bahasa skrip bahagian pelayan sumber terbuka yang digunakan secara meluas dalam bidang pembangunan Web. Digabungkan dengan antara muka pembangunan yang disediakan oleh platform awam WeChat, kami boleh menggunakan bahasa PHP untuk menjalankan WeChat

Pembangunan PHP WeChat: Bagaimana untuk melaksanakan pengurusan tag pengguna Pembangunan PHP WeChat: Bagaimana untuk melaksanakan pengurusan tag pengguna May 13, 2023 pm 04:31 PM

Dalam pembangunan akaun awam WeChat, pengurusan tag pengguna ialah fungsi yang sangat penting, yang membolehkan pembangun memahami dan mengurus pengguna mereka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pengurusan teg pengguna WeChat. 1. Dapatkan openid pengguna WeChat Sebelum menggunakan fungsi pengurusan tag pengguna WeChat, kita perlu mendapatkan openid pengguna terlebih dahulu. Dalam pembangunan akaun awam WeChat, adalah amalan biasa untuk mendapatkan openid melalui kebenaran pengguna. Selepas kebenaran pengguna selesai, kami boleh mendapatkan pengguna melalui kod berikut

Pembangunan PHP WeChat: Bagaimana untuk melaksanakan rekod penghantaran mesej kumpulan Pembangunan PHP WeChat: Bagaimana untuk melaksanakan rekod penghantaran mesej kumpulan May 13, 2023 pm 04:31 PM

Memandangkan WeChat menjadi alat komunikasi yang semakin penting dalam kehidupan orang ramai, fungsi pemesejan tangkasnya digemari oleh sebilangan besar perusahaan dan individu. Bagi perusahaan, membangunkan WeChat menjadi platform pemasaran telah menjadi trend, dan kepentingan pembangunan WeChat secara beransur-ansur menjadi lebih menonjol. Antaranya, fungsi penghantaran kumpulan lebih banyak digunakan Jadi, sebagai pengaturcara PHP, bagaimana untuk melaksanakan rekod penghantaran mesej kumpulan? Berikut akan memberi anda pengenalan ringkas. 1. Memahami pengetahuan pembangunan yang berkaitan dengan akaun awam WeChat Sebelum memahami cara melaksanakan rekod penghantaran mesej kumpulan, I

Langkah untuk melaksanakan pembangunan akaun awam WeChat menggunakan PHP Langkah untuk melaksanakan pembangunan akaun awam WeChat menggunakan PHP Jun 27, 2023 pm 12:26 PM

Cara menggunakan PHP untuk membangunkan akaun awam WeChat Akaun awam WeChat telah menjadi saluran penting untuk promosi dan interaksi bagi banyak syarikat, dan PHP, sebagai bahasa Web yang biasa digunakan, juga boleh digunakan untuk membangunkan akaun awam WeChat. Artikel ini akan memperkenalkan langkah khusus untuk menggunakan PHP untuk membangunkan akaun awam WeChat. Langkah 1: Dapatkan akaun pembangun akaun rasmi WeChat Sebelum memulakan pembangunan akaun rasmi WeChat, anda perlu memohon akaun pembangun akaun rasmi WeChat. Untuk proses pendaftaran khusus, sila rujuk laman web rasmi platform awam WeChat

Bagaimana untuk menggunakan PHP untuk pembangunan WeChat? Bagaimana untuk menggunakan PHP untuk pembangunan WeChat? May 21, 2023 am 08:37 AM

Dengan pembangunan Internet dan peranti pintar mudah alih, WeChat telah menjadi bahagian yang amat diperlukan dalam bidang sosial dan pemasaran. Dalam era yang semakin digital ini, cara menggunakan PHP untuk pembangunan WeChat telah menjadi tumpuan ramai pembangun. Artikel ini terutamanya memperkenalkan mata pengetahuan yang berkaitan tentang cara menggunakan PHP untuk pembangunan WeChat, serta beberapa petua dan langkah berjaga-jaga. 1. Persediaan persekitaran pembangunan Sebelum membangunkan WeChat, anda perlu menyediakan persekitaran pembangunan yang sepadan terlebih dahulu. Secara khusus, anda perlu memasang persekitaran operasi PHP dan platform awam WeChat

See all articles