public partial class NetPay_ChinapayNotify : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
            UserPayRecordManager _userpayRecordManager = new UserPayRecordManager();
            UserPayFailManager _userPayFailManager = new UserPayFailManager();
            UserPayCountManager _userPayCountManager = new UserPayCountManager();
            string Priv1 = Request["Priv1"];//备注
            int iUserID = 0;
            int.TryParse(Priv1, out iUserID);
            string MerId = Request["MerId"];//商户号
            string OrdId = Request["OrderNo"];//订单号
            string TransAmt = Request["Amount"];//订单金额
            string CuryId = Request["CurrencyCode"];//货币代码
            string TransDate = Request["TransDate"];//订单日期
            string TransType = Request["TransType"];//交易类型
            string GateId = Request["GateId"];//网关
            string status = Request["status"];
            string CheckValue = Request["checkvalue"];//签名数据   
            decimal cash = 0;
            decimal.TryParse(TransAmt, out cash);
            bool res = NetPay_Chinapay.Check(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, CheckValue, Server.MapPath(ConfigHandler.PubKeyPath));
            //注:flag 0表示验签正确,其他表示失败
            if (res && status == "1001")
            {
               //支付成功
            }
            else
            {
                
                //支付失败
            }
}
}
为什么就不进通知页面呢?通知页面地址没错,是线上地址。我加了日志发邮件,至始至终就不进这页面。银联的通知页面接受到信息后不要返回信息的?像支付宝财付通都返回success。银联给的demo也是这样。找银联的技术支持也没找到。有哪位大哥知道?不甚感激支付银联

解决方案 »

  1.   

       这个参数名好像也没不对,用手册上的 
               result.MerId = Request["merid"].Trim();//商户号
                result.OrdId = Request["orderno"].Trim();//订单号
                result.TransDate = Request["transdate"].Trim();//订单日期
                result.TransAmt = Request["amount"].Trim();//订单金额
                result.CuryId = Request["currencycode"].Trim();//货币代码           
                result.TransType = Request["transtype"].Trim();//交易类型
                result.status = Request["status"].Trim();
                result.CheckValue = Request["checkvalue"];//签名数据
                result.GateId = Request["GateId"].Trim();//网关
                result.Priv1 = Request["Priv1"].Trim();//备注
      

  2.   


    还有在验签的时候,checkvalue值传过去的跟银联返回的都不一样,经与银联沟通,两个人说的完全相反,刚开始说用私钥签名用公钥验签,但是两个值根本不一样,造成实际支付成功,网站接收返回的数据,验证checkvalue值不通过。后来他们又说用公钥加密,返回的checkvalue值用私钥验签,把我都搞晕了。后来又说不用验证checkvalue值。现在我做的只判断返回的状态码是1001,就表示交易成功。
      

  3.   


    还有在验签的时候,checkvalue值传过去的跟银联返回的都不一样,经与银联沟通,两个人说的完全相反,刚开始说用私钥签名用公钥验签,但是两个值根本不一样,造成实际支付成功,网站接收返回的数据,验证checkvalue值不通过。后来他们又说用公钥加密,返回的checkvalue值用私钥验签,把我都搞晕了。后来又说不用验证checkvalue值。现在我做的只判断返回的状态码是1001,就表示交易成功。
    嗯。文档上面只要签名验证通过且交易状态是1001就行了
      

  4.   


    还有在验签的时候,checkvalue值传过去的跟银联返回的都不一样,经与银联沟通,两个人说的完全相反,刚开始说用私钥签名用公钥验签,但是两个值根本不一样,造成实际支付成功,网站接收返回的数据,验证checkvalue值不通过。后来他们又说用公钥加密,返回的checkvalue值用私钥验签,把我都搞晕了。后来又说不用验证checkvalue值。现在我做的只判断返回的状态码是1001,就表示交易成功。
    嗯。文档上面只要签名验证通过且交易状态是1001就行了你也看到他给的demo了吧,他的demo上是要验签的呀,而且我在验证签的时候也没有给我说不用验签
      

  5.   

    我也在做银联支付这块,我想问上楼上的RSA算法是怎么解决的,C#的和JAVA不一样啊
      

  6.   

    银联接口的参数必要用Request.Form[""]来提取