当前位置:编程学习 > C#/ASP.NET >>

关于银联在线支付接口

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也是这样。找银联的技术支持也没找到。有哪位大哥知道?不甚感激 支付 银联 --------------------编程问答-------------------- 着急啊,求解啊 --------------------编程问答-------------------- 我昨天刚做这个问题,也是收不到银联的返回数据,后来发现是我这边页面的问题,你让银联查查是否发送成功。 --------------------编程问答--------------------
引用 2 楼 hongji521521 的回复:
我昨天刚做这个问题,也是收不到银联的返回数据,后来发现是我这边页面的问题,你让银联查查是否发送成功。
   这个参数名好像也没不对,用手册上的 
          
 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 楼 hongji521521 的回复:
我昨天刚做这个问题,也是收不到银联的返回数据,后来发现是我这边页面的问题,你让银联查查是否发送成功。
没找到银联的联系方式。有QQ什么的吗? --------------------编程问答--------------------
引用 3 楼 hongji521521 的回复:
Quote: 引用 2 楼 hongji521521 的回复:

我昨天刚做这个问题,也是收不到银联的返回数据,后来发现是我这边页面的问题,你让银联查查是否发送成功。
   这个参数名好像也没不对,用手册上的 
          
 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();//备注

返回通知页面地址是否正确
--------------------编程问答--------------------
引用 3 楼 hongji521521 的回复:
Quote: 引用 2 楼 hongji521521 的回复:

我昨天刚做这个问题,也是收不到银联的返回数据,后来发现是我这边页面的问题,你让银联查查是否发送成功。
   这个参数名好像也没不对,用手册上的 
          
 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();//备注


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

我昨天刚做这个问题,也是收不到银联的返回数据,后来发现是我这边页面的问题,你让银联查查是否发送成功。
没找到银联的联系方式。有QQ什么的吗?
 

没有QQ,只有在线和电话 ,不过在线的要先登录 --------------------编程问答--------------------
引用 6 楼 hongji521521 的回复:
Quote: 引用 3 楼 hongji521521 的回复:

Quote: 引用 2 楼 hongji521521 的回复:

我昨天刚做这个问题,也是收不到银联的返回数据,后来发现是我这边页面的问题,你让银联查查是否发送成功。
   这个参数名好像也没不对,用手册上的 
          
 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();//备注


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

嗯。文档上面只要签名验证通过且交易状态是1001就行了 --------------------编程问答--------------------
引用 8 楼 liuleiyu121520 的回复:
Quote: 引用 6 楼 hongji521521 的回复:

Quote: 引用 3 楼 hongji521521 的回复:

Quote: 引用 2 楼 hongji521521 的回复:

我昨天刚做这个问题,也是收不到银联的返回数据,后来发现是我这边页面的问题,你让银联查查是否发送成功。
   这个参数名好像也没不对,用手册上的 
          
 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();//备注


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

嗯。文档上面只要签名验证通过且交易状态是1001就行了


你也看到他给的demo了吧,他的demo上是要验签的呀,而且我在验证签的时候也没有给我说不用验签 --------------------编程问答-------------------- 造成这个原因应该是参数设置不对 --------------------编程问答-------------------- 我也在做银联支付这块,我想问上楼上的RSA算法是怎么解决的,C#的和JAVA不一样啊 --------------------编程问答-------------------- 银联接口的参数必要用Request.Form[""]来提取
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,