首页 > 技术文章 > 财付通信用卡 外卡支付

baidawei 2016-08-22 16:04 原文

1.请求支付:

控制器:

public ActionResult Index(decimal amount, string submitType, string relationCode, int? couponId = 0)
        {
            var model = new TenpayModel();
            amount = Math.Round((amount * 0.035M) + amount, 2);
            if (amount < 1)
            {
                model.ErrorMsg = "The amount cannot be less than 1USD.";
                return View(model);
            }
            if (amount > 2000)
            {
                model.ErrorMsg = "The amount cannot be less than 2000USD.";
                return View(model);
            }
            string relationId;
            relationId = submitType == "AddMoney" ? CurrentUserId.ToString() : relationCode;

            model.IsSend = false;

            RelationTypeEnum relationType = (RelationTypeEnum)Enum.Parse(typeof(RelationTypeEnum), submitType);

            var ourPaymentNumber = AddMoneyDataService.GetOrderId();    //我们的交易号

            model.Request = TenpayManager.CreateTenPayRequest(amount, relationId, CurrentUserId.ToString(), ourPaymentNumber, LanguageType.En);

            model.sign = TenpayManager.createRequestSign(model.Request);

            var TenpayBegin = AddMoneyDataService.TenpayAddMoney(CurrentUserId, amount, ourPaymentNumber, relationType,
                relationId, model.ToJson(), LanguageType.En); //begin

            if (TenpayBegin)
            {
                model.IsSend = true;
            }
            else
            {
                model.ErrorMsg = "System Error";
            }

            YOYBuyComLogDataService.Log("提交TenPay充值信息", LogType.TenpaySend, CurrentUserId, null, model.ToJson());
            return View(model);
        }
View Code

view:

@if (Model.IsSend)
{
    <div class="floR status">
        <h2 class="clear ove mar10 font18 parbor">Credit Card - Online Payment</h2>
        <div class="clear ove mar40">
            Processing…
        </div>
    </div>
    <script type="text/javascript" language="javascript">
        $(document).ready(function () {
            $("#tenpayForm").submit();
        });
    </script>
    if (Model != null && Model.Request != null)
    {
        using (Html.BeginForm(null, null, FormMethod.Post, new { action = Model.Request.gateUrl, target = "_self", id = "tenpayForm", name = "tenpayForm", style = "display:none;" }))
        {
            <input type="text" id="attach" name="attach" value="@Model.Request.attach" />
            <input type="text" id="body" name="body" value="@Model.Request.body" />
            <input type="text" id="fee_type" name="fee_type" value="@Model.Request.fee_type"/>
            <input type="text" id="input_charset" name="input_charset" value="@Model.Request.input_charset" />
            <input type="text" id="language" name="language" value="@Model.Request.language" />
            <input type="text" id="notify_url" name="notify_url" value="@Model.Request.notify_url" />
            <input type="text" id="out_trade_no" name="out_trade_no" value="@Model.Request.out_trade_no" />
            <input type="text" id="partner" name="partner" value="@Model.Request.partner" />
            <input type="text" id="project_type" name="project_type" value="@Model.Request.project_type" />
            <input type="text" id="return_url" name="return_url" value="@Model.Request.return_url" />
            <input type="text" id="spbill_create_ip" name="spbill_create_ip" value="@Model.Request.spbill_create_ip" />
            <input type="text" id="total_fee" name="total_fee" value="@Model.Request.total_fee" />
            @*<input type="text" id="key" name="key" value="@Model.Request.key" />*@
            <input type="text" id="sign" name="sign" value="@Model.sign" />
        }
    }
}
else
{
    <div class="floR status">
        <h2 class="clear ove mar10 font18 parbor">Tenpay - Online Payment</h2>
        <div class="clear ove mar40">
            <span style="color: red">Error: @Model.ErrorMsg</span>
        </div>
    </div>
}
View Code

用到的方法:

