支付寶手機網站支付驗簽失敗解決辦法


驗簽傳入的參數map集合、支付寶公鑰、編碼格式(UTF-8,GBK....)

主要驗簽失敗的原因是map集合中存放的值是不正確的

下面列出map集合中需要放入的參數值

       paramsMap.put("sign",實際取到的sign值,下同。。);
            paramsMap.put("gmt_create",);
            paramsMap.put("gmt_payment",);
            paramsMap.put("notify_time",);
            paramsMap.put("subject",);
            paramsMap.put("buyer_id",);
            paramsMap.put("notify_id",);
            paramsMap.put("notify_type",);
            paramsMap.put("out_trade_no",);
            paramsMap.put("total_amount",);
            paramsMap.put("trade_status",);
            paramsMap.put("trade_no",);
            paramsMap.put("app_id",);
            paramsMap.put("seller_id",);

 如果使用的是springmvc框架,可以直接使用以下的代碼進行驗證

@RequestMapping("/yanqian")
    @ResponseBody
    public void tuikaun1(HttpServletRequest request,HttpServletResponse httpResponse) throws ServletException, IOException, AlipayApiException {
        Map<String,String> params = new HashMap<String,String>();
        Map requestParams = request.getParameterMap();
        for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i]
                        : valueStr + values[i] + ",";
            }
            //亂碼解決,這段代碼在出現亂碼時使用。如果mysign和sign不相等也可以使用這段代碼轉化
            //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");
            params.put(name, valueStr);
        }
        System.out.println(params);
        boolean    signVerified = AlipaySignature.rsaCheckV1(params, ALIPAY_PUBLIC_KEY, "utf-8");
        System.out.println("signVerified======"+signVerified);
        
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM