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
+ "¬ify_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" 文件中的项目似乎就是这样一个例子,它展示了一个自定义的日历签到功能。下面将详细解释这个功能涉及的关键知识点。 1. **自定义View**: 在Android中,`View` 是所有可视元素的基础类,而自定义View...
if (mysign.equals(request.getParameter("sign")) && "true".equals(responseTxt)) { out.println("成功"); } else { out.println("失败"); } ``` #### 总结 通过上述步骤,我们可以实现对支付宝API的基本...
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,可能是因为参数格式...
在本文中,我们将深入探讨如何在Node.js环境中实现支付宝移动支付的签名和验签过程。这一过程对于确保交易的安全性和防止欺诈行为至关重要。首先,我们要理解支付宝支付的基本流程: 1. 用户请求付款。 2. 服务器...
首先介绍的是一个将UTF-8编码的文字转换为GB2312编码的文字的函数——`UTF2GB`。该函数的核心逻辑在于遍历输入字符串中的每个字符,并根据特定条件进行转换。 ```vb function UTF2GB(UTFStr) for Dig = 1 to len...
6. **JavaScript 功能**:虽然在这个示例中没有详细展示,但 Bootstrap 的 JavaScript 插件(如 `bootstrap.min.js`)可以添加交互性,例如表单验证、模态框等,进一步提升用户体验。 总结来说,这个 Bootstrap ...
在`mySign`这个项目文件中,我们可以预见到它可能包含了实现以上功能的相关代码和配置,例如登录接口、设备识别逻辑、推送服务的集成以及基类Activity的定义。对于开发者来说,深入研究这个源码可以帮助理解如何在...
`basicQR`函数实现了QR分解,`mySign`函数用于确定符号,确保在计算Householder反射时的稳定性。 在输出中,可以看到计算得到的两个特征值分别为12.254327和98.521699,以及对应的特征向量。同时,还展示了A乘以...