微信支付返回的二维码格式为: weixin://wxpay/bizpayurl?pr=
<img id="qrcodestr" src="{wechatUrl}" alt="二维码" width="170" />
将此二维码通过页面src的形式传递到后台生成二维码显示,这种情况后台是无法正常接收二维码参数的。
原因:带有特殊字符导致传递失败
解决方案:js编码 后台转码
#前台
var url = encodeURIComponent('${wechatPayurl}');
$("#qrcodestr").attr("src","${base}/pay/QRCode?wechatPayurl=" + url);
#后台
String wechatPayurl = request.getParameter("wechatPayurl");
wechatPayurl = java.net.URLDecoder.decode(wechatPayurl, "UTF-8");
这样后台就可以正常接收了,然后通过QRCodeUtil.encode(wechatPayurl, output); 输出流的方式渲染到页面。
期间试过了通过前端js生成二维码,效果不理想,但是也可以实现,可以自己研究。
前几日遇到的问题,记录一下。