微信APP支付回调
1.回调地址,调起支付时需上传微信端
2.支付完成
3.微信端发回通知
4.使用postman模拟请求
二。后台接受
InputStream inStream = request.getInputStream(); ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outSteam.write(buffer, 0, len); } String resultxml = new String(outSteam.toByteArray(), "utf-8"); Map<String, String> wxRetMap = PayCommonUtil.doXMLParse(resultxml); outSteam.close(); inStream.close(); // 当返回的return_code为SUCCESS则回调成功 if ("SUCCESS".equalsIgnoreCase(wxRetMap.get("return_code"))) { // 通知微信收到回调 String resXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"; BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream()); out.write(resXml.getBytes()); out.flush(); out.close(); /** * 执行业务代码 * */ try { //保存流水业务 //附加数据 用户id json {user_id:'1'} String userId = wxRetMap.get("attach");//attach为xml标签名称
} catch (Exception e) { logger.error(e.getMessage()); e.printStackTrace(); }
------------------------------------------------------------------------xml----------------------------------------参数名称-------------------------------------
<xml><appid><![CDATA[wx56232dd67c7e5a18]]></appid>
<bank_type><![CDATA[CFT]]></bank_type>
<attach><![CDATA[{userId:2,orderId:20191122211726047}]]></attach>
<cash_fee><![CDATA[1]]></cash_fee>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[N]]></is_subscribe>
<mch_id><![CDATA[1521497251]]></mch_id>
<nonce_str><![CDATA[1546088296922]]></nonce_str>
<openid><![CDATA[oEHJT1opJZLYBWssRlyjq9bSdnao]]></openid>
<out_trade_no><![CDATA[10657298351779092719122609746693]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[2EB71F6237E04C3DA4B1509A502E8F62]]></sign>
<time_end><![CDATA[20181229205830]]></time_end>
<total_fee>1</total_fee>
<trade_type><![CDATA[MWEB]]></trade_type>
<transaction_id><![CDATA[4200000224201812291041578058]]></transaction_id>
</xml>