public static class TenpayManager
    {
        //生成实体类
        public static PayRequest CreateTenPayRequest(decimal amount, string ticketId, string userId, string ourPaymentNumber, LanguageType lan)
        {
            var result = new PayRequest();
            result.gateUrl = ConfigurationManager.AppSettings["TenpayPostUrl"];//请求地址
            result.key = ConfigurationManager.AppSettings["TenpayKey"];//密钥
            result.partner = ConfigurationManager.AppSettings["TenpayPartner"];//商户号
            result.return_url = ConfigurationManager.AppSettings["TenpayReturn_url"];//同步
            result.notify_url = ConfigurationManager.AppSettings["TenpayNotify_url"];//异步
            //语种
            switch (lan)
            {
                case LanguageType.En:
                    result.language = "EN";
                    result.body = "YOYBUY  Deposit";//商品描述!
                    break;
                case LanguageType.Cn:
                    result.language = "CN";
                    result.body = "YOYBUY 充值";//商品描述!
                    break;
                case LanguageType.Ru:
                    result.language = "RU";
                    result.body = "YOYBUY депозит";//商品描述!
                    break;
                case LanguageType.Es:
                    result.language = "SP";
                    result.body = " YOYBUY  Depositar";//商品描述!
                    break;
                default:
                    result.language = "EN";
                    result.body = "YOYBUY  Deposit";//商品描述!
                    break;
            }
            result.project_type = 1; //外卡
            result.spbill_create_ip = HttpContext.Current.Request.UserHostAddress; //客户机ip
            //result.spbill_create_ip = "124.207.35.178"; //客户机ip
            result.fee_type = "USD"; //币种
            result.total_fee = Convert.ToInt32(amount * 100).ToString();//
            result.out_trade_no = ourPaymentNumber; //商家订单号
            result.input_charset = "UTF-8";//编码
            var whiteUser = UserLimitedDataService.CheckUserIsInUserGroup(int.Parse(userId));
            result.attach = whiteUser ? "is_white_user=1" : "is_white_user=0";
            return result;
        }
        //第一次请求支付
        public static string createRequestSign(PayRequest Request)
        {
            var parameters = new Hashtable();
            parameters.Add("attach", Request.attach);
            parameters.Add("body", Request.body);
            parameters.Add("input_charset", Request.input_charset);
            parameters.Add("notify_url", Request.notify_url);
            parameters.Add("return_url", Request.return_url);
            parameters.Add("partner", Request.partner);
            parameters.Add("out_trade_no", Request.out_trade_no);
            parameters.Add("total_fee", Request.total_fee);
            parameters.Add("fee_type", Request.fee_type);
            parameters.Add("spbill_create_ip", Request.spbill_create_ip);
            parameters.Add("project_type", Request.project_type);
            parameters.Add("language", Request.language);
            return createSign(parameters);
        }
        //第一次相应参数
        public static Hashtable getResponseParameters(NameValueCollection collection)
        {
            var parameters = new Hashtable();
            //添加相应参数
            foreach (string k in collection)
            {
                string v = (string)collection[k];
                if (!string.IsNullOrEmpty(k))
                {
                    parameters.Add(k, v);
                }
            }
            return parameters;
        }
        //根据相应参数生成实体
        public static PayResponse getResponseModel(Hashtable parameters)
        {
            var response = new PayResponse();
            response.Sign = parameters["sign"]?.ToString() ?? "";
            response.notify_id = parameters["notify_id"]?.ToString() ?? "";
            return response;
        }
        //通知查询 第二次请求
        public static string Call(string notify_id)
        {
            var url = ConfigurationManager.AppSettings["TenpaySearchUrl"];//通知请求地址;
            var partner = ConfigurationManager.AppSettings["TenpayPartner"]; //商户号
            var parameters = new Hashtable();
            parameters.Add("input_charset", "UTF-8");
            parameters.Add("partner", partner);
            parameters.Add("notify_id", notify_id);
            var sign = createSign(parameters);
            parameters.Add("sign", sign);
            var content = getCallUrl(url, parameters);

            string[] sArray = Regex.Split(content, "\\?");
            HttpWebRequest hp = (HttpWebRequest)WebRequest.Create(sArray[0]);
            hp.Timeout = 5000;
            var encoding = System.Text.Encoding.GetEncoding("UTF-8");
            string postData = "";
            if (sArray.Length >= 2)
            {
                postData = sArray[1];
            }
            if (postData != null)
            {
                byte[] data = encoding.GetBytes(postData);
                hp.Method = "POST";
                hp.ContentType = "application/x-www-form-urlencoded";
                hp.ContentLength = data.Length;
                var ws = hp.GetRequestStream();
                // 发送数据
                ws.Write(data, 0, data.Length);
                ws.Close();
            }
            var wr = (HttpWebResponse)hp.GetResponse();
            var sr = new StreamReader(wr.GetResponseStream(), encoding);
            var responseData = sr.ReadToEnd();
            sr.Close();
            wr.Close();
            return responseData;
        }

        //获取查询通知路径
        public static string getCallUrl(string url, Hashtable parameters)
        {
            var sb = new StringBuilder();
            ArrayList keys = new ArrayList(parameters.Keys);
            keys.Sort();
            foreach (string k in keys)
            {
                var v = parameters[k].ToString();
                if (null != v && "key".CompareTo(k) != 0)
                {
                    sb.Append(k + "=" + HttpUtility.UrlEncode(v, Encoding.GetEncoding("UTF-8")) + "&");
                }
            }
            if (sb.Length > 0)
            {
                sb.Remove(sb.Length - 1, 1);
            }
            return url + "?" + sb.ToString();
        }

        //解析第二次获取xml
        public static Hashtable getCallBackParameters(string xml)
        {
            var parameters = new Hashtable();

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xml);
            XmlNode root = xmlDoc.SelectSingleNode("root");
            XmlNodeList xnl = root.ChildNodes;

            foreach (XmlNode xnf in xnl)
            {
                parameters.Add(xnf.Name, xnf.InnerXml);
            }
            return parameters;
        }

        public static CallBack getCallBackModel(Hashtable parameters)
        {
            var call = new CallBack();
            call.Sign = parameters["sign"]?.ToString() ?? "";
            call.out_trade_no = parameters["out_trade_no"]?.ToString() ?? "";
            call.transaction_id = parameters["transaction_id"]?.ToString() ?? "";
            if (!string.IsNullOrEmpty(parameters["total_fee"].ToString()))
            {
                call.total_fee= Convert.ToDecimal(parameters["total_fee"].ToString()) / 100;
            }
            call.trade_state = parameters["trade_state"]?.ToString() ?? "";
            call.trade_mode = parameters["trade_mode"]?.ToString() ?? "";
            call.retcode = parameters["retcode"]?.ToString() ?? "";
            return call;
        }

        //生成sign
        public static string createSign(Hashtable parameters)
        {
            var key = ConfigurationManager.AppSettings["TenpayKey"];//密钥
            StringBuilder sb = new StringBuilder();
            ArrayList akeys = new ArrayList(parameters.Keys);
            akeys.Sort();
            foreach (string k in akeys)
            {
                string v = parameters[k].ToString();
                if (null != v && "".CompareTo(v) != 0
                    && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0)
                {
                    sb.Append(k + "=" + v + "&");
                }
            }
            sb.Append("key=" + key);
            string sign = Encryption.MD5(sb.ToString(), 32).ToUpper();
            return sign;
        }


    }
