コード例 #1
0
        //银联支付结果回调接口
        public ActionResult CupComplete(Cup cup)
        {
            LogerHelper.DefaultInfo(Request.ToString());
            if (Request.HttpMethod == "POST")
            {
                // 使用Dictionary保存参数
                Dictionary <string, string> resData = new Dictionary <string, string>();

                NameValueCollection coll = Request.Form;

                string[] requestItem = coll.AllKeys;

                for (int i = 0; i < requestItem.Length; i++)
                {
                    resData.Add(requestItem[i], Request.Form[requestItem[i]]);
                }
                // 返回报文中不包含UPOG,表示Server端正确接收交易请求,则需要验证Server端返回报文的签名
                if (SDKUtil.Validate(resData, Encoding.UTF8))
                {
                    cup.accNo            = resData["accNo"];
                    cup.bindId           = resData["bindId"];
                    cup.bizType          = resData["bizType"];
                    cup.cupParams        = coll.ToString();
                    cup.id               = resData["id"];
                    cup.merId            = resData["merId"];
                    cup.orderId          = resData["orderId"];
                    cup.payCardIssueName = resData["payCardIssueName"];
                    cup.payCardNo        = resData["payCardNo"];
                    cup.payCardType      = resData["payCardType"];
                    cup.payType          = resData["payType"];
                    cup.queryId          = resData["queryId"];
                    cup.respCode         = resData["respCode"];
                    cup.respMsg          = resData["respMsg"];
                    cup.settleAmt        = Convert.ToInt32(resData["settleAmt"]);
                    cup.settleDate       = resData["settleDate"];
                    cup.txnAmt           = Convert.ToInt32(resData["txnAmt"]);
                    cup.txnTime          = resData["txnTime"];
                    cup.txnType          = resData["txnType"];
                    string respcode = resData["respCode"];
                    //Response.Write("商户端验证返回报文签名成功\n");

                    //商户端根据返回报文内容处理自己的业务逻辑 ,DEMO此处只输出报文结果
                    //StringBuilder builder = new StringBuilder();

                    //builder.Append("<tr><td align=\"center\" colspan=\"2\"><b>商户端接收银联返回报文并按照表格形式输出结果</b></td></tr>");

                    //for (int i = 0; i < requestItem.Length; i++)
                    //{
                    //    builder.Append("<tr><td width=\"30%\" align=\"right\">" + requestItem[i] + "</td><td style='word-break:break-all'>" + Request.Form[requestItem[i]] + "</td></tr>");
                    //}

                    //builder.Append("<tr><td width=\"30%\" align=\"right\">商户端验证银联返回报文结果</td><td>验证签名成功.</td></tr>");
                    //Response.Write(builder.ToString());
                    cup.cupParams = coll.ToString();
                    cup.id        = Guid.NewGuid().ToString().Replace("-", "");
                    if (paymentbll.cupPayment(cup))
                    {
                        LogerHelper.debug("银联支付成功");
                        return(Content("success"));
                    }
                }
                else
                {
                    LogerHelper.debug("银联支付失败");
                    // Response.Write("<tr><td width=\"30%\" align=\"right\">商户端验证银联返回报文结果</td><td>验证签名失败.</td></tr>");
                }
            }
            return(Content("fail"));
        }