微信テンプレートメッセージ送信
4062 ワード
開発プロセス全体で、私は「簡書」で完全な開発プロセスを見ました.
https://www.jianshu.com/p/eb0e9c4dcdfe
WeChatの公式インタフェースは次のとおりです.
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277
自己開発でまとめてみましたが、以下のようにして、後続の調査に便利です.
1微信のテンプレートメッセージは、実は微信の公衆番号にユーザーにプッシュされたメッセージ記録である.
開発時には、ユーザのopenId(ユーザが公衆番号に注目すると一意のopenIdが生成される)を取得し、openIdによって対応するユーザにプッシュすることで、ユーザがこのメッセージを受信できるようにする必要がある.
②サブスクリプション番号は、「テンプレートメッセージ」のインタフェース権限を取得するためにサービス番号にアップグレードする必要があり、認証を取得する必要があります.(サービス番号接続機能はもっと多いですが、群発メッセージは購読番号の毎日1本から1ヶ月4本になりました.)
③テンプレートメッセージを開設する際には、2つの業界を選択し、毎月1回しか修正できません.テンプレートを検索して、汎用テンプレートを直接使用することができます.カスタムテンプレートが必要な場合は、自分で申請する必要があります.
④微信公衆番号のtokenIdは、有効期間が2時間しかないので、タイマーで1時間50分ごとに取得するとともに、プログラムの起動が完了した後に取得する必要があります.
⑤システムユーザ登録時にオープンIDがあるか否かを判断し、ない場合はオープンIDを取得する.(我々OAシステムは微信公衆番号に開発されているので、ユーザーがシステムに登録する前から公衆番号に注目していました)
ログインインタフェースの呼び出しに成功した後、トップページインタフェースを呼び出し、インタフェースでopenIdがないと判断したら、Aインタフェース(微信が必要とするインタフェースからopenIdを取得し、テーブルに格納する)にジャンプし、Aインタフェースは最後に再びトップページを要求し、この時すでにOpenIdがあったので、トップページの内容を直接展示する.
すべてのカンマをセミコロンに置換
https://www.jianshu.com/p/eb0e9c4dcdfe
WeChatの公式インタフェースは次のとおりです.
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277
自己開発でまとめてみましたが、以下のようにして、後続の調査に便利です.
1微信のテンプレートメッセージは、実は微信の公衆番号にユーザーにプッシュされたメッセージ記録である.
開発時には、ユーザのopenId(ユーザが公衆番号に注目すると一意のopenIdが生成される)を取得し、openIdによって対応するユーザにプッシュすることで、ユーザがこのメッセージを受信できるようにする必要がある.
②サブスクリプション番号は、「テンプレートメッセージ」のインタフェース権限を取得するためにサービス番号にアップグレードする必要があり、認証を取得する必要があります.(サービス番号接続機能はもっと多いですが、群発メッセージは購読番号の毎日1本から1ヶ月4本になりました.)
③テンプレートメッセージを開設する際には、2つの業界を選択し、毎月1回しか修正できません.テンプレートを検索して、汎用テンプレートを直接使用することができます.カスタムテンプレートが必要な場合は、自分で申請する必要があります.
④微信公衆番号のtokenIdは、有効期間が2時間しかないので、タイマーで1時間50分ごとに取得するとともに、プログラムの起動が完了した後に取得する必要があります.
⑤システムユーザ登録時にオープンIDがあるか否かを判断し、ない場合はオープンIDを取得する.(我々OAシステムは微信公衆番号に開発されているので、ユーザーがシステムに登録する前から公衆番号に注目していました)
ログインインタフェースの呼び出しに成功した後、トップページインタフェースを呼び出し、インタフェースでopenIdがないと判断したら、Aインタフェース(微信が必要とするインタフェースからopenIdを取得し、テーブルに格納する)にジャンプし、Aインタフェースは最後に再びトップページを要求し、この時すでにOpenIdがあったので、トップページの内容を直接展示する.
:
① loginController login_login_wechat
weixin_index
/** ·
* @param changeMenu:
* @return
*/
@RequestMapping(value="/weixin_index")
public ModelAndView login_weixin_index(HttpServletRequest request,HttpServletResponse response){
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
try{
Session session = Jurisdiction.getSession();
User user = (User)session.getAttribute(Const.sessionUser); // session ( )
if (user != null && user.getRole()!=null && !user.getRole().getRights().trim().equals("")) {
session.setAttribute(Const.sessionUserName, user.getUserName()); // session
this.getRemortIP(user.getUserName()); // IP
mv.setViewName("weixin/index/main");
mv.addObject("user", user);
/*
* , openId , openId TODO
*/
// String weixinOpenId = user.getWeixinOpenId();
// if(Tools.isEmpty(weixinOpenId)){
// String ssString = WechatUtils.getUserAuthURL(true,
// weixinConstant.wReturnPrefix + request.getContextPath()
// + "/wechatLoginNoOpenId.do","0");
// response.sendRedirect(ssString);
// }
// ·
String userId = user.getId();
List todoList = new ArrayList<>();
//
}else {
mv.setViewName("weixin/index/login");//session
}
} catch(Exception e){
mv.setViewName("weixin/index/login");
logger.error(e.getMessage(), e);
}
mv.addObject("pd",pd);
return mv;
}
/**
* , openId
* @return
*/
@RequestMapping(value="/wechatLoginNoOpenId")
@ResponseBody
public void wechatLoginNoOpenId(HttpServletRequest request,HttpServletResponse response){
try {
String code = ServletRequestUtils.getStringParameter(request, "code");
String result = WechatUtils.getUserOpenId(code);
if (result != null) {
JSONObject jSONObject = JSONObject.fromObject(result);
String openId = jSONObject.getString("openid");
System.err.println("====================== openId:"+openId);
User user =(User)Jurisdiction.getSession().getAttribute(Const.sessionUser);
user.setWeixinOpenId(openId);
userService.editU(user);
// , openId
response.sendRedirect(weixinConstant.wReturnPrefix + request.getContextPath()
+ "/weixin_index.do");
}
} catch (Exception e) {
e.printStackTrace();
}
}
web.xml
tokenId。
, InformController.java goSend
WechatUtils.java main 。
すべてのカンマをセミコロンに置換
"lijianbo,yangmi,li".replace(/,/g, ";" );