View Code
    public class CallBack
    {
        public string Sign { get; set; }
        public string out_trade_no { get; set; }
        public string transaction_id { get; set; }
        public decimal total_fee { get; set; }
        public string trade_state { get; set; }
        public string trade_mode { get; set; }
        public string retcode { get; set; }
    }
CallBack.cs
    public class PayResponse
    {
        //签名
        public string Sign { get; set; }

        //相应id
        public string notify_id { get; set; }
    }
PayResponse.cs
public class PayRequest
    {
        //编码
        public string input_charset { get; set; }
        //白名单 1是 0否 附加项
        public string attach { get; set; }
        //商品描述
        public string body { get; set; }
        //同步url
        public string return_url { get; set; }
        //异步url
        public string notify_url { get; set; }
        //商户号
        public string partner { get; set; }
        //商家订单号
        public string out_trade_no { get; set; }
        //商品金额
        public string total_fee { get; set; }
        //币种
        public string fee_type { get; set; }
        //用户ip
        public string spbill_create_ip { get; set; }
        //业务类型
        public int project_type { get; set; }
        //语种
        public string language { get; set; }
        // 密钥
        public string key { get; set; }
        // 请求地址
        public string gateUrl { get; set; }
    }
PayResult.cs

2.响应支付同步和异步的,自动补单机制,每5分钟左右会一直异步请求,直到返回success为止。

