小程序开发的坑

1. 后端无法获取小程序通过post请求提交的数据
原因:小程序的post请求默认的header['content-type'] 为 application/json
解决办法:在wx.request{}中添加以下代码,将header设置为form格式

header: { 'Content-Type': 'application/x-www-form-urlencoded' }
2. 客服消息服务器设置token错误,无法保存
原因:当在点击保存按钮的时候,微信会发一个请求到你填写的服务器地址,来验证服务器的合法性和安全性。携带的参数有String signature, String timestamp, String nonce, String echostr,返回echostr表示验证通过。
解决办法:下载微信的demo,选择Java的代码,在WXBizMsgCrypt中加入verifyUrl那段代码,再编写一个接口即可。
@Controller @Slf4j @RequestMapping(value = "https://www.it610.com/weixin") public class WeixinProgramController {@RequestMapping(value = "https://www.it610.com/verifyUrl") @ResponseBody public String weixinSignature(String signature, String timestamp, String nonce, String echostr){ log.info("微信小程序校验,signature={},timestamp={}, nonce={}, echostr={}", signature, timestamp, nonce, echostr); String token = "xiaochengxu"; //自定义字段(自己填写3-32个字符) try { WXBizMsgCrypt wxBizMsgCrypt = new WXBizMsgCrypt("Token令牌", "EncodingAESKey", "AppId"); boolean verifyResult = wxBizMsgCrypt.verifyUrl(signature, timestamp, nonce); log.info("微信小程序校验,signature={},timestamp={}, nonce={}, echostr={}, verifyResult={}", signature, timestamp, nonce, echostr, verifyResult); return echostr; } catch (AesException e) { log.error("aes编码格式错误", e); }return echostr; } }/** * 验证URL * @param msgSignature 签名串,对应URL参数的msg_signature * @param timeStamp 时间戳,对应URL参数的timestamp * @param nonce 随机串,对应URL参数的nonce * * @return 解密之后的echostr * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息 */ public boolean verifyUrl(String msgSignature, String timeStamp, String nonce) throws AesException { String signature = SHA1.signUrl(token, timeStamp, nonce); if (!signature.equals(msgSignature)) { return false; }return true; }


小程序开发的坑
文章图片
推送服务器设置.png
需要注意的是,如果是非https域名,是不能使用明文模式的 【小程序开发的坑】

    推荐阅读