Example #1
0
    /// <summary>
    /// 退款处理
    /// </summary>
    /// <param name="payType">支付方式</param>
    /// <param name="oldOrderId">原支付订单号</param>
    /// <param name="newOrderId">退款订单号</param>
    /// <param name="onlineNo">在线交易号、退款流水号</param>
    /// <param name="price">订单金额</param>
    /// <param name="rate">手续费率</param>
    /// <param name="act">收款账号</param>
    /// <param name="detail">退款明细</param>
    /// <returns></returns>
    public string Refund(string payType, string oldOrderId, string newOrderId, string onlineNo, string price, string rate, string act, string detail)
    {
        string msg = "";

        try
        {
            string strOrderID       = newOrderId; //订单编号(退、废)
            string strOrderOldID    = oldOrderId; //原支付订单号
            string strOrderOnlineNo = onlineNo;   //交易号
            string strPrice         = price;      // 退款金额
            string strAct           = act;        //收款账号
            string details          = detail;     //退款明细


            decimal strRate = (!string.IsNullOrEmpty(rate)) ? decimal.Parse(rate) : 0.001M; //费率
            bool    result  = false;
            msg = (string.IsNullOrEmpty(strPrice)) ? "请输入退款金额!" : msg;
            msg = (string.IsNullOrEmpty(strAct)) ? "请输入收款账号!" : msg;
            decimal total = (!string.IsNullOrEmpty(strPrice)) ? decimal.Parse(strPrice) : 0; //订单退款金额
            total = total != 0 ? FourToFiveNum(total, 2) : total;

            if (payType == "1")
            {
                #region 支付宝
                msg = (string.IsNullOrEmpty(strOrderOnlineNo)) ? "请输入交易号!" : msg;
                msg = (strOrderOnlineNo.Length != 16) ? "交易号格式错误!" : msg;

                if (msg == "")
                {
                    PbProject.Logic.Pay.AliPay alipay = new PbProject.Logic.Pay.AliPay(false);

                    #region 处理
                    decimal priceRate = total * strRate; //费率
                    priceRate = FourToFiveNum(priceRate, 2);
                    decimal priceGy = total - priceRate; //供应退款
                    priceGy = FourToFiveNum(priceGy, 2);

                    if (string.IsNullOrEmpty(details))
                    {
                        details = strOrderOnlineNo + "^" + total.ToString("f2") + "^退款|" + act + "^^" + alipay._serveremail + "^^" + priceGy.ToString("f2") + "^退款";
                    }

                    if (strOrderOnlineNo != null && strOrderOnlineNo != "")
                    {
                        string bno = DateTime.Now.ToString("yyyyMMddHHmmsss");

                        string[] strValueS = new string[3];
                        strValueS[0] = bno;
                        strValueS[1] = "1";
                        strValueS[2] = details;

                        //退款
                        result = alipay.IsRefund(strValueS);

                        if (result == true)
                        {
                            msg = "数据提交成功,稍后请查询核对数据。。。";

                            #region 支付宝 查询退款

                            /*
                             * if (msg == "")
                             * {
                             *  string str = alipay.QueryRefundResultStr(strOrderOnlineNo);
                             *  string[] strs = str.Split('#');
                             *  for (int i = 0; i < strs.Length; i++)
                             *  {
                             *      if (!string.IsNullOrEmpty(strs[i]))
                             *      {
                             *          string[] strss = strs[i].Split('$');
                             *
                             *          if (!string.IsNullOrEmpty(strss[0]) && strss[0].Contains("SUCCESS"))
                             *          {
                             *              //退款成功
                             *              msg += "退款成功!银行卡 2 - 7个工作日到账,信用卡 2 - 14 个工作日到账!";
                             *              break;
                             *          }
                             *      }
                             *  }
                             * }
                             * */
                            #endregion
                        }
                        else
                        {
                            msg = "数据提交失败,请检测数据格式是否有误!!!";
                        }
                    }
                    #endregion
                }
                #endregion
            }
            else if (payType == "2")
            {
                #region 快钱
                msg = (string.IsNullOrEmpty(strOrderID)) ? "请输入订单号!" : msg;     //订单编号(退、废)
                msg = (string.IsNullOrEmpty(strOrderOldID)) ? "请输入原订单号!" : msg; //原支付订单号

                if (msg == "")
                {
                    #region 处理

                    PbProject.Logic.Pay._99Bill bill = new PbProject.Logic.Pay._99Bill(false);

                    string  dataTime  = DateTime.Now.ToString("yyyyMMddHHmmss");
                    decimal priceRate = total * strRate; //费率
                    priceRate = FourToFiveNum(priceRate, 2);
                    decimal priceGy = total - priceRate; //供应退款
                    priceGy = FourToFiveNum(priceGy, 2);

                    priceGy   = priceGy * 100;                              //供应退款
                    priceRate = priceRate * 100;                            //费率
                    total     = total * 100;                                //订单退款

                    int p1 = int.Parse(priceGy.ToString().Split('.')[0]);   //供应退款
                    int p2 = int.Parse(priceRate.ToString().Split('.')[0]); //费率
                    int p3 = int.Parse(total.ToString().Split('.')[0]);     //订单退款

                    //"1^[email protected]^5000^爱的|1^[email protected]^7000^分账1|1^[email protected]^8000^分账2";
                    if (string.IsNullOrEmpty(details))
                    {
                        details = "1^" + bill.LinkEmail + "^" + p2.ToString() + "^Refund|1^" + strAct + "^" + p1.ToString() + "^Refund";
                    }

                    string[] Details = new string[6];
                    Details[0] = strOrderOldID; // 订单编号(原订单号)
                    Details[1] = p3.ToString(); // 订单金额
                    Details[2] = "系统退款";        //备注
                    Details[3] = details;
                    Details[4] = strOrderID;    // 订单编号(退废订单编号)
                    Details[5] = dataTime;      //退款流水号


                    string str = bill.Refund(Details);

                    result = bill.IsRefund(str);
                    //result = true;

                    if (result == true)
                    {
                        msg = "数据提交成功,稍后请查询核对数据。。。";
                    }
                    else
                    {
                        msg = "数据提交失败,请检测数据格式是否有误!!!";
                    }

                    #endregion
                }
                #endregion
            }
            else if (payType == "3")
            {
                #region 汇付

                msg = (string.IsNullOrEmpty(strOrderID)) ? "请输入订单号!" : "";     //订单编号(退、废)
                msg = (string.IsNullOrEmpty(strOrderOldID)) ? "请输入原订单号!" : ""; //原支付订单号

                if (msg == "")
                {
                    #region 处理

                    PbProject.Logic.Pay.ChinaPnr chinaPnr = new PbProject.Logic.Pay.ChinaPnr(false);

                    string orderno = DateTime.Now.ToString("yyyyMMddHHmm");
                    string orderid = (strOrderID == strOrderOldID) ? orderno + "_" + strOrderOldID : strOrderID; //订单编号

                    decimal priceRate = total * strRate;                                                         //费率
                    priceRate = FourToFiveNum(priceRate, 2);
                    decimal priceGy = total - priceRate;                                                         //供应退款
                    priceGy = FourToFiveNum(priceGy, 2);

                    if (string.IsNullOrEmpty(details))
                    {
                        details = "Agent:" + act + ":" + priceGy.ToString("f2");
                    }

                    string[] Details = new string[4];
                    Details[0] = orderid;
                    Details[1] = strOrderOldID;
                    Details[2] = strPrice;
                    Details[3] = details;

                    string value = chinaPnr.Refund(Details[0], Details[1], Details[2], Details[3]);

                    if (value.Contains("RespCode=000000") && value.Contains("ErrMsg=成功"))
                    {
                        msg = "数据提交成功,稍后请查询核对数据。。。";
                    }
                    else
                    {
                        msg = "数据提交失败,请检测数据格式是否有误!!!";
                    }
                    #endregion
                }
                #endregion
            }
            else if (payType == "4")
            {
                #region 财付通


                #endregion
            }
            else
            {
                msg = "请选择支付方式";
            }
        }
        catch (Exception)
        {
        }

        return(msg);
    }
    /// <summary>
    /// 执行方法
    /// </summary>
    private string IsValidationNew()
    {
        string rtnOk = "06";

        if (Request["merchantId"] == null)
        {
            return("");
        }

        try
        {
            PbProject.Logic.Pay._99Bill _99bill = new PbProject.Logic.Pay._99Bill();

            string processFlag        = Request["processFlag"].ToString().Trim();
            string txnType            = Request["txnType"].ToString().Trim();
            string orgTxnType         = Request["orgTxnType"].ToString().Trim();
            string amt                = Request["amt"].ToString().Trim();
            string orgExternalTraceNo = Request["orgExternalTraceNo"].ToString().Trim();
            string terminalOperId     = Request["terminalOperId"].ToString().Trim();
            string terminalId         = Request["terminalId"].ToString().Trim();//
            string authCode           = Request["authCode"].ToString().Trim();
            string RRN                = Request["RRN"].ToString().Trim();
            string shortPAN           = Request["shortPAN"].ToString().Trim();
            string responseCode       = Request["responseCode"].ToString().Trim();
            string responseMessage    = Request["responseMessage"].ToString().Trim();//
            string cardType           = Request["cardType"].ToString().Trim();
            string issuerId           = Request["issuerId"].ToString().Trim();
            string issuerIdView       = Request["issuerIdView"].ToString().Trim();    //
            string signature          = Request["signature"].ToString().Trim();       //
            string externalTraceNo    = Request["externalTraceNo"].ToString().Trim(); // 订单号
            string merchantId         = Request["merchantId"].ToString().Trim();      //
            string txnTime            = Request["txnTime"].ToString().Trim();

            responseMessage = HttpUtility.UrlDecode(responseMessage, Encoding.GetEncoding("utf-8"));
            issuerIdView    = HttpUtility.UrlDecode(issuerIdView, Encoding.GetEncoding("utf-8"));


            string val = "";
            val = appendParam(val, processFlag);
            val = appendParam(val, txnType);
            val = appendParam(val, orgTxnType);
            val = appendParam(val, amt);
            val = appendParam(val, externalTraceNo);
            val = appendParam(val, orgExternalTraceNo);
            val = appendParam(val, terminalOperId);
            val = appendParam(val, authCode);
            val = appendParam(val, RRN);
            val = appendParam(val, txnTime);
            val = appendParam(val, shortPAN);
            val = appendParam(val, responseCode);
            val = appendParam(val, cardType);
            val = appendParam(val, issuerId);

            if (CerRSAVerifySignature(val, signature, HttpContext.Current.Server.MapPath("~/Pay/Key/mgw.cer")))
            {
                OnErrorNew("支付失败: " + externalTraceNo, false);

                rtnOk = "1";

                #region 验签成功

                //消费交易
                if (txnType == "PUR")
                {
                    //成功
                    if (processFlag == "0")
                    {
                        //PiaoBao.BLLLogic.Pay.YeePay yeepay = new PiaoBao.BLLLogic.Pay.YeePay();
                        //OnErrorNew("开始记录");
                        ////默认支持银行卡
                        //string pay_type = "1";
                        //yeepay.Charge(terminalId, amt, pay_type, RRN, txnTime.Replace(" ", ""));
                        //OnErrorNew("结束记录");



                        ///// <summary>
                        ///// 充值成功,生成充值账单
                        ///// </summary>
                        ///// <param name="orderId">订单编号</param>
                        ///// <param name="payNo">交易号</param>
                        ///// <param name="price">交易金额</param>
                        ///// <param name="payWay"> //payWay支付方式:1支付宝/2快钱/3汇付/4/财付通/5支付宝网银/6快钱网银/7汇付网银/8财付通网银/
                        ///// 9支付宝pos/10快钱pos/11汇付pos/12财付通/13易宝pos/14账户支付</param>
                        ///// <param name="useId">付款人id 或者 POS机编号</param>
                        ///// <param name="operReason">原因或操作描述</param>
                        ///// <param name="remark">备注</param>

                        PbProject.Logic.Pay.Bill bill = new PbProject.Logic.Pay.Bill();
                        bill.CreateLogMoneyDetail(externalTraceNo, externalTraceNo, amt, 10, terminalId, "在线支付", "在线充值");  // 在线充值

                        //报告给快钱处理结果,并提供将要重定向的地址。
                        OnErrorNew("支付成功:" + externalTraceNo, false);

                        rtnOk = "0";
                    }
                }

                #endregion
            }
            else
            {
                OnErrorNew("验签失败:" + externalTraceNo, false);
                rtnOk = "IG";
            }
        }
        catch (Exception ex)
        {
            OnErrorNew("处理异常:", true);
        }
        return(rtnOk);
    }