public ActionResult returnurl()
        {
            var collection = Request.HttpMethod == "POST" ? Request.Form : Request.QueryString;
            var responseParameters = TenpayManager.getResponseParameters(collection);
            var responseModel = TenpayManager.getResponseModel(responseParameters);
            var responseSign = TenpayManager.createSign(responseParameters);
            if (responseModel.Sign.Equals(responseSign))
            {
                //通知查询
                var xml = TenpayManager.Call(responseModel.notify_id);
                var callBackParameters = TenpayManager.getCallBackParameters(xml);
                var callBackSign = TenpayManager.createSign(callBackParameters);
                var callBackModel = TenpayManager.getCallBackModel(callBackParameters);

                if (callBackModel.Sign.Equals(callBackSign))
                {
                    //我们的交易号
                    var out_trade_no = callBackModel.out_trade_no;
                    //财付通交易号
                    var transaction_id = callBackModel.transaction_id;
                    //金额,以分为单位
                    var amount = callBackModel.total_fee;
                    //支付结果
                    var trade_state = callBackModel.trade_state;
                    //交易模式,1即时到帐 2中介担保
                    var trade_mode = callBackModel.trade_mode;
                    var retcode = callBackModel.retcode;

                    if (retcode == "0" || trade_mode == "1" || trade_state == "1")
                    {
                        var successModel = new SuccessModel();
                        successModel.TradeNo = transaction_id;
                        successModel.Amount = amount > 0 ? amount : 0;

                        var failModel = new FailModel();
                        failModel.TradeNo = transaction_id;

                        var result = AddMoneyDataService.TenpayPayFinished(transaction_id, out_trade_no, amount, true, callBackModel.ToJson());


                        switch (result.Status)
                        {
                            case CommonEnum.DataExisted:
                                switch (result.Data.Language)
                                {
                                    case LanguageType.En:
                                        switch (result.Data.RelationType)
                                        {
                                            case RelationTypeEnum.AddMoney: //充值
                                                return View("/Views/Tenpay/Success.cshtml", successModel);
                                            case RelationTypeEnum.DirectOrderPay: //直购支付成功
                                            case RelationTypeEnum.DirectOrderOncePay:
                                                return Redirect("http://order.yoybuy.com/en/orderv5/orderlist");
                                            case RelationTypeEnum.PurchasingOrderOncePay: //代购订单支付成功
                                            case RelationTypeEnum.PurchasingOrderPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=order&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/en/order?ot=pp&pt=alipay&tid=" + result.Data.RelationCode);
                                            case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款成功
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/en/myparcels");
                                            case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/en/myparcels");
                                            case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单支付成功
                                            case RelationTypeEnum.ForwardingWaybillPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/en/myforwardingparcels");
                                            default:
                                                return View("/Views/Tenpay/Fail.cshtml", failModel);
                                        }
                                    case LanguageType.Cn:
                                        switch (result.Data.RelationType)
                                        {
                                            case RelationTypeEnum.AddMoney: //充值
                                                return View("/Areas/Cn/Views/Tenpay/Success.cshtml", successModel);
                                            case RelationTypeEnum.DirectOrderPay: //直购支付成功
                                            case RelationTypeEnum.DirectOrderOncePay:
                                                return Redirect("http://order.yoybuy.com/cn/orderv5/orderlist");
                                            case RelationTypeEnum.PurchasingOrderOncePay: //代购订单支付成功
                                            case RelationTypeEnum.PurchasingOrderPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/cn/Purchase/paySuccessful?goodsBelongsType=order&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/cn/order?ot=pp&pt=alipay&tid=" + result.Data.RelationCode);
                                            case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款成功
                                                return Redirect("http://shoppingcart.yoybuy.com/cn/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/cn/myparcels");
                                            case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                                return Redirect("http://shoppingcart.yoybuy.com/cn/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/cn/myparcels");
                                            case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单支付成功
                                            case RelationTypeEnum.ForwardingWaybillPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/cn/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/cn/myforwardingparcels");
                                            default:
                                                return View("/Areas/Cn/Views/Tenpay/Fail.cshtml", failModel);
                                        }
                                    case LanguageType.Es:
                                        switch (result.Data.RelationType)
                                        {
                                            case RelationTypeEnum.AddMoney: //充值
                                                return View("/Areas/Es/Views/Tenpay/Success.cshtml", successModel);
                                            case RelationTypeEnum.DirectOrderPay: //直购支付成功
                                            case RelationTypeEnum.DirectOrderOncePay:
                                                return Redirect("http://order.yoybuy.com/es/orderv5/orderlist");
                                            case RelationTypeEnum.PurchasingOrderOncePay: //代购订单支付成功
                                            case RelationTypeEnum.PurchasingOrderPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/es/Purchase/paySuccessful?goodsBelongsType=order&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/es/order?ot=pp&pt=alipay&tid=" + result.Data.RelationCode);
                                            case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款成功
                                                return Redirect("http://shoppingcart.yoybuy.com/es/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/es/myparcels");
                                            case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                                return Redirect("http://shoppingcart.yoybuy.com/es/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/es/myparcels");
                                            case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单支付成功
                                            case RelationTypeEnum.ForwardingWaybillPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/es/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/es/myforwardingparcels");
                                            default:
                                                return View("/Areas/Es/Views/Tenpay/Fail.cshtml", failModel);
                                        }
                                    case LanguageType.Ru:
                                        switch (result.Data.RelationType)
                                        {
                                            case RelationTypeEnum.AddMoney: //充值
                                                return View("/Areas/Ru/Views/Tenpay/Success.cshtml", successModel);
                                            case RelationTypeEnum.DirectOrderPay: //直购支付成功
                                            case RelationTypeEnum.DirectOrderOncePay:
                                                return Redirect("http://order.yoybuy.com/ru/orderv5/orderlist");
                                            case RelationTypeEnum.PurchasingOrderOncePay: //代购订单支付成功
                                            case RelationTypeEnum.PurchasingOrderPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/ru/Purchase/paySuccessful?goodsBelongsType=order&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/ru/order?ot=pp&pt=alipay&tid=" + result.Data.RelationCode);
                                            case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款成功
                                                return Redirect("http://shoppingcart.yoybuy.com/ru/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/ru/myparcels");
                                            case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                                return Redirect("http://shoppingcart.yoybuy.com/ru/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/ru/myparcels");
                                            case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单支付成功
                                            case RelationTypeEnum.ForwardingWaybillPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/ru/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/ru/myforwardingparcels");
                                            default:
                                                return View("/Areas/Ru/Views/Tenpay/Fail.cshtml", failModel);
                                        }
                                    default:
                                        switch (result.Data.RelationType)
                                        {
                                            case RelationTypeEnum.AddMoney: //充值
                                                return View("/Views/Tenpay/Success.cshtml", successModel);
                                            case RelationTypeEnum.DirectOrderPay: //直购支付成功
                                            case RelationTypeEnum.DirectOrderOncePay:
                                                return Redirect("http://order.yoybuy.com/en/orderv5/orderlist");
                                            case RelationTypeEnum.PurchasingOrderOncePay: //代购订单支付成功
                                            case RelationTypeEnum.PurchasingOrderPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=order&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/en/order?ot=pp&pt=alipay&tid=" + result.Data.RelationCode);
                                            case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款成功
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/en/myparcels");
                                            case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/en/myparcels");
                                            case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单支付成功
                                            case RelationTypeEnum.ForwardingWaybillPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + result.Data.RelationCode + "&returnUrl=http://order.yoybuy.com/en/myforwardingparcels");
                                            default:
                                                return View("/Views/Tenpay/Fail.cshtml", failModel);
                                        }

                                }
                            case CommonEnum.Success:
                                #region 更新相关订单、运单的状态

                                var relationType = result.Data.RelationType;
                                var relationCode = result.Data.RelationCode;
                                var userId = result.Data.UserId;
                                switch (relationType)
                                {
                                    case RelationTypeEnum.AddMoney:
                                        break;
                                    case RelationTypeEnum.PurchasingOrderPay: //代购订单支付成功
                                        var res = GoodsDataService.PaySucessWebOrder(relationCode, userId, PaymentTypeEnum.CreditCard.ToString());
                                        #region  代购订单支付 添加日志
                                        if (res == CreateProcureListStatus.Success)
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard代购订单支付成功[ReturnData],订单号:" + relationCode, LogType.AlipayNotify, null, null,
                                                res.ToJson());
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard代购订单支付失败[ReturnData],订单号:" + relationCode, LogType.AlipayNotify, null, null,
                                                res.ToJson());
                                        }
                                        #endregion
                                        break;
                                    case RelationTypeEnum.PurchasingOrderOncePay: //代购订单补款成功
                                        var returnState = OrderDataService.RefundForProcure(int.Parse(relationCode), userId);
                                        #region 代购订单补款 添加日志
                                        if (returnState == 0)
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard代购订单补款成功[ReturnData],订单号:" + relationCode, LogType.AlipayNotify, null, null, null);
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard代购订单补款失败[ReturnData],订单号:" + relationCode, LogType.AlipayNotify, null, null, returnState.ToString());
                                        }
                                        #endregion
                                        break;
                                    case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                        var backState = OrderDataService.PaySuccessWaybill(relationCode, userId, PaymentTypeEnum.CreditCard.ToString());
                                        #region  代购运单支付 添加日志
                                        if (backState.Status == CreateOrderStatus.Success)
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard代购运单支付成功[ReturnData],运单号:" + relationCode, LogType.AlipayNotify, null, null, backState.ToJson());
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard代购运单支付失败[ReturnData],运单号:" + relationCode, LogType.AlipayNotify, null, null, backState.ToJson());
                                        }

                                        #endregion
                                        break;
                                    case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款支付成功
                                        var payRebackState = OrderDataService.PaySecondFeight20120823(relationCode, userId);
                                        #region  代购运单补款支付 添加日志
                                        if (payRebackState == 1)
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard代购运单补款成功[ReturnData],运单号:" + relationCode, LogType.AlipayNotify, null, null, null);
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard代购运单补款失败[ReturnData],运单号:" + relationCode, LogType.AlipayNotify, null, null, null);
                                        }
                                        #endregion
                                        break;
                                    case RelationTypeEnum.ForwardingWaybillPay: //转运运单支付成功
                                        var forwardingWaybillPay = OrderDataService.PaySuccessWaybill(relationCode, userId, PaymentTypeEnum.CreditCard.ToString());
                                        #region 转运运单支付 添加日志
                                        if (forwardingWaybillPay.Status == CreateOrderStatus.Success)
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard转运运单支付成功[ReturnData],运单号:" + relationCode, LogType.AlipayNotify, null, null, forwardingWaybillPay.ToJson());
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard转运运单支付失败[ReturnData],运单号:" + relationCode, LogType.AlipayNotify, null, null, forwardingWaybillPay.ToJson());
                                        }
                                        #endregion
                                        break;
                                    case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单补款成功
                                        var forwardingWaybillOncePay = OrderDataService.PaySecondFeight20120823(relationCode, userId);
                                        #region 转运运单补款 添加日志
                                        if (forwardingWaybillOncePay == 1)
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard转运运单补款成功[ReturnData],运单号:" + relationCode, LogType.AlipayNotify, null, null, null);
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log("使用CreditCard转运运单补款失败[ReturnData],运单号:" + relationCode, LogType.AlipayNotify, null, null, null);
                                        }
                                        #endregion
                                        break;
                                    default:
                                        YOYBuyComLogDataService.Log("接收CreditCard异常[ReturnData]支付失败,单号:" + relationCode, LogType.AlipayNotify, null, null, null);
                                        break;
                                }

                                #endregion

                                switch (result.Data.Language)
                                {
                                    case LanguageType.En:
                                        switch (relationType)
                                        {
                                            case RelationTypeEnum.AddMoney: //充值
                                                return View("/Views/Tenpay/Success.cshtml", successModel);
                                            case RelationTypeEnum.DirectOrderPay: //直购支付成功
                                            case RelationTypeEnum.DirectOrderOncePay:
                                                return Redirect("http://order.yoybuy.com/en/orderv5/orderlist");
                                            case RelationTypeEnum.PurchasingOrderOncePay: //代购订单支付成功
                                            case RelationTypeEnum.PurchasingOrderPay:
                                                YOYBuyComLogDataService.Log("Tenpay代购订单支付", LogType.Info, userId, null, "http://order.yoybuy.com/en/order/?ot=pp&pt=alipay&tid=" + relationCode);
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=order&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/en/order?ot=pp&pt=alipay&tid=" + relationCode);
                                            case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款成功
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/en/myparcels");
                                            case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/en/myparcels");
                                            case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单支付成功
                                            case RelationTypeEnum.ForwardingWaybillPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/en/myforwardingparcels");
                                            default:
                                                return View("/Views/Tenpay/Fail.cshtml", failModel);
                                        }
                                    case LanguageType.Cn:
                                        switch (relationType)
                                        {
                                            case RelationTypeEnum.AddMoney: //充值
                                                return View("/Areas/Cn/Views/Tenpay/Success.cshtml", successModel);
                                            case RelationTypeEnum.DirectOrderPay: //直购支付成功
                                            case RelationTypeEnum.DirectOrderOncePay:
                                                return Redirect("http://order.yoybuy.com/cn/orderv5/orderlist");
                                            case RelationTypeEnum.PurchasingOrderOncePay: //代购订单支付成功
                                            case RelationTypeEnum.PurchasingOrderPay:
                                                YOYBuyComLogDataService.Log("Tenpay代购订单支付", LogType.Info, userId, null, "http://order.yoybuy.com/cn/order/?ot=pp&pt=alipay&tid=" + relationCode);
                                                return Redirect("http://shoppingcart.yoybuy.com/cn/Purchase/paySuccessful?goodsBelongsType=order&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/cn/order?ot=pp&pt=alipay&tid=" + relationCode);
                                            case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款成功
                                                return Redirect("http://shoppingcart.yoybuy.com/cn/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/cn/myparcels");
                                            case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                                return Redirect("http://shoppingcart.yoybuy.com/cn/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/cn/myparcels");
                                            case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单支付成功
                                            case RelationTypeEnum.ForwardingWaybillPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/cn/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/cn/myforwardingparcels");
                                            default:
                                                return View("/Areas/Cn/Views/Tenpay/Fail.cshtml", failModel);
                                        }
                                    case LanguageType.Es:
                                        switch (relationType)
                                        {
                                            case RelationTypeEnum.AddMoney: //充值
                                                return View("/Areas/Es/Views/Tenpay/Success.cshtml", successModel);
                                            case RelationTypeEnum.DirectOrderPay: //直购支付成功
                                            case RelationTypeEnum.DirectOrderOncePay:
                                                return Redirect("http://order.yoybuy.com/es/orderv5/orderlist");
                                            case RelationTypeEnum.PurchasingOrderOncePay: //代购订单支付成功
                                            case RelationTypeEnum.PurchasingOrderPay:
                                                YOYBuyComLogDataService.Log("Tenpay代购订单支付", LogType.Info, userId, null, "http://order.yoybuy.com/es/order/?ot=pp&pt=alipay&tid=" + relationCode);
                                                return Redirect("http://shoppingcart.yoybuy.com/es/Purchase/paySuccessful?goodsBelongsType=order&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/es/order?ot=pp&pt=alipay&tid=" + relationCode);
                                            case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款成功
                                                return Redirect("http://shoppingcart.yoybuy.com/es/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/es/myparcels");
                                            case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                                return Redirect("http://shoppingcart.yoybuy.com/es/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/es/myparcels");
                                            case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单支付成功
                                            case RelationTypeEnum.ForwardingWaybillPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/es/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/es/myforwardingparcels");
                                            default:
                                                return View("/Areas/Es/Views/Tenpay/Fail.cshtml", failModel);
                                        }
                                    case LanguageType.Ru:
                                        switch (relationType)
                                        {
                                            case RelationTypeEnum.AddMoney: //充值
                                                return View("/Areas/Ru/Views/Tenpay/Success.cshtml", successModel);
                                            case RelationTypeEnum.DirectOrderPay: //直购支付成功
                                            case RelationTypeEnum.DirectOrderOncePay:
                                                return Redirect("http://order.yoybuy.com/ru/orderv5/orderlist");
                                            case RelationTypeEnum.PurchasingOrderOncePay: //代购订单支付成功
                                            case RelationTypeEnum.PurchasingOrderPay:
                                                YOYBuyComLogDataService.Log("Tenpay代购订单支付", LogType.Info, userId, null, "http://order.yoybuy.com/ru/order/?ot=pp&pt=alipay&tid=" + relationCode);
                                                return Redirect("http://shoppingcart.yoybuy.com/ru/Purchase/paySuccessful?goodsBelongsType=order&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/ru/order?ot=pp&pt=alipay&tid=" + relationCode);
                                            case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款成功
                                                return Redirect("http://shoppingcart.yoybuy.com/ru/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/ru/myparcels");
                                            case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                                return Redirect("http://shoppingcart.yoybuy.com/ru/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/ru/myparcels");
                                            case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单支付成功
                                            case RelationTypeEnum.ForwardingWaybillPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/ru/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/ru/myforwardingparcels");
                                            default:
                                                return View("/Areas/Ru/Views/Tenpay/Fail.cshtml", failModel);
                                        }
                                    default:
                                        switch (relationType)
                                        {
                                            case RelationTypeEnum.AddMoney: //充值
                                                return View("/Views/Tenpay/Success.cshtml", successModel);
                                            case RelationTypeEnum.DirectOrderPay: //直购支付成功
                                            case RelationTypeEnum.DirectOrderOncePay:
                                                return Redirect("http://order.yoybuy.com/en/orderv5/orderlist");
                                            case RelationTypeEnum.PurchasingOrderOncePay: //代购订单支付成功
                                            case RelationTypeEnum.PurchasingOrderPay:
                                                YOYBuyComLogDataService.Log("Tenpay代购订单支付", LogType.Info, userId, null, "http://order.yoybuy.com/en/order/?ot=pp&pt=alipay&tid=" + relationCode);
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=order&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/en/order?ot=pp&pt=alipay&tid=" + relationCode);
                                            case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款成功
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/en/myparcels");
                                            case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                                return Redirect("http://shoppingcart.yoybuy.com/en/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/en/myparcels");
                                            case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单支付成功
                                            case RelationTypeEnum.ForwardingWaybillPay:
                                                return Redirect("http://shoppingcart.yoybuy.com/Purchase/paySuccessful?goodsBelongsType=waybill&totleAmount=" + amount + "&tracking=" + relationCode + "&returnUrl=http://order.yoybuy.com/en/myforwardingparcels");
                                            default:
                                                return View("/Views/Tenpay/Fail.cshtml", failModel);
                                        }
                                }
                            case CommonEnum.Failed:
                                switch (result.Data.Language)
                                {
                                    case LanguageType.En:
                                        return View("/Views/Tenpay/Fail.cshtml", failModel);

                                    case LanguageType.Cn:
                                        return View("/Areas/Cn/Views/Tenpay/Fail.cshtml", failModel);

                                    case LanguageType.Es:
                                        return View("/Areas/Es/Views/Tenpay/Fail.cshtml", failModel);

                                    case LanguageType.Ru:
                                        return View("/Areas/Ru/Views/Tenpay/Fail.cshtml", failModel);

                                    default:
                                        return View("/Views/Tenpay/Fail.cshtml", failModel);
                                }
                            default:
                                switch (result.Data.Language)
                                {
                                    case LanguageType.En:
                                        return View("/Views/Tenpay/Fail.cshtml", failModel);

                                    case LanguageType.Cn:
                                        return View("/Areas/Cn/Views/Tenpay/Fail.cshtml", failModel);

                                    case LanguageType.Es:
                                        return View("/Areas/Es/Views/Tenpay/Fail.cshtml", failModel);

                                    case LanguageType.Ru:
                                        return View("/Areas/Ru/Views/Tenpay/Fail.cshtml", failModel);

                                    default:
                                        return View("/Views/Tenpay/Fail.cshtml", failModel);
                                }
                        }
                    }
                    else
                    {
                        var failModel = new FailModel();
                        failModel.TradeNo = "";
                        var result = AddMoneyDataService.TenpayPayFinished(transaction_id, out_trade_no, amount, false, callBackModel.ToJson());
                        YOYBuyComLogDataService.Log("接收TenPay信息", LogType.TenpaySend, CurrentUserId, null, "第三方支付失败");
                        return View("/Views/Tenpay/Fail.cshtml", failModel);
                    }
                }
                else
                {
                    var failModel = new FailModel();
                    failModel.TradeNo = "";
                    YOYBuyComLogDataService.Log("接收TenPay信息", LogType.TenpaySend, CurrentUserId, null, "签名认证失败");
                    return View("/Views/Tenpay/Fail.cshtml", failModel);
                    //非空 错误原因
                    //var retmsg = parameters["retmsg"].ToString();
                }
            }
            else
            {
                var failModel = new FailModel();
                failModel.TradeNo = "";
                YOYBuyComLogDataService.Log("接收TenPay信息", LogType.TenpaySend, CurrentUserId, null, "签名认证失败");
                return View("/Views/Tenpay/Fail.cshtml", failModel);
            }
        }
