Springbootは微信メッセージプッシュを実現し、javaは小プログラムプッシュを実現し、小プログラム端実現コードを含む
11296 ワード
最近は微信やウィジェットのプッシュ機能の開発が必要で、javaのバックグラウンドでプッシュを実現する必要があり、自分自身javaもウィジェットもやっているので、自分でウィジェットのテンプレートプッシュ機能を実現します.
実現構想.1ウィジェットはユーザopenidを取得し、収集formidはjavaバックグラウンド に伝達する.2 javaは、指定するウィジェットユーザ にメッセージをプッシュする.
いつものルールでは、まず効果図を見ます.
私のこれはランニングマンのプッシュで、ユーザーが新しく注文したとき、ランニングマンにメッセージをプッシュします.
実装手順について説明します
一、微信小プログラム管理バックグラウンド開通モデルプッシュ
ここのテンプレートidはとても重要で、次に私たちが送ったのはすべてこのテンプレートです.
二、javaバックグラウンドのプッシュを実現するために必要なフィールド1微信公式プッシュメッセージを見るために必要なフィールド 2に公式の説明がありました.私のドアはこれから公式に必要なこれらのフィールドを手に入れて、要求データを組み立てることができます.
三、次に実現手順を説明する
私のjavaバックグラウンドはspringbootに基づいて開発されています.spring bootを知らない場合は、springbootを理解してから帰ってから勉強することをお勧めします.また、RestTemplateはjavaバックグラウンドでgetとpostリクエストを行うために必要です.私たちは微信サーバーとインタラクティブにRestTemplateを使用しています.1まず公式プッシュに必要なフィールドに基づいてjava-beanを組み立てるここでは2つのjavabean を用いる.
ここまでプッシュを要求したデータが組み立てられているので、解いてプッシュ機能を実現します.いいえ、もう一つ重要なフィールドがあります.access_token
access_tokenの取得
今回は本格的に微信サーバにメッセージ配信を依頼できるようになりました
Openidは、小さなプログラム開発者に伝えたり、自分で取得したりすることができます.formidは小さなプログラム開発が必要です.formidをデータベースに保存して、いつ直接取り出す必要がありますか.注意:formidはユーザーopenidに対応する必要があります.
以下に完全なコードを貼り付けます
WxPushServiceQclクラスのpushOneUserメソッドをプッシュする必要がある場所で呼び出し、openid、formidパラメータを入力します.これは私がプッシュに成功して印刷したロゴです.
次に、小さなプログラム開発には何が必要ですか.
我々のformidの有効期間は7日間であり、form_idは一度しか使えないので、私たちの小さなプログラム側がしなければならないのは、できるだけformidを多く持って、バックグラウンドに伝えて、バックグラウンドをデータベースに保存して、このように7日間の有効期間内に、どのように使いたいのかを伝えることです.
だから次にお話しするのは、小さなプログラム開発がどのようにしてformidをできるだけ多く手に入れたのかということです.
公式に提供されているのは、フォームの提出時にreport-submitをtrueに設定した場合にのみformidがもらえます.例えば、
だから私たちはここで工夫しなければなりません.formコンポーネントでしか入手できない以上、私たちの小さなプログラムで最も多くの場所をformで偽装することができますか.私の小さいプログラムはランニングの小さいプログラムで、ニュースも主にランニングマンにプッシュして、ランニングマンが最もクリックするのはこの2つの項目です.だから私たちはfromコンポーネントでこの2つの項目を偽装して、ユーザーがクリックすると同時に使用するformidを集めることができます.
これにより、ユーザがエントリをクリックすると、ユーザformidが収集されます.上のbottonにはデフォルトスタイルがあるので、cssを変更することでbottonデフォルトスタイルを除去します.
ここまで来て、私たちの小さなプログラムも円満に自分の任務を完成しました.
知識点を補う.ウィジェット開発ユーザーopenid の取得方法
これによりjavaバックグラウンドとウィジェット開発は、微信ウィジェットのメッセージプッシュ機能を楽しく完成させることができます.
Javaまたはウィジェットに関する問題があれば、私の微信交流学習2501902696(注釈ウィジェットまたはjava)を加えることができます.
転載先:https://juejin.im/post/5b9760375188255c54428e8c
実現構想.
いつものルールでは、まず効果図を見ます.
私のこれはランニングマンのプッシュで、ユーザーが新しく注文したとき、ランニングマンにメッセージをプッシュします.
実装手順について説明します
一、微信小プログラム管理バックグラウンド開通モデルプッシュ
ここのテンプレートidはとても重要で、次に私たちが送ったのはすべてこのテンプレートです.
二、javaバックグラウンドのプッシュを実現するために必要なフィールド
三、次に実現手順を説明する
私のjavaバックグラウンドはspringbootに基づいて開発されています.spring bootを知らない場合は、springbootを理解してから帰ってから勉強することをお勧めします.また、RestTemplateはjavaバックグラウンドでgetとpostリクエストを行うために必要です.私たちは微信サーバーとインタラクティブにRestTemplateを使用しています.
/*
*
* qcl :2501902696
* */
@Data
public class WxMssVo {
private String touser;// openid
private String template_id;// id
private String page = "index";//
private String form_id;// formid
private String emphasis_keyword = "keyword1.DATA";//
private Map data;//
}
/*
*
* qcl :2501902696
* */
@Data
public class TemplateData {
//keyword1: ,keyword2: ,keyword3: ,keyword4: ,keyword5
private String value;//,,
// private String color;// ( , )
}
ここまでプッシュを要求したデータが組み立てられているので、解いてプッシュ機能を実現します.いいえ、もう一つ重要なフィールドがあります.access_token
access_tokenの取得
/*
* access_token
* appid appsecret ,
* */
public String getAccess_token(String appid, String appsecret) {
// access_token
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" +
"&appid=" + appid + "&secret=" + appsecret;
String json = restTemplate.getForObject(url, String.class);
AccessToken accessToken = new Gson().fromJson(json, AccessToken.class);
return accessToken.getAccess_token();
}
今回は本格的に微信サーバにメッセージ配信を依頼できるようになりました
/*
*
* */
public String pushOneUser(String openid, String formid) {
// access_token
String access_token = getAccess_token(ConstantUtils.SCHOOL_APPID, ConstantUtils.SCHOOL_APPSECRET);
String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send" +
"?access_token=" + access_token;
//
WxMssVo wxMssVo = new WxMssVo();
wxMssVo.setTouser(openid);// openid
wxMssVo.setTemplate_id("LzeDP0G5PLgHoOjCMfhu44wfUluhW11Zeezu3r_dC24");// id
wxMssVo.setForm_id(formid);//formid
Map m = new HashMap<>(5);
//keyword1: ,keyword2: ,keyword3: ,keyword4: ,keyword5
TemplateData keyword1 = new TemplateData();
keyword1.setValue(" ");
m.put("keyword1", keyword1);
TemplateData keyword2 = new TemplateData();
keyword2.setValue(" ");
m.put("keyword2", keyword2);
wxMssVo.setData(m);
TemplateData keyword3 = new TemplateData();
keyword3.setValue(" ");
m.put("keyword3", keyword3);
wxMssVo.setData(m);
TemplateData keyword4 = new TemplateData();
keyword4.setValue(" ");
m.put("keyword4", keyword4);
wxMssVo.setData(m);
TemplateData keyword5 = new TemplateData();
keyword5.setValue(" ");
m.put("keyword5", keyword5);
wxMssVo.setData(m);
ResponseEntity responseEntity =
restTemplate.postForEntity(url, wxMssVo, String.class);
log.error(" ={}", responseEntity.getBody());
return responseEntity.getBody();
}
Openidは、小さなプログラム開発者に伝えたり、自分で取得したりすることができます.formidは小さなプログラム開発が必要です.formidをデータベースに保存して、いつ直接取り出す必要がありますか.注意:formidはユーザーopenidに対応する必要があります.
以下に完全なコードを貼り付けます
package com.qcl.paotuischool.wechat;
import com.google.gson.Gson;
import com.qcl.userwechat.bean.AccessToken;
import com.qcl.utils.ConstantUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
/**
* Created by qcl on 2018/9/11.
* ,
* access_token
*/
@Service
@Slf4j
public class WxPushServiceQcl {
// get post
@Autowired
private RestTemplate restTemplate;
/*
*
* */
public String pushOneUser(String openid, String formid) {
// access_token
String access_token = getAccess_token(ConstantUtils.SCHOOL_APPID, ConstantUtils.SCHOOL_APPSECRET);
String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send" +
"?access_token=" + access_token;
//
WxMssVo wxMssVo = new WxMssVo();
wxMssVo.setTouser(openid);// openid
wxMssVo.setTemplate_id("LzeDP0G5PLgHoOjCMfhu44wfUluhW11Zeezu3r_dC24");// id
wxMssVo.setForm_id(formid);//formid
Map m = new HashMap<>(5);
//keyword1: ,keyword2: ,keyword3: ,keyword4: ,keyword5
TemplateData keyword1 = new TemplateData();
keyword1.setValue(" ");
m.put("keyword1", keyword1);
TemplateData keyword2 = new TemplateData();
keyword2.setValue(" ");
m.put("keyword2", keyword2);
wxMssVo.setData(m);
TemplateData keyword3 = new TemplateData();
keyword3.setValue(" ");
m.put("keyword3", keyword3);
wxMssVo.setData(m);
TemplateData keyword4 = new TemplateData();
keyword4.setValue(" ");
m.put("keyword4", keyword4);
wxMssVo.setData(m);
TemplateData keyword5 = new TemplateData();
keyword5.setValue(" ");
m.put("keyword5", keyword5);
wxMssVo.setData(m);
ResponseEntity responseEntity =
restTemplate.postForEntity(url, wxMssVo, String.class);
log.error(" ={}", responseEntity.getBody());
return responseEntity.getBody();
}
/*
* access_token
* appid appsecret ,
* */
public String getAccess_token(String appid, String appsecret) {
// access_token
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" +
"&appid=" + appid + "&secret=" + appsecret;
String json = restTemplate.getForObject(url, String.class);
AccessToken accessToken = new Gson().fromJson(json, AccessToken.class);
return accessToken.getAccess_token();
}
}
WxPushServiceQclクラスのpushOneUserメソッドをプッシュする必要がある場所で呼び出し、openid、formidパラメータを入力します.これは私がプッシュに成功して印刷したロゴです.
次に、小さなプログラム開発には何が必要ですか.
我々のformidの有効期間は7日間であり、form_idは一度しか使えないので、私たちの小さなプログラム側がしなければならないのは、できるだけformidを多く持って、バックグラウンドに伝えて、バックグラウンドをデータベースに保存して、このように7日間の有効期間内に、どのように使いたいのかを伝えることです.
だから次にお話しするのは、小さなプログラム開発がどのようにしてformidをできるだけ多く手に入れたのかということです.
公式に提供されているのは、フォームの提出時にreport-submitをtrueに設定した場合にのみformidがもらえます.例えば、
だから私たちはここで工夫しなければなりません.formコンポーネントでしか入手できない以上、私たちの小さなプログラムで最も多くの場所をformで偽装することができますか.私の小さいプログラムはランニングの小さいプログラムで、ニュースも主にランニングマンにプッシュして、ランニングマンが最もクリックするのはこの2つの項目です.だから私たちはfromコンポーネントでこの2つの項目を偽装して、ユーザーがクリックすると同時に使用するformidを集めることができます.
'button_item'>
'right_arrow' />
これにより、ユーザがエントリをクリックすると、ユーザformidが収集されます.上のbottonにはデフォルトスタイルがあるので、cssを変更することでbottonデフォルトスタイルを除去します.
.button_item {
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
padding: 2px 20px;
background: white;
border-bottom: 1px solid gainsboro;
}
/* botton */
.button {
width: 100%;
background: white;
border: none;
text-align: left;
padding: 6px 0px;
margin: 0px;
line-height: 1.5;
}
/* botton */
.button::after {
border: none;
}
/* button formid */
.form_item {
width: 100%;
}
ここまで来て、私たちの小さなプログラムも円満に自分の任務を完成しました.
知識点を補う.
これによりjavaバックグラウンドとウィジェット開発は、微信ウィジェットのメッセージプッシュ機能を楽しく完成させることができます.
Javaまたはウィジェットに関する問題があれば、私の微信交流学習2501902696(注釈ウィジェットまたはjava)を加えることができます.
転載先:https://juejin.im/post/5b9760375188255c54428e8c