`
gaobusi
  • 浏览: 199221 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

支付宝返回页验证失败——mysign.equals(request.getParameter("sign"))

阅读更多

import com.iim.timeeb.common.AlipayConfig;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;

public class AlipayCheck {

    public static Map check(HttpServletRequest request) throws UnsupportedEncodingException {
        String get_order = "";
        String get_total_fee = "";
        String get_subject = "";
        String get_body = "";
        String extra_common_param = "";
        String alipayNotifyURL = "http://notify.alipay.com/trade/notify_query.do?"
                + "partner="
                + AlipayConfig.partnerID
                + "&notify_id="
                + request.getParameter("notify_id");
        String responseTxt = CheckURL.check(alipayNotifyURL);
        Map params = new HashMap();
        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] + ",";
            }
            valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
            params.put(name, valueStr);
        }
        String mysign = SignatureHelper_return.sign(params, AlipayConfig.key);
        boolean flag = false;
        if (mysign.equals(request.getParameter("sign")) && responseTxt.equals("true")) {
            if (request.getParameter("trade_status").equals("TRADE_FINISHED") 
		|| request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
                get_order = request.getParameter("out_trade_no");
                get_total_fee = request.getParameter("total_fee");
                get_subject = request.getParameter("subject");
                get_body = request.getParameter("body");
                extra_common_param = request.getParameter("extra_common_param");
                flag = true;
            }
        }
        //返回需要的参数
        Map returnMap = new HashMap();
        returnMap.put("flag", flag);
        returnMap.put("get_order", get_order);
        returnMap.put("get_total_fee", get_total_fee);
        returnMap.put("get_subject", get_subject);
        returnMap.put("get_body", get_body);
        returnMap.put("extra_common_param", extra_common_param);
        return returnMap;
    }
}
 
支付宝在返回页面的验证中,有时候会遇到验证失败的问题,即这个验证不对:

mysign.equals(request.getParameter("sign")) 

出现这问题如果实在调试不好了,可以试试加上上面黄色的代码,也就是编码问题:

valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");

这个问题以前遇到过一次解决了,这次忘了,害得我又调试了好长时间,在此笔记一下!

 

分享到:
评论

相关推荐

    MySign.rar

    "MySign.rar" 文件中的项目似乎就是这样一个例子,它展示了一个自定义的日历签到功能。下面将详细解释这个功能涉及的关键知识点。 1. **自定义View**: 在Android中,`View` 是所有可视元素的基础类,而自定义View...

    调用支付宝api的实现

    if (mysign.equals(request.getParameter("sign")) && "true".equals(responseTxt)) { out.println("成功"); } else { out.println("失败"); } ``` #### 总结 通过上述步骤,我们可以实现对支付宝API的基本...

    支付宝接口1

    string sWord = "responseTxt=" + responseTxt + "\nnotify_url_log:sign=" + Request.Form["sign"] + "&mysign=" + mysign + "\nnotify Öz" + aliNotify.PreSignStr; AlipayFunction.log_result(Server.MapPath(...

    支付宝接口

    - 若SIGN与MYSIGN相等且responseTxt为false,应检查防火墙是否屏蔽了支付宝IP(121.0.26.11及其范围内的IP),80或443端口是否开放,以及网络状况。 - SIGN与MYSIGN不等且responseTxt为true,可能是因为参数格式...

    详解NodeJs支付宝移动支付签名及验签

    在本文中,我们将深入探讨如何在Node.js环境中实现支付宝移动支付的签名和验签过程。这一过程对于确保交易的安全性和防止欺诈行为至关重要。首先,我们要理解支付宝支付的基本流程: 1. 用户请求付款。 2. 服务器...

    asp中有关字符编码转换的几个函数.

    首先介绍的是一个将UTF-8编码的文字转换为GB2312编码的文字的函数——`UTF2GB`。该函数的核心逻辑在于遍历输入字符串中的每个字符,并根据特定条件进行转换。 ```vb function UTF2GB(UTFStr) for Dig = 1 to len...

    Boostrap实现的登录界面实例代码

    6. **JavaScript 功能**:虽然在这个示例中没有详细展示,但 Bootstrap 的 JavaScript 插件(如 `bootstrap.min.js`)可以添加交互性,例如表单验证、模态框等,进一步提升用户体验。 总结来说,这个 Bootstrap ...

    android APP源码,登录第二个设备,就踢出第一个的登录

    在`mySign`这个项目文件中,我们可以预见到它可能包含了实现以上功能的相关代码和配置,例如登录接口、设备识别逻辑、推送服务的集成以及基类Activity的定义。对于开发者来说,深入研究这个源码可以帮助理解如何在...

    矩阵特征值的计算1

    `basicQR`函数实现了QR分解,`mySign`函数用于确定符号,确保在计算Householder反射时的稳定性。 在输出中,可以看到计算得到的两个特征值分别为12.254327和98.521699,以及对应的特征向量。同时,还展示了A乘以...

Global site tag (gtag.js) - Google Analytics