小微商户升级接口通过成为特约商户,怎么修改特约商户的行业类目,是否有接口?
小程序内容中的敏感词过滤是否只能用微信提供的接口?小程序中发布的内容的敏感内容过滤是不是只能采用微信自带的内容安全接口? https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.msgSecCheck.html 是否可以采用自己实现的或者其他的敏感词过滤接口?
2019-12-16楼主,你这边的问题解决了吗
怎么解决调用订阅API时OpenId无效的问题?我的openId是从后端服务器获取下来的,调用其他API用这个openid都没有问题,但是当我调用“发送订阅消息”API的时候就会报“40003,invalid openid hint: [iP0pua02568648]”,我用“微信公众平台接口调试工具”调试还是会报相同的错误,请各位指教! access_token确认没有问题 OpenId确认没有问题 appKey确认没有问题 小程序目前处于开发阶段,没有上线 [图片] 这我发送订阅消息的服务端代码 [代码]package[代码] [代码]com.yuezhi.controller.wxsmallapppush;[代码] [代码]import[代码] [代码]com.alibaba.fastjson.JSON;[代码][代码]import[代码] [代码]com.alibaba.fastjson.JSONException;[代码][代码]import[代码] [代码]com.alibaba.fastjson.JSONObject;[代码][代码]import[代码] [代码]com.yuezhi.entity.wxsmallapppush.Token;[代码][代码]import[代码] [代码]com.yuezhi.entity.wxsmallapppush.WXSmallTemplate;[代码][代码]import[代码] [代码]com.yuezhi.entity.wxsmallapppush.WXSmallTemplateParam;[代码][代码]import[代码] [代码]com.yuezhi.util.JsonView;[代码][代码]import[代码] [代码]com.yuezhi.util.wechat.WeChatLoginToGetUnionId;[代码][代码]import[代码] [代码]org.slf4j.Logger;[代码][代码]import[代码] [代码]org.slf4j.LoggerFactory;[代码][代码]import[代码] [代码]org.springframework.web.bind.annotation.RequestMapping;[代码][代码]import[代码] [代码]org.springframework.web.bind.annotation.RestController;[代码][代码]import[代码] [代码]org.springframework.web.servlet.resource.HttpResource;[代码] [代码]import[代码] [代码]java.text.SimpleDateFormat;[代码][代码]import[代码] [代码]java.util.ArrayList;[代码][代码]import[代码] [代码]java.util.Date;[代码][代码]import[代码] [代码]java.util.List;[代码] [代码]/**[代码][代码] [代码][代码]* @ProjectName yuezhi[代码][代码] [代码][代码]* @ClassName WXSmallAppPush[代码][代码] [代码][代码]* @Description TODO[代码][代码] [代码][代码]* @Author Wednesday[代码][代码] [代码][代码]* @Date 2019/11/9 11:15[代码][代码] [代码][代码]* @Version 1.0[代码][代码] [代码][代码]**/[代码][代码]@RestController[代码][代码]@RequestMapping[代码][代码]([代码][代码]"/wxs"[代码][代码])[代码][代码]public[代码] [代码]class[代码] [代码]WXSmallAppPush {[代码] [代码] [代码][代码]@RequestMapping[代码][代码]([代码][代码]"/wxsSend"[代码][代码])[代码][代码] [代码][代码]public[代码] [代码]JsonView wxsSend(String openId){[代码][代码] [代码][代码]JsonView jsonView = [代码][代码]new[代码] [代码]JsonView();[代码][代码] [代码][代码]//封装了推送实体类[代码][代码] [代码][代码]WXSmallTemplate tem = [代码][代码]new[代码] [代码]WXSmallTemplate();[代码][代码] [代码][代码]//模板id[代码][代码] [代码][代码]tem.setTemplateId([代码][代码]"*****"[代码][代码]);[代码][代码] [代码][代码]//推送给谁[代码][代码] [代码][代码]tem.setToUser(openId);[代码][代码] [代码][代码]//用户点击之后调到小程序哪个页面[代码][代码] [代码][代码]tem.setPage([代码][代码]"pages/login/login"[代码][代码]);[代码][代码] [代码][代码]//又封装了一个实体类[代码][代码] [代码][代码]List<WXSmallTemplateParam> paras = [代码][代码]new[代码] [代码]ArrayList<WXSmallTemplateParam>();[代码][代码] [代码][代码]//添加对应参数[代码][代码] [代码][代码]paras.add([代码][代码]new[代码] [代码]WXSmallTemplateParam([代码][代码]"thing1"[代码][代码], [代码][代码]"小程序测试"[代码][代码]));[代码][代码] [代码][代码]paras.add([代码][代码]new[代码] [代码]WXSmallTemplateParam([代码][代码]"time2"[代码][代码], [代码][代码]"2019-11-09 11:33"[代码][代码]));[代码] [代码] [代码][代码]//然后把所有参数扔到大的模板中[代码][代码] [代码][代码]tem.setTemplateParamList(paras);[代码][代码] [代码][代码]//获取token凭证。[代码][代码] [代码][代码]Token token = getToken();[代码][代码] [代码][代码]String accessToken = token.getAccessToken();[代码][代码] [代码][代码]//最后一步请求接口哈哈哈 推送成功[代码][代码] [代码][代码]boolean[代码] [代码]result1 = sendTemplateMsg(accessToken, tem);[代码][代码] [代码][代码]if[代码] [代码](result1) {[代码][代码] [代码][代码]System.err.println([代码][代码]"推送成功"[代码][代码]);[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]System.err.println([代码][代码]"推送失败"[代码][代码]);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]jsonView;[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]private[代码] [代码]static[代码] [代码]final[代码] [代码]String APPID = [代码][代码]"****"[代码][代码];[代码][代码]// 微信应用唯一标识[代码][代码] [代码][代码]private[代码] [代码]static[代码] [代码]final[代码] [代码]String SECRET = [代码][代码]"*****"[代码][代码];[代码][代码] [代码][代码]private[代码] [代码]static[代码] [代码]String token_url = [代码][代码]"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"[代码][代码];[代码] [代码] [代码][代码]private[代码] [代码]static[代码] [代码]Logger logger = LoggerFactory.getLogger(WXSmallAppPush.[代码][代码]class[代码][代码]);[代码] [代码] [代码][代码]public[代码] [代码]static[代码] [代码]Token getToken() {[代码][代码] [代码][代码]Token token = [代码][代码]null[代码][代码];[代码][代码] [代码][代码]String requestUrl = String.format(token_url, APPID, SECRET);[代码][代码] [代码][代码]// 发起GET请求获取凭证[代码][代码] [代码][代码]String response = WeChatLoginToGetUnionId.httpsRequestToString(requestUrl, [代码][代码]"GET"[代码][代码], [代码][代码]null[代码][代码]);[代码][代码] [代码][代码]JSONObject jsonObject = JSON.parseObject(response);[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]null[代码] [代码]!= jsonObject) {[代码][代码] [代码][代码]try[代码] [代码]{[代码][代码] [代码][代码]token = [代码][代码]new[代码] [代码]Token();[代码][代码] [代码][代码]token.setAccessToken(jsonObject.getString([代码][代码]"access_token"[代码][代码]));[代码][代码] [代码][代码]token.setExpiresIn(jsonObject.getInteger([代码][代码]"expires_in"[代码][代码]));[代码][代码] [代码][代码]} [代码][代码]catch[代码] [代码](JSONException e) {[代码][代码] [代码][代码]token = [代码][代码]null[代码][代码];[代码][代码] [代码][代码]// 获取token失败[代码][代码] [代码][代码]logger.error([代码][代码]"获取token失败 errcode:{} errmsg:{}"[代码][代码], jsonObject.getInteger([代码][代码]"errcode"[代码][代码]),[代码][代码] [代码][代码]jsonObject.getString([代码][代码]"errmsg"[代码][代码]));[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]token;[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]public[代码] [代码]static[代码] [代码]boolean[代码] [代码]sendTemplateMsg(String token, WXSmallTemplate template) {[代码] [代码] [代码][代码]boolean[代码] [代码]flag = [代码][代码]false[代码][代码];[代码][代码] [代码][代码]String requestUrl = [代码][代码]"https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN"[代码][代码];[代码][代码] [代码][代码]requestUrl = requestUrl.replace([代码][代码]"ACCESS_TOKEN"[代码][代码], token);[代码][代码] [代码][代码]System.err.println(requestUrl);[代码][代码] [代码][代码]String response = WeChatLoginToGetUnionId.httpsRequestToString(requestUrl, [代码][代码]"POST"[代码][代码], template.toJSON());[代码][代码] [代码][代码]JSONObject jsonResult = JSON.parseObject(response);[代码][代码] [代码][代码]System.err.println(template.toJSON());[代码][代码] [代码][代码]if[代码] [代码](jsonResult != [代码][代码]null[代码][代码]) {[代码][代码] [代码][代码]Integer errorCode = jsonResult.getInteger([代码][代码]"errcode"[代码][代码]);[代码][代码] [代码][代码]String errorMessage = jsonResult.getString([代码][代码]"errmsg"[代码][代码]);[代码][代码] [代码][代码]if[代码] [代码](errorCode == [代码][代码]0[代码][代码]) {[代码][代码] [代码][代码]flag = [代码][代码]true[代码][代码];[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]System.out.println([代码][代码]"模板消息发送失败:"[代码] [代码]+ errorCode + [代码][代码]","[代码] [代码]+ errorMessage);[代码][代码] [代码][代码]flag = [代码][代码]false[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]flag;[代码][代码] [代码][代码]}[代码] [代码]}[代码]
2019-11-21楼主,你这问题解决了吗
发送订阅消息提示40003,怎么回事?用真机通过开发版订阅了一次性消息,并且打印提示accept 服务端发送订阅消息是一直提示40003!openid是正确的,就是我个人的微信
2019-11-21