returnurl
public ActionResult notifyurl()
        {
            var collection = Request.HttpMethod == "POST" ? Request.Form : Request.QueryString;
            var responseParameters = TenpayManager.getResponseParameters(collection);
            var responseModel = TenpayManager.getResponseModel(responseParameters);
            var responseSign = TenpayManager.createSign(responseParameters);
            if (responseModel.Sign.Equals(responseSign))
            {
                //通知查询
                var xml = TenpayManager.Call(responseModel.notify_id);
                var callBackParameters = TenpayManager.getCallBackParameters(xml);
                var callBackSign = TenpayManager.createSign(callBackParameters);
                var callBackModel = TenpayManager.getCallBackModel(callBackParameters);

                if (callBackModel.Sign.Equals(callBackSign))
                {
                    //我们的交易号
                    var out_trade_no = callBackModel.out_trade_no;
                    //财付通交易号
                    var transaction_id = callBackModel.transaction_id;
                    //金额,以分为单位
                    var amount = callBackModel.total_fee;
                    //支付结果
                    var trade_state = callBackModel.trade_state;
                    //交易模式,1即时到帐 2中介担保
                    var trade_mode = callBackModel.trade_mode;
                    var retcode = callBackModel.retcode;

                    if (retcode == "0" || trade_mode == "1" || trade_state == "1")
                    {
                        var successModel = new SuccessModel();
                        successModel.TradeNo = transaction_id;
                        successModel.Amount = amount > 0 ? amount : 0;

                        var failModel = new FailModel();
                        failModel.TradeNo = transaction_id;

                        var result = AddMoneyDataService.TenpayPayFinished(transaction_id, out_trade_no, amount, true,
                            callBackModel.ToJson());


                        switch (result.Status)
                        {
                            case CommonEnum.DataExisted:
                                YOYBuyComLogDataService.Log("接收TenPay信息", LogType.TenpaySend, CurrentUserId, null,
                                    "付款成功");
                                return Content("Success");
                            case CommonEnum.Success:

                                var relationType = result.Data.RelationType;
                                var relationCode = result.Data.RelationCode;
                                var userId = result.Data.UserId;
                                #region 更新相关订单、运单的状态

                                switch (relationType)
                                {
                                    case RelationTypeEnum.AddMoney:
                                        break;
                                    case RelationTypeEnum.PurchasingOrderPay: //代购订单支付成功
                                        var res = GoodsDataService.PaySucessWebOrder(relationCode, userId,
                                            PaymentTypeEnum.CreditCard.ToString());

                                        #region  代购订单支付 添加日志

                                        if (res == CreateProcureListStatus.Success)
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard代购订单支付成功[ReturnData],订单号:" + relationCode,
                                                LogType.AlipayNotify, null, null,
                                                res.ToJson());
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard代购订单支付失败[ReturnData],订单号:" + relationCode,
                                                LogType.AlipayNotify, null, null,
                                                res.ToJson());
                                        }

                                        #endregion

                                        break;
                                    case RelationTypeEnum.PurchasingOrderOncePay: //代购订单补款成功
                                        var returnState = OrderDataService.RefundForProcure(int.Parse(relationCode),
                                            userId);

                                        #region 代购订单补款 添加日志

                                        if (returnState == 0)
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard代购订单补款成功[ReturnData],订单号:" + relationCode,
                                                LogType.AlipayNotify, null, null, null);
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard代购订单补款失败[ReturnData],订单号:" + relationCode,
                                                LogType.AlipayNotify, null, null, returnState.ToString());
                                        }

                                        #endregion

                                        break;
                                    case RelationTypeEnum.PurchasingWaybillPay: //代购运单支付成功
                                        var backState = OrderDataService.PaySuccessWaybill(relationCode, userId,
                                            PaymentTypeEnum.CreditCard.ToString());

                                        #region  代购运单支付 添加日志

                                        if (backState.Status == CreateOrderStatus.Success)
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard代购运单支付成功[ReturnData],运单号:" + relationCode,
                                                LogType.AlipayNotify, null, null, backState.ToJson());
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard代购运单支付失败[ReturnData],运单号:" + relationCode,
                                                LogType.AlipayNotify, null, null, backState.ToJson());
                                        }

                                        #endregion

                                        break;
                                    case RelationTypeEnum.PurchasingWaybillOncePay: //代购运单补款支付成功
                                        var payRebackState = OrderDataService.PaySecondFeight20120823(relationCode,
                                            userId);

                                        #region  代购运单补款支付 添加日志

                                        if (payRebackState == 1)
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard代购运单补款成功[ReturnData],运单号:" + relationCode,
                                                LogType.AlipayNotify, null, null, null);
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard代购运单补款失败[ReturnData],运单号:" + relationCode,
                                                LogType.AlipayNotify, null, null, null);
                                        }

                                        #endregion

                                        break;
                                    case RelationTypeEnum.ForwardingWaybillPay: //转运运单支付成功
                                        var forwardingWaybillPay = OrderDataService.PaySuccessWaybill(relationCode,
                                            userId, PaymentTypeEnum.CreditCard.ToString());

                                        #region 转运运单支付 添加日志

                                        if (forwardingWaybillPay.Status == CreateOrderStatus.Success)
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard转运运单支付成功[ReturnData],运单号:" + relationCode,
                                                LogType.AlipayNotify, null, null, forwardingWaybillPay.ToJson());
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard转运运单支付失败[ReturnData],运单号:" + relationCode,
                                                LogType.AlipayNotify, null, null, forwardingWaybillPay.ToJson());
                                        }

                                        #endregion

                                        break;
                                    case RelationTypeEnum.ForwardingWaybillOncePay: //转运运单补款成功
                                        var forwardingWaybillOncePay =
                                            OrderDataService.PaySecondFeight20120823(relationCode, userId);

                                        #region 转运运单补款 添加日志

                                        if (forwardingWaybillOncePay == 1)
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard转运运单补款成功[ReturnData],运单号:" + relationCode,
                                                LogType.AlipayNotify, null, null, null);
                                        }
                                        else
                                        {
                                            YOYBuyComLogDataService.Log(
                                                "使用CreditCard转运运单补款失败[ReturnData],运单号:" + relationCode,
                                                LogType.AlipayNotify, null, null, null);
                                        }

                                        #endregion

                                        break;
                                    default:
                                        YOYBuyComLogDataService.Log(
                                            "接收CreditCard异常[ReturnData]支付失败,单号:" + relationCode, LogType.AlipayNotify,
                                            null, null, null);
                                        break;
                                }

                                #endregion

                                YOYBuyComLogDataService.Log("接收TenPay信息", LogType.TenpaySend, CurrentUserId, null,
                                    "付款成功");
                                return Content("Success");
                            case CommonEnum.Failed:
                                YOYBuyComLogDataService.Log("接收TenPay信息", LogType.TenpaySend, CurrentUserId, null,
                                    "付款失败");
                                return Content("Failed");
                            default:
                                YOYBuyComLogDataService.Log("接收TenPay信息", LogType.TenpaySend, CurrentUserId, null,
                                    "付款失败");
                                return Content("Failed");
                        }
                    }
                    else
                    {
                        var result = AddMoneyDataService.TenpayPayFinished(transaction_id, out_trade_no, amount, false, callBackModel.ToJson());
                        YOYBuyComLogDataService.Log("接收TenPay信息", LogType.TenpaySend, CurrentUserId, null, "第三方支付失败");
                        return Content("Failed");
                    }
                }
                else
                {
                    YOYBuyComLogDataService.Log("接收TenPay信息", LogType.TenpaySend, CurrentUserId, null, "签名认证失败");
                    return Content("Failed");
                }
            }
            else
            {
                //签名认证失败
                YOYBuyComLogDataService.Log("接收TenPay信息", LogType.TenpaySend, CurrentUserId, null, "签名认证失败");
            }
            return Content("");
        }
notifyurl

3.web.config

    <!--Tenpay在线充值开始-->
    <!--Tenpay提交地址-->
    <add key="TenpayPostUrl" value="https://payment.tenpay.com/cgi-bin/icard/icard_pay_gate.cgi" />
    <!--Tenpay商户号-->
    <add key="TenpayPartner" value="111111111" />
    <!--Tenpay密钥-->
    <add key="TenpayKey" value="asdasdasdasd" />
    <!--Tenpay同步回调-->
    <add key="TenpayReturn_url" value="https://account.yoybuy.com/en/returnurl" />
    <!--Tenpay异步回调-->
    <add key="TenpayNotify_url" value="https://account.yoybuy.com/en/notifyurl" />
    <!--<add key="TenpayNotify_url" value="http://114.215.130.252/en/notifyurl" />-->
    <!--Tenpay请求通知地址-->
    <add key="TenpaySearchUrl" value="https://payment.tenpay.com/cgi-bin/icard/icard_verifynotifyid.cgi" />
    <!--Tenpay在线充值结束-->
View Code

 

推荐阅读