Example #3
0
        /// <summary>
        /// 退款查询
        /// </summary>
        /// <param name="payType">支付方式</param>
        /// <param name="oldOrderId">原支付订单号</param>
        /// <param name="newOrderId">退款订单号</param>
        /// <param name="onlineNo">在线交易号 、退款流水号</param>
        /// <returns></returns>
        public string RefundSel(string payType, string oldOrderId, string newOrderId, string onlineNo, out string msgShow)
        {
            string returnValue = "";

            msgShow = "";
            try
            {
                if (payType == "1" || payType == "5")
                {
                    #region 支付宝

                    PbProject.Logic.Pay.AliPay alipay = new PbProject.Logic.Pay.AliPay();
                    msgShow = (string.IsNullOrEmpty(onlineNo) || onlineNo.Length != 16) ? "请正确输入交易号!" : msgShow;

                    if (msgShow == "")
                    {
                        string   str  = alipay.QueryRefundResultStr(onlineNo);
                        string[] strs = str.Split('#');
                        for (int i = 0; i < strs.Length; i++)
                        {
                            if (!string.IsNullOrEmpty(strs[i]))
                            {
                                string[] strss = strs[i].Split('$');

                                if (!string.IsNullOrEmpty(strss[0]) && strss[0].Contains("SUCCESS"))
                                {
                                    //退款成功
                                    msgShow = "退款成功!银行卡 2 - 7个工作日到账,信用卡 2 - 14 个工作日到账!";
                                    break;
                                }
                            }
                        }
                        returnValue = str + "<br/>" + msgShow + "<br/>";
                    }

                    #endregion
                }
                else if (payType == "2" || payType == "6")
                {
                    #region 快钱

                    msgShow = (string.IsNullOrEmpty(newOrderId)) ? "请输入订单号!" : msgShow;
                    msgShow = (string.IsNullOrEmpty(oldOrderId)) ? "请输入原订单号!" : msgShow;
                    msgShow = (string.IsNullOrEmpty(onlineNo)) ? "请输入退款流水号!" : msgShow;

                    if (msgShow == "")
                    {
                        PbProject.Logic.Pay._99Bill bill = new PbProject.Logic.Pay._99Bill();

                        string[] strOrderNoS = onlineNo.Split('|');


                        for (int i = 0; i < strOrderNoS.Length; i++)
                        {
                            if (!string.IsNullOrEmpty(strOrderNoS[i]))
                            {
                                // strOrderNoS[i]; //快钱退款流水号

                                string str = bill.GetRefund(oldOrderId, strOrderNoS[i]);

                                if (str != null && str.Contains("<result>10</result>"))
                                {
                                    msgShow      = "退款成功!银行卡 2 - 7个工作日到账,信用卡 2 - 14 个工作日到账!";
                                    returnValue += str + "<br/>" + msgShow + "<br/>";
                                    break;
                                }
                                else if (str != null && (str.Contains("<result>00</result>") && str.Contains("<errCode></errCode>")))
                                {
                                    msgShow      = "退款进行中!需等待快钱审核!银行卡 2 - 7个工作日到账,信用卡 2 - 14 个工作日到账!";
                                    returnValue += str + "<br/>" + msgShow + "<br/>";
                                    break;
                                }
                                else
                                {
                                    msgShow      = "退款失败!";
                                    returnValue += str + "<br/>" + msgShow + "<br/>";
                                }
                            }
                        }
                    }
                    #endregion
                }
                else if (payType == "3" || payType == "7")
                {
                    #region 汇付

                    PbProject.Logic.Pay.ChinaPnr chinaPnr = new PbProject.Logic.Pay.ChinaPnr();

                    msgShow = (string.IsNullOrEmpty(onlineNo)) ? "请输入退款流水号!" : msgShow;

                    if (msgShow == "")
                    {
                        string[] strOrderNoS = onlineNo.Split('|');

                        for (int i = 0; i < strOrderNoS.Length; i++)
                        {
                            if (!string.IsNullOrEmpty(strOrderNoS[i]))
                            {
                                // strOrderNoS[i]; //汇付 退款订单号
                                //string str = chinaPnr.QueryRefundStatus(strOrderNoS[i]).Replace("#", "<br/>\n");
                                string str = chinaPnr.QueryRefundStatus(strOrderNoS[i]);

                                if (str != null && str.Contains("RespCode=000000") && str.Contains("ErrMsg=退款交易已成功"))
                                {
                                    msgShow      = " 退款成功!银行卡 2 - 7个工作日到账,信用卡 2 - 14 个工作日到账!";
                                    returnValue += str + "<br/>" + msgShow + "<br/>";
                                    break;
                                }
                                else if (str != null && str.Contains("RespCode=000000") && str.Contains("ErrMsg=退款交易,已扣款,系统处理中"))
                                {
                                    msgShow      = " 退款成功,退款中!银行卡 2 - 7个工作日到账,信用卡 2 - 14 个工作日到账!";
                                    returnValue += str + "<br/>" + msgShow + "<br/>";
                                    break;
                                }
                                else
                                {
                                    msgShow      = " 退款失败!";
                                    returnValue += str + "<br/>" + msgShow + "<br/>";
                                }
                            }
                        }
                    }
                    #endregion
                }
                else if (payType == "4" || payType == "8" || payType == "40")
                {
                    #region 财付通
                    TenPayParam tenPayParam = new TenPayParam();
                    tenPayParam.Orderid    = newOrderId;
                    tenPayParam.OldOrderid = oldOrderId;
                    tenPayParam.PayNo      = onlineNo;
                    tenPayParam.Date       = DateTime.Now.ToString("yyyyMMdd");
                    returnValue            = new TenPay().ClientSplitInquire(tenPayParam);
                    #endregion
                }
                else
                {
                    msgShow = "请选择支付方式";
                }
            }
            catch (Exception)
            {
            }
            return(returnValue);
        }
    /// <summary>
    /// 处理快钱返回
    /// </summary>
    private string IsValidation()
    {
        string value = "";

        try
        {
            PbProject.Logic.Pay._99Bill _99bill = new PbProject.Logic.Pay._99Bill();

            #region 参数

            String rtnUrl = "";
            //设置人民币网关密钥
            //String key = _99bill._key;
            //获取网关版本
            String version = Request["version"].ToString().Trim();
            //获取语言种类
            String language = Request["language"].ToString().Trim();
            //签名类型.固定值
            String signType = Request["signType"].ToString().Trim();
            //获取支付方式
            String payType = Request["payType"].ToString().Trim();
            //获取银行代码
            String bankId = Request["bankId"].ToString().Trim();
            //商户号
            String pid = Request["pid"].ToString().Trim();
            //获取商户订单号
            String orderId = Request["orderId"].ToString().Trim();
            //获取订单提交时间
            String orderTime = Request["orderTime"].ToString().Trim();
            //获取原始订单金额
            String orderAmount = Request["orderAmount"].ToString().Trim();
            //获取快钱交易号
            String dealId = Request["dealId"].ToString().Trim();
            //获取银行交易号
            String bankDealId = Request["bankDealId"].ToString().Trim();
            //获取在快钱交易时间
            String dealTime = Request["dealTime"].ToString().Trim();
            //获取实际支付金额
            String payAmount = Request["payAmount"].ToString().Trim();
            //我们的联系方式
            String fee = Request["fee"].ToString().Trim();
            //我们的联系方式类型
            String payeeContactType = Request["payeeContactType"].ToString().Trim();
            //我们的收款金额
            String payeeContact = Request["payeeContact"].ToString().Trim();
            //获取交易手续费
            String payeeAmount = Request["payeeAmount"].ToString().Trim();
            //获取扩展字段1
            String ext1 = Request["ext1"].ToString().Trim();
            //获取扩展字段2
            String ext2 = Request["ext2"].ToString().Trim();
            //获取处理结果
            //10代表 成功; 11代表 失败
            //00代表 下订单成功(仅对电话银行支付订单返回);01代表 下订单失败(仅对电话银行支付订单返回)
            String payResult = Request["payResult"].ToString().Trim();
            //分润字符串
            String sharingResult = Request["sharingResult"].ToString().Trim();
            //获取错误代码
            String errCode = Request["errCode"].ToString().Trim();
            //获取加密签名串
            String signMsg = Request["signMsg"].ToString().Trim();

            #endregion

            #region 生成加密串。必须保持如下顺序。
            String merchantSignMsgVal = "";
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "version", version);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "language", language);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "signType", signType);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "payType", payType);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "bankId", bankId);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "pid", pid);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "orderId", orderId);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "orderTime", orderTime);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "orderAmount", orderAmount);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "dealId", dealId);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "bankDealId", bankDealId);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "dealTime", dealTime);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "payAmount", payAmount);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "fee", fee);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "payeeContactType", payeeContactType);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "payeeContact", payeeContact);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "payeeAmount", payeeAmount);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "ext1", ext1);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "ext2", ext2);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "payResult", payResult);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "sharingResult", sharingResult);
            merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "errCode", errCode);
            // merchantSignMsgVal = _99bill.appendParam(merchantSignMsgVal, "key", key); //md5 加密使用
            // String merchantSignMsg = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(merchantSignMsgVal, "MD5");
            #endregion

            #region 块钱(证书加密)

            //merchantSignMsgVal = merchantSignMsgVal + "&";
            ///pki加密方式 使用的是快钱的cer证书
            byte[] bytes = System.Text.Encoding.UTF8.GetBytes(merchantSignMsgVal);

            byte[] SignatureByte = Convert.FromBase64String(signMsg);
            //Response.Write(SignatureByte);
            X509Certificate2         cert   = new X509Certificate2(Server.MapPath("~/Pay/Key/99bill.cert.rsa.20140728.cer"), "");
            RSACryptoServiceProvider rsapri = (RSACryptoServiceProvider)cert.PublicKey.Key;
            rsapri.ImportCspBlob(rsapri.ExportCspBlob(false));
            RSAPKCS1SignatureDeformatter f = new RSAPKCS1SignatureDeformatter(rsapri);
            byte[] result;
            f.SetHashAlgorithm("SHA1");
            SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
            result = sha.ComputeHash(bytes);
            //Response.Write(result);

            #endregion

            //OnErrorNew("等待验签", false);

            //商家进行数据处理,并跳转会商家显示支付结果的页面
            ///首先进行签名字符串验证
            //if (signMsg.ToUpper() == merchantSignMsg.ToUpper())
            if (f.VerifySignature(result, SignatureByte))
            {
                //OnErrorNew("验签成功", false);

                #region 验签成功

                if (payResult == "10")
                {
                    if (orderId.Substring(0, 1) == "0")
                    {
                        #region 机票

                        #endregion
                    }
                    else if (orderId.Substring(0, 1) == "1")
                    {
                        #region 充值

                        #endregion
                    }
                    else if (orderId.Substring(0, 1) == "2")
                    {
                        #region 短信

                        #endregion
                    }
                    value = "Sucess.aspx?PayType=2&ReturnType=1&OrderId=" + orderId + "&Price=" + orderAmount + "&OnLineNo=" + dealId;
                }
                else
                {
                }
                #endregion
            }
            else
            {
                //OnErrorNew("验签失败", false);
            }
        }
        catch (Exception ex)
        {
            //OnErrorNew("catch:" + ex, false);
        }

        return(value);
    }
