天天看点

Webhooks 通知接收处理

以struts2中的写法为例,可自行用其他框架或servlet。

<code>public</code> <code>String wxNotice() </code><code>throws</code> <code>IOException{</code>

<code>        </code><code>HttpServletResponse response = ServletActionContext.getResponse();</code>

<code>        </code><code>HttpServletRequest request = ServletActionContext.getRequest();</code>

<code>        </code><code>// -------接受参数-------------------------------------//</code>

<code>        </code><code>StringBuilder buffer = </code><code>new</code> <code>StringBuilder();</code>

<code>        </code><code>BufferedReader reader = request.getReader();</code>

<code>        </code><code>String line;</code>

<code>        </code><code>while</code> <code>((line = reader.readLine()) != </code><code>null</code><code>) {</code>

<code>            </code><code>buffer.append(line);</code>

<code>        </code><code>}</code>

<code>        </code><code>String requestBody = buffer.toString();</code>

<code>        </code><code>System.out.println(</code><code>"request boay:"</code><code>+ requestBody);</code>

<code>        </code><code>// -------签名验证-------------------------------------//</code>

<code>        </code><code>String sign = request.getHeader(</code><code>"sign"</code><code>);</code>

<code>        </code><code>System.out.println(</code><code>"header sign:"</code> <code>+ sign);</code>

<code>        </code><code>boolean</code> <code>signCheck = RSA.verify(requestBody, sign, SignConfig.PAYMAX_PUBLIC_KEY);</code><code>//签名规则根据你的项目来定</code>

<code>        </code><code>//-------处理状态返回-----------------------------------//</code>

<code>        </code><code>response.setContentType(</code><code>"text/html;charset=UTF-8"</code><code>);</code>

<code>        </code><code>response.setCharacterEncoding(</code><code>"UTF-8"</code><code>);</code><code>//防止输出的信息出现乱码</code>

<code>        </code><code>PrintWriter out = </code><code>null</code><code>;</code>

<code>        </code><code>out = response.getWriter();</code>

<code>        </code><code>if</code> <code>(!signCheck) {</code>

<code>            </code><code>//签名验证失败</code>

<code>            </code><code>out.print(</code><code>"fail"</code><code>);</code>

<code>        </code><code>}</code><code>else</code><code>{</code>

<code>            </code><code>out.print(</code><code>"success"</code><code>);</code>

<code>        </code><code>out.flush();</code>

<code>        </code><code>out.close();</code>

<code>        </code><code>return</code> <code>null</code><code>;</code>

<code>    </code><code>}</code>

本文转自 艺晨光 51CTO博客,原文链接:http://blog.51cto.com/ycgit/1940886,如需转载请自行联系原作者

继续阅读