1. 程式人生 > >java微信app支付-支付結果通用通知

java微信app支付-支付結果通用通知

該連結是通過【統一下單API】中提交的引數notify_url設定,如果連結無法訪問,商戶將無法接收到微信通知。

通知url必須為直接可訪問的url,不能攜帶引數。示例:notify_url:“https://xxx.com”sn

		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);
		}
		System.out.println("~~~~~~~~~~~~~~~~付款成功~~~~~~~~~");
		outSteam.close();
		inStream.close();
		String result = new String(outSteam.toByteArray(), "utf-8");// 獲取微信呼叫我們notify_url的返回資訊
		Map<Object, Object> map = PayCommonUtil.doXMLParse(result);
		
		
		if (map.get("result_code").toString().equalsIgnoreCase("SUCCESS")) {
<pre name="code" class="java">                                //驗證簽名,在網上看到很多人都不去驗證簽名,這種做法,一般情況下不會有問題,但是。。。。。,多的我就不說了
                             <img src="data:image/png;base64,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" alt="" />
                             if (verifyWeixinNotify(map)) {
                                 //訂單處理
                               
                              response.getWriter().write(PayCommonUtil.setXML("SUCCESS", "OK")); // 告訴微信伺服器,我收到資訊了,不要在呼叫回撥action了
                         }
                }

 



public boolean verifyWeixinNotify(Map<Object, Object> map) {
        SortedMap<String, Object> parameterMap = new TreeMap<String, Object>();
        String sign = (String) map.get("sign");
        for (Object keyValue : map.keySet()) {
            if(!keyValue.toString().equals("sign")){
                parameterMap.put(keyValue.toString(), map.get(keyValue));
            }
            
        }
        String createSign = PayCommonUtil.createSign("UTF-8", parameterMap);
        if(createSign.equals(sign)){
            return true;
        }else{
            return false;
        }
        
    }


到此通知也說完了,接下的一篇博文來我們說說退款介面,今天就不寫了,下班了,明天再接著說