Example #5
0
        /// <summary>
        /// 支付查询
        /// </summary>
        /// <param name="payType">支付方式</param>
        /// <param name="oldOrderId">订单号</param>
        ///  <param name="IsOperOrder">true:更新订单等信息 、false:不跟新订单等信息</param>
        /// <param name="oldOrderId">out:提示消息</param>
        /// <returns></returns>
        public string PaySel(string payType, string oldOrderId, bool IsOperOrder, out string msgShow)
        {
            string strValue = "";

            msgShow = "";

            try
            {
                string  PayNo    = ""; //交易号
                decimal PayMoney = 0;  //交易金额

                PbProject.Logic.Pay.Bill payBill = new PbProject.Logic.Pay.Bill();

                if (payType == "1")
                {
                    msgShow += "支付宝:";

                    #region 支付宝

                    PbProject.Logic.Pay.AliPay aliPay = new PbProject.Logic.Pay.AliPay();

                    strValue = aliPay.TradeQuery(oldOrderId);

                    if (strValue.Contains("<error>TRADE_NOT_EXIST</error>"))
                    {
                        msgShow += "查询失败";
                    }
                    else if (strValue.Contains("<trade_status>TRADE_SUCCESS</trade_status>"))
                    {
                        msgShow += "交易成功";

                        XElement root = XElement.Parse(strValue);

                        if (root.Element("response") != null)
                        {
                            XElement xe = root.Element("response");

                            if (xe.Element("trade") != null)
                            {
                                XElement xe1 = xe.Element("trade");

                                //交易号
                                if (xe1.Element("trade_no") != null)
                                {
                                    PayNo    = xe1.Element("trade_no").Value;
                                    msgShow += " , 交易号:" + PayNo;
                                }

                                //交易金额
                                if (xe1.Element("total_fee") != null)
                                {
                                    PayMoney = decimal.Parse(xe1.Element("total_fee").Value);
                                    msgShow += " , 订单支付金额:" + PayMoney.ToString("f2");
                                }
                            }
                        }


                        if (IsOperOrder && msgShow.Contains("交易成功"))
                        {
                            payBill.CreateBillPayBill(oldOrderId, PayNo, 1, "", "在线支付", "支付宝支付", ""); // 支付
                        }
                    }
                    else
                    {
                        msgShow += "支付宝 未付";
                    }



                    #endregion

                    strValue = "支付宝查询结果:" + strValue;
                }
                else if (payType == "2")
                {
                    msgShow += "快钱:";

                    #region 快钱

                    PbProject.Logic.Pay._99Bill bill = new PbProject.Logic.Pay._99Bill();
                    strValue = bill.GetPayReturn(oldOrderId);

                    if (strValue.Contains("<payResult>10</payResult>"))
                    {
                        msgShow += "交易成功";
                        XElement root = XElement.Parse(strValue);
                        //交易号
                        if (root.Element("dealId") != null)
                        {
                            PayNo    = root.Element("dealId").Value;
                            msgShow += " , 交易号:" + PayNo;
                        }
                        //支付金额
                        if (root.Element("payAmount") != null)
                        {
                            PayMoney = decimal.Parse(root.Element("payAmount").Value);
                            PayMoney = PayMoney / 100;
                            msgShow += " , 订单支付金额:" + PayMoney.ToString("f2");
                        }
                        if (IsOperOrder && msgShow.Contains("交易成功"))
                        {
                            payBill.CreateBillPayBill(oldOrderId, PayNo, 2, "", "在线支付", "快钱支付", ""); // 支付
                        }
                        if (strValue.Contains("<sharingStatus>10</sharingStatus>"))
                        {
                            msgShow += ",分账成功";
                        }
                        else
                        {
                            msgShow += ",分账失败";
                        }
                    }
                    else
                    {
                        msgShow += "快钱 未付";
                    }
                    #endregion

                    strValue = "快钱查询结果:" + strValue;
                }
                else if (payType == "3")
                {
                    msgShow += "汇付:";

                    #region 汇付

                    PbProject.Logic.Pay.ChinaPnr chinaPnr = new PbProject.Logic.Pay.ChinaPnr();
                    strValue = chinaPnr.QueryStatus(oldOrderId);
                    if (strValue.Contains("CmdId=QueryStatus") && strValue.Contains("RespCode=000000") && strValue.Contains("已支付"))
                    {
                        msgShow += "交易成功";
                        msgShow += " , 交易号:" + DateTime.Now.ToString("yyyyMMddHHmmss");
                        msgShow += " , 订单支付金额:见订单";

                        if (IsOperOrder && msgShow.Contains("交易成功"))
                        {
                            payBill.CreateBillPayBill(oldOrderId, PayNo, 3, "", "在线支付", "汇付支付", ""); // 支付
                        }
                    }
                    else
                    {
                        msgShow += "汇付 未付";
                    }

                    #endregion

                    strValue = "汇付查询结果:" + strValue;
                }
                else if (payType == "4")
                {
                    msgShow += "财付通:";

                    #region 财付通
                    msgShow += "财付通暂时不支付查询";
                    #endregion

                    strValue = "汇付查询结果:" + msgShow;
                }
                else
                {
                    msgShow = "请选择支付方式";
                }
            }
            catch (Exception)
            {
            }
            return(strValue);
        }