Ejemplo n.º 1
0
        private static string GetPaymentServerUrl(PaymentEnvironment environment, PaymentChannel channel)
        {
            string host = environment.Equals(PaymentEnvironment.Sandbox) ?
                          "https://payment-sandbox.funplusgame.com" :
                          "https://payment.funplusgame.com";

            string channelName;

            switch (channel)
            {
            case PaymentChannel.PlayStore:
                channelName = "googleplayiap";
                break;

            case PaymentChannel.AppStore:
                channelName = "appleiap";
                break;

            case PaymentChannel.Amazon:
                channelName = "amazoniap";
                break;

            default:
                channelName = "unknown";
                break;
            }

            return(string.Format("{0}/callback/{1}/", host, channelName));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Used for test environment, where PayPal sandbox credentials are static.
 /// </summary>
 public PayPalConfiguration(PaymentEnvironment environment)
     : this(environment, TestUser, TestPassword, TestSignature)
 {
     if (environment == PaymentEnvironment.Live)
     {
         throw new ArgumentException("PayPal UserId, Password and Signature must be provided for the live environment.");
     }
 }
Ejemplo n.º 3
0
 public GoogleCheckoutConfiguration(PaymentEnvironment environment, string merchantId, string merchantKey)
 {
     if (string.IsNullOrWhiteSpace(merchantId)) throw new ArgumentNullException("merchantId");
     if (string.IsNullOrWhiteSpace(merchantKey)) throw new ArgumentNullException("merchantKey");
     Environment = environment;
     MerchantId = merchantId;
     MerchantKey = merchantKey;
 }
Ejemplo n.º 4
0
 public DataCash3DSecureConfiguration(PaymentEnvironment environment, string merchantId, string password,
     string merchantUrl, string purchaseDescription)
     : base(environment, merchantId, password)
 {
     if (string.IsNullOrWhiteSpace(merchantUrl)) throw new ArgumentNullException("merchantUrl");
     if (string.IsNullOrWhiteSpace(purchaseDescription)) throw new ArgumentNullException("purchaseDescription");
     MerchantUrl = merchantUrl;
     PurchaseDescription = purchaseDescription;
 }
Ejemplo n.º 5
0
        public PayPalConfiguration(PaymentEnvironment environment, string userId = null, string password = null, string signature = null)
        {
            if (string.IsNullOrEmpty(userId)) throw new ArgumentNullException("userId");
            if (string.IsNullOrEmpty(password)) throw new ArgumentNullException("password");
            if (string.IsNullOrEmpty(signature)) throw new ArgumentNullException("signature");

            Environment = environment;
            UserId = userId;
            Password = password;
            Signature = signature;
        }
Ejemplo n.º 6
0
 public GoogleCheckoutConfiguration(PaymentEnvironment environment, string merchantId, string merchantKey)
 {
     if (string.IsNullOrWhiteSpace(merchantId))
     {
         throw new ArgumentNullException("merchantId");
     }
     if (string.IsNullOrWhiteSpace(merchantKey))
     {
         throw new ArgumentNullException("merchantKey");
     }
     Environment = environment;
     MerchantId  = merchantId;
     MerchantKey = merchantKey;
 }
Ejemplo n.º 7
0
 public static void SendData(PaymentEnvironment environment,
                             PaymentChannel channel,
                             Dictionary <string, String> data,
                             Action onSuccess,
                             Action <string> onFailure)
 {
     Instance.SendDataToPaymentServer(
         environment,
         channel,
         data,
         onSuccess,
         onFailure
         );
 }
Ejemplo n.º 8
0
 public DataCash3DSecureConfiguration(PaymentEnvironment environment, string merchantId, string password,
                                      string merchantUrl, string purchaseDescription)
     : base(environment, merchantId, password)
 {
     if (string.IsNullOrWhiteSpace(merchantUrl))
     {
         throw new ArgumentNullException("merchantUrl");
     }
     if (string.IsNullOrWhiteSpace(purchaseDescription))
     {
         throw new ArgumentNullException("purchaseDescription");
     }
     MerchantUrl         = merchantUrl;
     PurchaseDescription = purchaseDescription;
 }
Ejemplo n.º 9
0
        private void SendDataToPaymentServer(PaymentEnvironment environment,
                                             PaymentChannel channel,
                                             Dictionary <string, String> data,
                                             Action onSuccess,
                                             Action <string> onFailure)
        {
            string url = GetPaymentServerUrl(environment, channel);

            WWWForm wf = new WWWForm();

            foreach (KeyValuePair <string, string> entry in data)
            {
                wf.AddField(entry.Key, entry.Value);
            }

            StartCoroutine(Post(url, wf, onSuccess, onFailure));
        }
Ejemplo n.º 10
0
        public PayPalConfiguration(PaymentEnvironment environment, string userId = null, string password = null, string signature = null)
        {
            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentNullException("userId");
            }
            if (string.IsNullOrEmpty(password))
            {
                throw new ArgumentNullException("password");
            }
            if (string.IsNullOrEmpty(signature))
            {
                throw new ArgumentNullException("signature");
            }

            Environment = environment;
            UserId      = userId;
            Password    = password;
            Signature   = signature;
        }
Ejemplo n.º 11
0
 public DataCashConfiguration(PaymentEnvironment environment, string merchantId, string password)
 {
     Environment = environment;
     MerchantId = merchantId;
     Password = password;
 }
Ejemplo n.º 12
0
    public void Tx1372()
    {
        LogManager.LogFielPrefix = "tx1372";
        LogManager.LogPath       = "D:/Tx1372Order_log/";
        LogManager.WriteLog(LogFile.Trace.ToString(), DateTime.Now + "进入Tx372程序\r");
        string    LocalSqlServer = SqlHelper.LocalSqlServer;
        DataTable dt             = new Hi.BLL.PAY_PrePayment().GetDate("guid,id,OrderID", "pay_payment", "  verifystatus=40 and status =10 and IsAudit =2 ");

        foreach (DataRow dr in dt.Rows)
        {
            string number    = Convert.ToString(dr["guid"]);   //支付交易流水号
            int    paymentid = Convert.ToInt32(dr["id"]);      //支付表id
            int    Orderid   = Convert.ToInt32(dr["OrderID"]); //支付表关联ID

            string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
            PaymentEnvironment.Initialize(configPath);
            string institutionID = WebConfigurationManager.AppSettings["PayOrgCode"];//机构号码

            Tx1372Request tx1372 = new Tx1372Request();
            tx1372.setInstitutionID(institutionID);
            tx1372.setPaymentNo(number);
            tx1372.process();
            TxMessenger    txMessenger    = new TxMessenger();
            String[]       respMsg        = txMessenger.send(tx1372.getRequestMessage(), tx1372.getRequestSignature());
            Tx1372Response tx1372Response = new Tx1372Response(respMsg[0], respMsg[1]);
            //接口调用成功
            if ("2000".Equals(tx1372Response.getCode()))
            {
                LogManager.WriteLog(LogFile.Trace.ToString(), "流水号:" + number + "    状态:" + tx1372Response.getStatus() + "\r");
                //支付成功
                if (20 == tx1372Response.getStatus())
                {
                    //支付成功,修改状态
                    //企业钱包修改状态
                    int           order  = 0;
                    int           pay    = 0;
                    int           prepay = 0;
                    SqlConnection con    = new SqlConnection(LocalSqlServer);
                    con.Open();
                    SqlTransaction sqlTrans = con.BeginTransaction();
                    try
                    {
                        Hi.Model.PAY_Payment    paymentmodel    = new Hi.BLL.PAY_Payment().GetModel(paymentid);
                        Hi.Model.DIS_Order      ordermodel      = new Hi.BLL.DIS_Order().GetModel(Orderid);
                        Hi.Model.PAY_PrePayment prepaymentmodel = new Hi.BLL.PAY_PrePayment().GetModel(Orderid);
                        if (ordermodel != null)                                                                                                                                                       //订单支付
                        {
                            order = new Hi.BLL.DIS_Order().UpdateOrderPstate(con, Orderid, paymentmodel.PayPrice - Convert.ToDecimal(paymentmodel.vdef5 == "" ? "0" : paymentmodel.vdef5), sqlTrans); //修改订单状态
                            pay   = new Hi.BLL.PAY_Payment().updatePayState(con, paymentid, sqlTrans);                                                                                                //修改支付表状态

                            if (order > 0 && pay > 0)
                            {
                                sqlTrans.Commit();
                            }
                            else
                            {
                                sqlTrans.Rollback();
                            }
                        }
                        else if (prepaymentmodel != null)//预付款充值
                        {
                            pay    = new Hi.BLL.PAY_Payment().updatePayState(con, paymentid, sqlTrans);
                            prepay = new Hi.BLL.PAY_PrePayment().updatePrepayState(con, prepaymentmodel.ID, sqlTrans);
                            if (pay > 0 && prepay > 0)
                            {
                                sqlTrans.Commit();
                            }
                            else
                            {
                                sqlTrans.Rollback();
                            }
                        }
                    }
                    catch
                    {
                        order = 0;
                        pay   = 0;
                        sqlTrans.Rollback();
                    }
                    finally
                    {
                        con.Close();
                    }
                }
                else if (30 == tx1372Response.getStatus())//支付失败
                {
                    Hi.Model.PAY_Payment payment = new Hi.BLL.PAY_Payment().GetModel(paymentid);
                    payment.status = 30;//支付失败
                    new Hi.BLL.PAY_Payment().Update(payment);

                    LogManager.WriteLog(LogFile.Trace.ToString(), "失败:" + tx1372Response.getStatus() + "\r");
                }
            }
        }
    }
Ejemplo n.º 13
0
    /// <summary>
    /// 清算手续费
    /// </summary>
    /// <param name="sxf">sxf金额</param>
    /// <returns></returns>
    public bool JS_sxfWay(int ordID, string ReceiptNo, string guid, int compID, int paymentid, long price)
    {
        bool fal = false;
        //-----银行信息
        string orgcode              = string.Empty;  //机构代码
        int    accountType          = 0;             //帐号类型
        string paymentaccountname   = string.Empty;  //账户名称
        string paymentaccountnumber = string.Empty;  //账户号码
        string bankaccount          = string.Empty;  //收款方在银行开立的账户
        string bankId        = string.Empty;         //银行ID
        string accountname   = string.Empty;         //账户名称
        string accountnumber = string.Empty;         //账户号码
        string branchname    = string.Empty;         //开会行地址
        string province      = string.Empty;         //开会所在省
        string city          = string.Empty;         //开会所在市
        string remark        = "手续费清算-" + ReceiptNo; //

        int paylogID = 0;                            //记录日志Id

        //结算接口日志表
        Hi.Model.PAY_PayLog paylogmodel = new Hi.Model.PAY_PayLog();
        Hi.BLL.PAY_PayLog   paylogbll   = new Hi.BLL.PAY_PayLog();
        //获取平台银行收款账户
        DataTable dt_bank = new Hi.BLL.PAY_PrePayment().GetDate(@"'001520' as  OrgCode,'' as payName,'' as PayCode,SYS_PaymentBank.type,
 SYS_PaymentBank.BankID,SYS_PaymentBank.AccountName,SYS_PaymentBank.bankcode
 ,SYS_PaymentBank.bankAddress,SYS_PaymentBank.bankprivate,SYS_PaymentBank.bankcity", "SYS_PaymentBank", "  SYS_PaymentBank.Isno=1  and SYS_PaymentBank.dr=0");

        //查询银行信息
        if (dt_bank.Rows.Count > 0)
        {
            foreach (DataRow drdis in dt_bank.Rows)
            {
                orgcode              = WebConfigurationManager.AppSettings["PayOrgCode"]; // Convert.ToString(drdis["OrgCode"]);//机构代码
                accountType          = Convert.ToInt32(drdis["type"]);                    //帐号类型
                paymentaccountname   = Convert.ToString(drdis["payName"]);                //账户名称
                paymentaccountnumber = Convert.ToString(drdis["PayCode"]);                //账户号码
                //收款方在银行开立的账户
                bankId        = Convert.ToString(drdis["BankID"]);;                       //银行ID
                accountname   = Convert.ToString(drdis["AccountName"]);                   //账户名称
                accountnumber = Convert.ToString(drdis["bankcode"]);                      //账户号码
                branchname    = Convert.ToString(drdis["bankAddress"]);                   //开会行地址
                province      = Convert.ToString(drdis["bankprivate"]);                   //开会所在省
                city          = Convert.ToString(drdis["bankcity"]);                      //开会所在市
            }


            //先插入日志表,
            paylogmodel.OrderId     = ordID;
            paylogmodel.Ordercode   = ReceiptNo;
            paylogmodel.number      = guid + "_sxf";
            paylogmodel.CompID      = compID;
            paylogmodel.OrgCode     = orgcode;
            paylogmodel.MarkName    = paymentaccountname;
            paylogmodel.MarkNumber  = paymentaccountnumber;
            paylogmodel.AccountName = accountname;
            paylogmodel.bankcode    = accountnumber;
            paylogmodel.bankAddress = branchname;
            paylogmodel.bankPrivate = province;
            paylogmodel.bankCity    = city;
            paylogmodel.Price       = price;
            paylogmodel.Remark      = remark;
            paylogmodel.CreateDate  = DateTime.Now;
            paylogmodel.CreateUser  = 0;
            paylogID = paylogbll.Add(paylogmodel);


            if (paylogID > 0)//日志插入成功
            {
                //调用中金接口,做结算处理-------------------------------
                try
                {
                    string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
                    PaymentEnvironment.Initialize(configPath);

                    // 2.创建交易请求对象
                    Tx1341Request tx1341Request = new Tx1341Request();
                    tx1341Request.setInstitutionID(orgcode);
                    tx1341Request.setSerialNumber(guid + "_sxf");
                    tx1341Request.setOrderNo(ReceiptNo);
                    tx1341Request.setAmount(price);
                    tx1341Request.setRemark(remark);
                    tx1341Request.setAccountType(accountType);
                    tx1341Request.setPaymentAccountName(paymentaccountname);
                    tx1341Request.setPaymentAccountNumber(paymentaccountnumber);

                    BankAccount bankAccount = new BankAccount();
                    bankAccount.setBankID(bankId);
                    bankAccount.setAccountName(accountname);
                    bankAccount.setAccountNumber(accountnumber);
                    bankAccount.setBranchName(branchname);
                    bankAccount.setProvince(province);
                    bankAccount.setCity(city);
                    tx1341Request.setBankAccount(bankAccount);

                    // 3.执行报文处理
                    tx1341Request.process();

                    //2个信息参数
                    HttpContext.Current.Items["txCode"] = "1341";
                    HttpContext.Current.Items["txName"] = "市场订单结算(结算)";

                    // 与支付平台进行通讯
                    TxMessenger txMessenger = new TxMessenger();
                    String[]    respMsg     = txMessenger.send(tx1341Request.getRequestMessage(), tx1341Request.getRequestSignature());// 0:message; 1:signature
                    String      plaintext   = XmlUtil.formatXmlString(Encoding.UTF8.GetString(Convert.FromBase64String(respMsg[0])));
                    Console.WriteLine("[message] = [" + respMsg[0] + "]");
                    Console.WriteLine("[signature] = [" + respMsg[1] + "]");
                    Console.WriteLine("[plaintext] = [" + plaintext + "]");

                    Tx134xResponse tx134xResponse = new Tx134xResponse(respMsg[0], respMsg[1]);
                    HttpContext.Current.Items["plainText"] = tx134xResponse.getResponsePlainText();
                    string strs = tx134xResponse.getCode() + "," + tx134xResponse.getMessage();

                    //日志记录 接口返回的信息
                    paylogmodel.Start         = tx134xResponse.getCode();
                    paylogmodel.ResultMessage = tx134xResponse.getMessage();
                    paylogmodel.ID            = paylogID;
                    bool payLog_update = paylogbll.Update(paylogmodel);

                    if ("2000".Equals(tx134xResponse.getCode()))
                    {
                        //手续费收取成功,修改标记手续费清算状态 ,//手续费结算成功

                        int num = new Hi.BLL.PAY_PrePayment().Updatejsxf_no(ReceiptNo);
                        if (num > 0)
                        {
                            fal = true;
                        }
                    }
                    else
                    {
                        //清算出现问题,发送邮件通知
                        try
                        {
                            strs = "手续费结算失败:" + DateTime.Now.ToString() + "\r\n" + "错误流水号:" + ReceiptNo + "\r\n" + "企业ID:" + compID;
                            PayInfoType.SendFinsh(strs, ReceiptNo);
                        }
                        catch { }
                    }
                }
                catch (Exception ex)
                {
                    LogManager.WriteLog(LogFile.Trace.ToString(), "手续费结算接口出错:" + DateTime.Now.ToString() + "\r\n" + "订单编号:" + ReceiptNo);
                }
            }
            else
            {
                LogManager.WriteLog(LogFile.Trace.ToString(), "手续费结算日志表插入出错:" + DateTime.Now.ToString() + "\r\n" + "订单编号:" + ReceiptNo);
            }
        }
        else
        {
            //清算出现问题,发送邮件通知
            try
            {
                string mes = "<br>手续费结算失败,请维护收款帐号信息:" + DateTime.Now.ToString() + "<br>" + "错误流水号:" + ReceiptNo + "<br>" + "企业ID:" + compID;
                // PayInfoType.SendFinsh(mes, ReceiptNo);
            }
            catch { }
        }


        return(fal);
    }
Ejemplo n.º 14
0
    public void Test(string Type)
    {
        ////本地日志记录
        LogManager.LogFielPrefix = "Order_time";
        LogManager.LogPath       = "D:/订单结算日志Order_log/";

        LogManager.WriteLog(LogFile.Trace.ToString(), DateTime.Now.ToString() + "-订单结算程序启动>>>>>>>>>>>...\r\n");

        string strMsg     = string.Empty;
        string pre_strMsg = string.Empty;
        string fw_strMsg  = string.Empty;
        string head       = "各位,您好!<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + DateTime.Now.Year + "年" + DateTime.Now.Month + "月" + DateTime.Now.Day + "日" + " 结算情况如下,请查看:";;

        string topMsg      = string.Empty;
        string pre_topMsg  = string.Empty;
        string fw_topMsg   = string.Empty;
        string downMsg     = string.Empty;
        string pre_downMsg = string.Empty;
        string fw_downMsg  = string.Empty;

        int ord_errornum = 0;         //记录订单支付错误的记录
        int pre_errornum = 0;         //记录企业钱包错误的记录
        int fw_errornum  = 0;         //记录服务错误的记录

        int    db_num = 0;            //担保支付记录
        string db_meg = string.Empty; //担保支付信息


        //订单结算方法
        if (Type == "Order")
        {
            string LocalSqlServer = SqlHelper.LocalSqlServer;

            int     compID        = 0;
            int     disID         = 0;
            long    price         = 0;                                                                      //金额
            int     ordID         = 0;                                                                      //订单Id
            string  ReceiptNo     = string.Empty;                                                           //订单号
            string  guid          = string.Empty;                                                           //流水号
            string  remark        = string.Empty;                                                           //订单备注
            int     paymentID     = 0;                                                                      //支付表ID
            int     Channel       = 0;                                                                      //支付渠道(1,快捷支付,2,银联支付 ,3,网银支付,4,B2B网银支付)
            decimal payment_zfsxf = 0;                                                                      //支付表计算的手续费
            int     Paymen_Type   = 0;                                                                      //支付类型
            int     OState        = 0;                                                                      //判断是否已确认到货
            int     jsxf_no       = 0;                                                                      //判断手续费是否结算成功
            string  hc_flag       = string.Empty;                                                           //结算回冲标准

            decimal Old_price = 0;                                                                          //原支付金额
            //-----银行信息
            string orgcode              = ConfigurationManager.AppSettings["PayOrgCode"].ToString().Trim(); // string.Empty;//机构代码
            int    accountType          = 0;                                                                //帐号类型
            string paymentaccountname   = string.Empty;                                                     //账户名称(支付平台账户 当 AccountType=20 时,该项必填)
            string paymentaccountnumber = string.Empty;                                                     //账户号码(支付平台账户 当 AccountType=20 时,该项必填)
            string bankaccount          = string.Empty;                                                     //收款方在银行开立的账户
            string bankId        = string.Empty;                                                            //银行ID
            string accountname   = string.Empty;                                                            //账户名称
            string accountnumber = string.Empty;                                                            //账户号码
            string branchname    = string.Empty;                                                            //开会行地址
            string province      = string.Empty;                                                            //开会所在省
            string city          = string.Empty;                                                            //开会所在市

            //结算接口日志表
            Hi.Model.PAY_PayLog paylogmodel = new Hi.Model.PAY_PayLog();
            Hi.BLL.PAY_PayLog   paylogbll   = new Hi.BLL.PAY_PayLog();
            int paylogID = 0;//接口日志返回ID



            #region 订单结算
            string sxfsq = "-1";

            DataTable dt_order = new Hi.BLL.PAY_PrePayment().GetdataTable(1, "", 1);
            if (dt_order.Rows.Count > 0)
            {
                foreach (DataRow dr in dt_order.Rows)
                {
                    compID        = 0;
                    disID         = 0;
                    price         = 0;                   //金额
                    ordID         = 0;                   //订单Id
                    ReceiptNo     = string.Empty;        //订单号
                    guid          = string.Empty;        //流水号
                    remark        = string.Empty;        //订单备注
                    paymentID     = 0;                   //支付表ID
                    Channel       = 0;                   //支付渠道(1,快捷支付,2,银联支付 ,3,网银支付,4,B2B网银支付)
                    payment_zfsxf = 0;                   //支付表计算的手续费
                    Paymen_Type   = 0;                   //支付类型
                    OState        = 0;                   //判断是否已确认到货
                    jsxf_no       = 0;                   //判断手续费是否结算成功
                    hc_flag       = string.Empty;        //结算回冲标准
                    Old_price     = 0;                   //原支付金额
                    //-----银行信息
                    accountType          = 0;            //帐号类型
                    paymentaccountname   = string.Empty; //账户名称(支付平台账户 当 AccountType=20 时,该项必填)
                    paymentaccountnumber = string.Empty; //账户号码(支付平台账户 当 AccountType=20 时,该项必填)
                    bankaccount          = string.Empty; //收款方在银行开立的账户
                    bankId        = string.Empty;        //银行ID
                    accountname   = string.Empty;        //账户名称
                    accountnumber = string.Empty;        //账户号码
                    branchname    = string.Empty;        //开会行地址
                    province      = string.Empty;        //开会所在省
                    city          = string.Empty;        //开会所在市


                    ////本地日志记录
                    LogManager.LogFielPrefix = "Order_time";
                    LogManager.LogPath       = "D:/订单结算日志Order_log/";
                    LogManager.WriteLog(LogFile.Trace.ToString(), DateTime.Now.ToString() + "-订单结算服务启动...");

                    try
                    {
                        compID = Convert.ToInt32(dr["CompID"]);
                        disID  = Convert.ToInt32(dr["DisID"]);
                        //原支付金额
                        Old_price = Convert.ToDecimal(dr["PayPrice"]) - Convert.ToDecimal(dr["vdef5"] + "" == "" ? "0" : dr["vdef5"]);


                        Channel       = Convert.ToInt32(dr["Channel"] + "" == "" ? "-1" : dr["Channel"]);
                        payment_zfsxf = Convert.ToDecimal(dr["vdef5"]);
                        jsxf_no       = Convert.ToInt32(dr["jsxf_no"]);
                        hc_flag       = dr["vdef6"] + "";

                        #region     计算支付手续费 start

                        decimal sxf    = 0;
                        long    js_sxf = 0;
                        //查询该企业的设置
                        List <Hi.Model.Pay_PaymentSettings> Sysl = new Hi.BLL.Pay_PaymentSettings().GetList("", " CompID=" + compID, "");
                        if (Sysl.Count > 0)
                        {
                            //手续费收取
                            sxfsq = Convert.ToString(Sysl[0].pay_sxfsq);

                            //支付方式--线上or线下
                            string zffs = Convert.ToString(Sysl[0].pay_zffs);

                            //免手续费支付次数
                            int mfcs = Convert.ToInt32(Sysl[0].Pay_mfcs);

                            //快捷支付比例
                            decimal kjzfbl    = Convert.ToDecimal(Sysl[0].pay_kjzfbl) / 1000;
                            decimal kjzfstart = Convert.ToDecimal(Sysl[0].pay_kjzfstart);
                            decimal kjzfend   = Convert.ToDecimal(Sysl[0].pay_kjzfend);

                            //银联支付比例
                            decimal ylzfbl    = Convert.ToDecimal(Sysl[0].pay_ylzfbl) / 1000;
                            decimal ylzfstart = Convert.ToDecimal(Sysl[0].pay_ylzfstart);
                            decimal ylzfend   = Convert.ToDecimal(Sysl[0].pay_ylzfend);

                            //B2c网银支付比例

                            decimal b2cwyzfbl    = Convert.ToDecimal(Sysl[0].pay_b2cwyzfbl) / 1000;
                            decimal b2cwyzfstart = Convert.ToDecimal(Sysl[0].vdef1);

                            //B2b网银支付比例

                            decimal b2bwyzfbl = Convert.ToDecimal(Sysl[0].pay_b2bwyzf);

                            //手续费收取方
                            if (sxfsq == "0")
                            {
                                sxf = 0;
                            }
                            else
                            {
                                //手续费 (没有免支付次数时,才计算手续费)
                                if (mfcs <= 0)
                                {
                                    switch (Channel)
                                    {
                                    case 1:    //快捷支付手续费
                                        sxf = Old_price * kjzfbl;
                                        // if (sxf <= kjzfstart)
                                        //     sxf = kjzfstart;
                                        // else if (sxf >= kjzfend)
                                        //     sxf = kjzfend;
                                        break;

                                    case 2:    //银联支付手续费
                                        sxf = Old_price * ylzfbl;
                                        //if (sxf <= ylzfstart)
                                        //    sxf = ylzfstart;
                                        //else if (sxf >= ylzfend)
                                        //   sxf = ylzfend;
                                        break;

                                    case 3:    //B2C网银支付手续费
                                        sxf = Old_price * b2cwyzfbl;
                                        //if (sxf <= b2cwyzfstart)
                                        //   sxf = b2cwyzfstart;
                                        break;

                                    case 8:    //信用卡支付手续费
                                        sxf = Old_price * b2cwyzfbl;
                                        break;

                                    case 4:    //B2B网银支付手续费
                                        sxf = b2bwyzfbl;
                                        break;
                                    }
                                }

                                //计算手续费
                                sxf = Math.Round(sxf, 2) * 100;//转化成分
                            }
                        }

                        #endregion  计算支付手续费 end

                        price = Convert.ToInt64(Old_price * 100);

                        bool sxf_fal = false;//判断结算时的手续费,是否和支付时手续费一致

                        #region  根据手续费收取方,判断清算金额 start

                        if (sxfsq == "1") // 1,代理商
                        {
                            if (sxf == payment_zfsxf * 100)
                            {
                                //price = price;//最终清算时的订单金额
                                js_sxf  = Convert.ToInt64(sxf);//最终清算时的手续费
                                sxf_fal = true;
                            }
                        }
                        else if (sxfsq == "2")             //2,企业
                        {
                            js_sxf = Convert.ToInt64(sxf); //最终清算时的手续费
                            // price = price;//最终清算时的订单金额
                            sxf_fal = true;
                        }
                        else
                        {
                            sxf_fal = true;
                        }

                        #endregion 根据手续费收取方,判断清算金额 end

                        if (sxf_fal)
                        {
                            ReceiptNo = Convert.ToString(dr["ReceiptNo"]);
                            //回冲操作处理重新生成Guid,paylog表通过createuserid字段和payment表关联
                            if ("1".Equals(hc_flag))
                            {
                                guid = Common.Number_repeat(Guid.NewGuid().ToString().Replace("-", ""));
                            }
                            else
                            {
                                guid = Convert.ToString(dr["GUID"]);
                            }

                            ordID     = Convert.ToInt32(dr["ID"]);
                            paymentID = Convert.ToInt32(dr["paymentID"]);

                            Paymen_Type = Convert.ToInt32(dr["Type"]);    //判断是否是担保支付
                            OState      = Convert.ToInt32(dr["OState"]);  //判断订单是否已确认到货
                            string disname = new Hi.BLL.BD_Distributor().GetModel(Convert.ToInt32(Common.GetOrderValue(ordID, "DisID"))).DisName;
                            remark = "订单结算-" + disname + "-" + ReceiptNo; // Convert.ToString(dr["Remark"]);



                            //支付类型为正常支付,或者支付类型是担保支付,但是已确认到货的订单,进行结算操作
                            if (Paymen_Type == 0 || (Paymen_Type == 1 && OState == 5))
                            {
                                DataTable dt_bank_comp = new Hi.BLL.PAY_PrePayment().GetdataTable(3, "  and Isno=1 and PAY_PaymentBank.CompID=" + compID, 0);//结算接口,银行信息--已企业为主,

                                if (dt_bank_comp.Rows.Count > 0)
                                {
                                    foreach (DataRow drcomp in dt_bank_comp.Rows)
                                    {
                                        accountType          = Convert.ToInt32(drcomp["type"]);     //帐号类型
                                        paymentaccountname   = Convert.ToString(drcomp["payName"]); //账户名称
                                        paymentaccountnumber = Convert.ToString(drcomp["PayCode"]); //账户号码
                                        //收款方在银行开立的账户
                                        bankId        = Convert.ToString(drcomp["BankID"]);;        //银行ID
                                        accountname   = Convert.ToString(drcomp["AccountName"]);    //账户名称
                                        accountnumber = Convert.ToString(drcomp["bankcode"]);       //账户号码
                                        branchname    = Convert.ToString(drcomp["bankAddress"]);    //开会行地址
                                        province      = Convert.ToString(drcomp["bankprivate"]);    //开会所在省
                                        city          = Convert.ToString(drcomp["bankcity"]);       //开会所在市
                                    }
                                }



                                //判断参数收款银行是否维护
                                if (accountType == 0)
                                {
                                    ord_errornum++;
                                    strMsg += "<br>订单结算无法进行收款,请维护收款帐号信息:" + DateTime.Now.ToString() + ";" + "错误流水Guid:" + guid + ";" + "企业ID:&nbsp;(" + new Hi.BLL.BD_Company().GetModel(compID).CompName + ")";
                                }
                                //个人账户、企业账户
                                else if ((accountType == 11 || accountType == 12) && bankId != "" && accountname != "" && accountnumber != "")
                                {
                                    //先插入日志表,
                                    paylogmodel.OrderId     = ordID;
                                    paylogmodel.Ordercode   = ReceiptNo;
                                    paylogmodel.number      = guid;
                                    paylogmodel.CompID      = compID;
                                    paylogmodel.OrgCode     = orgcode;
                                    paylogmodel.MarkName    = paymentaccountname;
                                    paylogmodel.MarkNumber  = paymentaccountnumber;
                                    paylogmodel.AccountName = accountname;
                                    paylogmodel.bankcode    = accountnumber;
                                    paylogmodel.bankAddress = branchname;
                                    paylogmodel.bankPrivate = province;
                                    paylogmodel.bankCity    = city;
                                    paylogmodel.Price       = price;
                                    paylogmodel.Remark      = remark;
                                    paylogmodel.CreateDate  = DateTime.Now;
                                    paylogmodel.CreateUser  = paymentID;//关联支付表
                                    paylogID = paylogbll.Add(paylogmodel);


                                    if (paylogID > 0)//日志插入成功
                                    {
                                        //调用中金接口,做结算处理-------------------------------
                                        try
                                        {
                                            string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
                                            PaymentEnvironment.Initialize(configPath);

                                            // 2.创建交易请求对象
                                            Tx1341Request tx1341Request = new Tx1341Request();
                                            tx1341Request.setInstitutionID(orgcode);
                                            tx1341Request.setSerialNumber(guid);
                                            tx1341Request.setOrderNo(ReceiptNo);
                                            tx1341Request.setAmount(price);
                                            tx1341Request.setRemark(remark);
                                            tx1341Request.setAccountType(accountType);
                                            tx1341Request.setPaymentAccountName(paymentaccountname);
                                            tx1341Request.setPaymentAccountNumber(paymentaccountnumber);

                                            BankAccount bankAccount = new BankAccount();
                                            bankAccount.setBankID(bankId);
                                            bankAccount.setAccountName(accountname);
                                            bankAccount.setAccountNumber(accountnumber);
                                            bankAccount.setBranchName(branchname);
                                            bankAccount.setProvince(province);
                                            bankAccount.setCity(city);
                                            tx1341Request.setBankAccount(bankAccount);

                                            // 3.执行报文处理
                                            tx1341Request.process();

                                            //2个信息参数
                                            HttpContext.Current.Items["txCode"] = "1341";
                                            HttpContext.Current.Items["txName"] = "市场订单结算(结算)";

                                            // 与支付平台进行通讯
                                            TxMessenger txMessenger = new TxMessenger();
                                            String[]    respMsg     = txMessenger.send(tx1341Request.getRequestMessage(), tx1341Request.getRequestSignature());// 0:message; 1:signature
                                            String      plaintext   = XmlUtil.formatXmlString(Encoding.UTF8.GetString(Convert.FromBase64String(respMsg[0])));
                                            Console.WriteLine("[message] = [" + respMsg[0] + "]");
                                            Console.WriteLine("[signature] = [" + respMsg[1] + "]");
                                            Console.WriteLine("[plaintext] = [" + plaintext + "]");

                                            Tx134xResponse tx134xResponse = new Tx134xResponse(respMsg[0], respMsg[1]);
                                            HttpContext.Current.Items["plainText"] = tx134xResponse.getResponsePlainText();
                                            string strs = tx134xResponse.getCode() + "," + tx134xResponse.getMessage();
                                            //消息提示
                                            //JScript.ShowAlert(this, strs);

                                            //日志记录 接口返回的信息
                                            paylogmodel.Start         = tx134xResponse.getCode();
                                            paylogmodel.ResultMessage = tx134xResponse.getMessage();
                                            paylogmodel.ID            = paylogID;
                                            bool payLog_update = paylogbll.Update(paylogmodel);

                                            #region  清算手续费 start
                                            bool bol = false;
                                            //收取代理商或企业手续费,并且手续费未结算的,且手续费大于0
                                            //if ((sxfsq == "1" || sxfsq == "2") && jsxf_no != 1 && js_sxf > 0)
                                            //    bol = JS_sxfWay(ordID, ReceiptNo, guid, compID, paymentID, js_sxf);
                                            //else
                                            bol = true;

                                            #endregion 清算手续费 end

                                            if ("2000".Equals(tx134xResponse.getCode()))
                                            {
                                                //查询该条订单相关的支付记录是否都已经结算
                                                DataTable dt    = new Hi.BLL.PAY_PrePayment().GetDate("ID", "PAY_Payment", "PrintNum=0 and IsAudit=1 and OrderID=" + ordID);
                                                int       n_row = dt.Rows.Count;


                                                SqlConnection con = new SqlConnection(LocalSqlServer);
                                                con.Open();
                                                SqlTransaction sqlTrans = con.BeginTransaction();

                                                int paymentnum = 0; //支付表修改记录
                                                int ordernum   = 0; //订单结算状态修改记录

                                                try
                                                {
                                                    //修改支付记录的结算状态
                                                    Hi.BLL.PAY_Payment paymentbll = new Hi.BLL.PAY_Payment();
                                                    if (bol)
                                                    {
                                                        paymentnum = paymentbll.updatePayState_JS(con, paymentID, sqlTrans);
                                                    }

                                                    //修改订单
                                                    Hi.Model.DIS_Order orderModel = new Hi.BLL.DIS_Order().GetModel(ordID);
                                                    if (orderModel.AuditAmount == orderModel.PayedAmount)
                                                    {
                                                        if (n_row == 1)
                                                        {
                                                            ordernum = paymentbll.UpdateOrderPaystate_JS(con, ordID, "1", sqlTrans);
                                                            if (ordernum > 0)
                                                            {
                                                                LogManager.WriteLog(LogFile.Trace.ToString(), "订单操作成功:" + DateTime.Now.ToString() + "----" + ReceiptNo);
                                                                //strMsg += "<br>订单结算操作成功:" + DateTime.Now.ToString() + "流水号:" + guid + " 订单号:" + ReceiptNo;
                                                            }
                                                        }
                                                        else
                                                        {
                                                            ordernum = paymentbll.UpdateOrderPaystate_JS(con, ordID, "2", sqlTrans);
                                                            if (ordernum > 0)
                                                            {
                                                                LogManager.WriteLog(LogFile.Trace.ToString(), "订单操作成功:" + DateTime.Now.ToString() + "----" + ReceiptNo);
                                                                //strMsg += "<br>订单结算操作成功:" + DateTime.Now.ToString() + "流水号:" + guid + " 订单号:" + ReceiptNo;
                                                            }
                                                        }
                                                    }
                                                    else
                                                    {
                                                        //orderModel.vdef9 = "2";//部分结算
                                                        ordernum = paymentbll.UpdateOrderPaystate_JS(con, ordID, "2", sqlTrans);
                                                        if (ordernum > 0)
                                                        {
                                                            LogManager.WriteLog(LogFile.Trace.ToString(), "订单操作成功:" + DateTime.Now.ToString() + "----" + ReceiptNo);
                                                            // strMsg += "<br>订单结算操作成功:" + DateTime.Now.ToString() + "流水号:" + guid + " 订单号:" + ReceiptNo;
                                                        }
                                                    }

                                                    //执行修改成功后,提交事务,否则回滚
                                                    if (paymentnum > 0 && ordernum > 0)
                                                    {
                                                        sqlTrans.Commit();
                                                    }
                                                    else
                                                    {
                                                        sqlTrans.Rollback();
                                                    }
                                                }
                                                catch
                                                {
                                                    paymentnum = 0;
                                                    ordernum   = 0;
                                                    sqlTrans.Rollback();
                                                }
                                                finally
                                                {
                                                    con.Close();
                                                }
                                            }
                                            else
                                            {
                                                //清算出现问题,发送邮件通知
                                                strMsg += "<br><font color='red'>订单结算接口返回:</font>" + strs + "流水号:" + guid + "&nbsp;(" + new Hi.BLL.BD_Company().GetModel(compID).CompName + ")";
                                                ord_errornum++;

                                                LogManager.WriteLog(LogFile.Trace.ToString(), "订单结算接口返回非2000编码:" + strs + "\r\n" + "订单编号:" + ReceiptNo);
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            LogManager.WriteLog(LogFile.Trace.ToString(), "订单调用中金结算接口出错:" + DateTime.Now.ToString() + "\r\n" + "订单编号:" + ReceiptNo);

                                            ord_errornum++;
                                            strMsg += "<br><font color='red'>订单调用中金结算接口出错:</font>" + DateTime.Now.ToString() + "流水号:" + guid + " 订单编号:" + ReceiptNo + "&nbsp;(" + new Hi.BLL.BD_Company().GetModel(compID).CompName + ")";
                                        }
                                    }
                                    else
                                    {
                                        LogManager.WriteLog(LogFile.Trace.ToString(), "订单结算接口日志表插入出错:" + DateTime.Now.ToString() + "\r\n" + "订单编号:" + ReceiptNo);
                                        ord_errornum++;
                                        strMsg += "<br><font color='red'>订单结算接口日志表插入出错:</font>" + DateTime.Now.ToString() + "流水号:" + guid + " 订单编号:" + ReceiptNo + "&nbsp;(" + new Hi.BLL.BD_Company().GetModel(compID).CompName + ")";
                                    }
                                }
                                else
                                {
                                    if (accountType == 11 || accountType == 12)
                                    {
                                        LogManager.WriteLog(LogFile.Trace.ToString(), "银行名称、持卡人名称、银行卡号不能为空!" + "\r\n");
                                    }
                                    else
                                    {
                                        LogManager.WriteLog(LogFile.Trace.ToString(), "中金账户名称、中金账户号码不能为空!" + "\r\n");
                                    }

                                    ord_errornum++;
                                    strMsg += "<br><font color='red'>订单结算银行名称、持卡人名称、银行卡号不能为空 或 中金账户名称、中金账户号码不能为空</font>&nbsp;(" + new Hi.BLL.BD_Company().GetModel(compID).CompName + ")";
                                }
                            }
                            else
                            {
                                db_num++;
                                db_meg = "担保支付需要代理商确认收货,才能进结算";
                            }
                        }
                        else
                        {
                            ord_errornum++;
                            strMsg += "<br><font color='red'>订单结算出错(结算手续费不一致):</font>" + DateTime.Now.ToString() + "流水号" + guid + "订单编号:" + ReceiptNo + "&nbsp;(" + new Hi.BLL.BD_Company().GetModel(compID).CompName + ")";
                            LogManager.WriteLog(LogFile.Trace.ToString(), "订单结算出错(结算手续费不一致):" + DateTime.Now.ToString() + "\r\n" + "订单编号:" + ReceiptNo);
                        }
                    }
                    catch (Exception ex)
                    {
                        ord_errornum++;
                        strMsg += "<br><font color='red'>订单结算出错:</font>" + DateTime.Now.ToString() + "流水号:" + guid + " 订单编号:" + ReceiptNo + "&nbsp;(" + new Hi.BLL.BD_Company().GetModel(compID).CompName + ")";
                        LogManager.WriteLog(LogFile.Trace.ToString(), "订单结算出错:" + DateTime.Now.ToString() + "\r\n" + "订单编号:" + ReceiptNo);
                    }
                    LogManager.WriteLog(LogFile.Trace.ToString(), "订单结算结束时间" + DateTime.Now.ToString() + "\r\n");
                }

                topMsg += "<br><strong>今天未清算订单共 " + dt_order.Rows.Count + "条,成功" + (dt_order.Rows.Count - ord_errornum - db_num) + "条,失败" + ord_errornum + "条</strong>";
                //担保支付信息记录(暂时不提示)
                if (!string.IsNullOrEmpty(db_meg))
                {
                    topMsg += "(" + db_num + " 条 " + db_meg + ")";
                }


                if (!string.IsNullOrEmpty(strMsg))
                {
                    strMsg += "<br>订单结算结束时间" + DateTime.Now.ToString() + "<br>===================================================<br>";
                }
            }
            else
            {
                downMsg = "<br>今天没有需要结算的订单;";
            }

            #endregion


            //最后输出
            string sum_mes = head;

            if (!string.IsNullOrEmpty(topMsg))
            {
                sum_mes += topMsg + strMsg;
            }
            else
            {
                sum_mes += downMsg;
            }

            if (!string.IsNullOrEmpty(fw_topMsg))
            {
                sum_mes += fw_topMsg + fw_strMsg;
            }
            else
            {
                sum_mes += fw_downMsg;
            }

            if (!string.IsNullOrEmpty(pre_topMsg))
            {
                sum_mes += pre_topMsg + pre_strMsg;
            }
            else
            {
                sum_mes += pre_downMsg;
            }

            PayInfoType.SendFinsh(sum_mes + @"谢谢!" + strDownMesg, ReceiptNo);

            #region 每天清算一次手续费
            string    orderNo       = WebConfigurationManager.AppSettings["OrgCode"] + DateTime.Now.ToString("yyyyMMdd");
            DataTable dt_sxf        = new Hi.BLL.PAY_PrePayment().GetdataTable_sxf(orderNo);
            long      price_sxf     = 0;
            string    receiptno_sxf = string.Empty;
            if (dt_sxf.Rows.Count > 0)
            {
                price_sxf     = Convert.ToInt64(Math.Round(Convert.ToDecimal(dt_sxf.Rows[0]["price_sumsxf"]), 2) * 100);
                receiptno_sxf = Convert.ToString(dt_sxf.Rows[0]["ReceiptNo"]);
                if (price_sxf > 0)
                {
                    bool fal_jssxf = JS_sxfWay(0, receiptno_sxf, Common.Number_repeat(""), 0, 0, price_sxf);
                    //if (fal_jssxf)
                    ///   resultMesage = resultMesage + "(手续费清算成功)";
                }
            }
            #endregion
        }
    }
Ejemplo n.º 15
0
 public DataCashConfiguration(PaymentEnvironment environment, string merchantId, string password)
 {
     Environment = environment;
     MerchantId  = merchantId;
     Password    = password;
 }
Ejemplo n.º 16
0
    protected void Page_Load(object sender, EventArgs e)
    {
        int orderid = 0;

        if (!IsPostBack)
        {
            try
            {
                // 1.取得参数
                if (Request.Form["hidOid"] == "")
                {
                    orderid = 0;
                }
                else
                {
                    orderid = Common.DesDecrypt(Request.Form["hidOid"], Common.EncryptKey).ToInt(0);
                    KeyID   = orderid;
                }
                if (!Common.PageDisOperable("Order", orderid, this.DisID))
                {
                    Response.Redirect("../../NoOperable.aspx", true);
                    return;
                }

                decimal txtPayOrder = Convert.ToDecimal(Request.Form["hidPayOrder"]); //本次支付总金额
                decimal price       = Convert.ToDecimal(Request.Form["hidPrice"]);    //使用企业钱包金额
                int     yfk         = Convert.ToInt32(Request.Form["hidIsPre"]);      //是否使用企业钱包  1:是  0:否
                int     isDBPay     = Convert.ToInt32(Request.Form["hidIsDBPay"]);    //是否是担保支付  1:是  0:否
                string  bankid      = Convert.ToString(Request.Form["hidBankNo"]);    //银行编号
                string  AccountType = Request.Form["hidAccountType"];                 //账户类型
                string  payPas      = Convert.ToString(Request.Form["hidPayPas"]);    //预付款密码

                Hi.Model.BD_Distributor disModel = new Hi.BLL.BD_Distributor().GetModel(this.DisID);

                Hi.Model.DIS_Order disOrderMOdel = new Hi.BLL.DIS_Order().GetModel(orderid);

                if (disModel == null)
                {
                    err = true;
                    ErrMessage("数据异常");
                    return;
                }

                decimal sumPrice = new Hi.BLL.PAY_PrePayment().sums(disModel.ID, disOrderMOdel.CompID); //剩余企业钱包
                int     disid    = this.DisID;                                                          //代理商ID
                string  password = disModel.Paypwd;

                if (yfk == 1)
                {
                    if (payPas == null || payPas.Trim().ToString() == "")
                    {
                        err = true;
                        ErrMessage("企业钱包密码不能为空");
                        return;
                    }
                    payPas = payPas.Trim().ToString();
                    if (password == Util.md5("123456"))
                    {
                        err = true;
                        ErrMessage("请先修改企业钱包支付密码");
                        return;
                    }
                    else
                    {
                        if (payPas == "")
                        {
                            //string Josn = "{\"error\":\"1\",\"msg\":\"密码不能为空!\"}";
                            err = true;
                            ErrMessage("密码不能为空");

                            return;
                        }
                    }
                }

                decimal payPrice = 0;
                if (txtPayOrder == 0)
                {
                    err = true;
                    ErrMessage("支付金额不能为0");

                    return;
                }
                if (yfk == 1 && txtPayOrder < price)
                {
                    err = true;
                    ErrMessage("使用企业钱包大于支付金额!");
                    return;
                }
                if (yfk == 1)
                {
                    payPrice = txtPayOrder - price;
                }
                else
                {
                    payPrice = txtPayOrder;
                }
                if (orderid <= 0)
                {
                    //string Josn = "{\"error\":\"1\",\"msg\":\"操作有误!\"}";
                    err = true;
                    ErrMessage("数据有误");

                    return;
                }
                Hi.Model.DIS_Order orderModel = new Hi.BLL.DIS_Order().GetModel(orderid);
                if (orderModel == null)
                {
                    err = true;
                    ErrMessage("数据有误");

                    return;
                }
                if (txtPayOrder > orderModel.AuditAmount + orderModel.OtherAmount - orderModel.PayedAmount)
                {
                    err = true;
                    ErrMessage("支付金额大于未支付金额,不能支付!");
                    return;
                }
                if (!((
                          (orderModel.Otype == (int)Enums.OType.赊销订单 && (orderModel.OState != (int)Enums.OrderState.退回 && orderModel.OState != (int)Enums.OrderState.未提交 && orderModel.OState != (int)Enums.OrderState.待审核) && (orderModel.PayState == (int)Enums.PayState.未支付 || orderModel.PayState == (int)Enums.PayState.部分支付)) ||
                          (orderModel.Otype != (int)Enums.OType.赊销订单 && orderModel.Otype != (int)Enums.OType.推送账单 && (orderModel.OState == (int)Enums.OrderState.已审 || orderModel.OState == (int)Enums.OrderState.已发货 || orderModel.OState == (int)Enums.OrderState.已到货) && (orderModel.PayState == (int)Enums.PayState.未支付 || orderModel.PayState == (int)Enums.PayState.部分支付)) ||
                          (orderModel.Otype == (int)Enums.OType.推送账单 && orderModel.OState == (int)Enums.OrderState.已审 && (orderModel.PayState == (int)Enums.PayState.部分支付 || orderModel.PayState == (int)Enums.PayState.未支付))
                          ) &&
                      orderModel.OState != (int)Enums.OrderState.已作废))
                {
                    if (orderModel.Otype == (int)Enums.OType.推送账单)
                    {
                        err = true;
                        ErrMessage("账单异常,不能支付");
                    }
                    else
                    {
                        err = true;
                        ErrMessage("订单异常,不能支付");
                    }
                    return;
                }

                int prepayid = 0;

                if (yfk == 1 && price > 0)
                {
                    //企业钱包处理
                    if (sumPrice < price)
                    {
                        err = true;
                        ErrMessage("企业钱包余额不足");

                        return;
                    }
                    if (disModel.Paypwd != Util.md5(payPas))
                    {
                        err = true;
                        ErrMessage("支付密码不正确");

                        return;
                    }
                    Hi.Model.PAY_PrePayment prepayModel = new Hi.Model.PAY_PrePayment();
                    prepayModel.CompID     = disOrderMOdel.CompID;
                    prepayModel.DisID      = disModel.ID;
                    prepayModel.OrderID    = orderid;
                    prepayModel.Start      = 2;
                    prepayModel.PreType    = 5;
                    prepayModel.price      = price * -1;
                    prepayModel.Paytime    = DateTime.Now;
                    prepayModel.CreatDate  = DateTime.Now;
                    prepayModel.CrateUser  = this.UserID;
                    prepayModel.AuditState = 2;
                    prepayModel.IsEnabled  = 1;
                    prepayModel.ts         = DateTime.Now;
                    prepayModel.modifyuser = this.UserID;
                    prepayModel.guid       = Common.Number_repeat(Guid.NewGuid().ToString().Replace("-", ""));
                    // prepayModel.vdef1 = "订单支付";
                    prepayid = new Hi.BLL.PAY_PrePayment().Add(prepayModel);
                    int prepay = 0;
                    int order  = 0;
                    if (prepayid > 0 && payPrice == 0)//payPrice(网银支付金额)= 0 ,只用企业钱包支付,修改状态
                    {
                        SqlConnection con = new SqlConnection(LocalSqlServer);
                        con.Open();
                        SqlTransaction sqlTrans = con.BeginTransaction();
                        try
                        {
                            prepay = new Hi.BLL.PAY_PrePayment().updatePrepayState(con, prepayid, sqlTrans);  //修改企业钱包状态
                            order  = new Hi.BLL.DIS_Order().UpdateOrderPstate(con, orderid, price, sqlTrans); //修改订单状态
                            if (prepay > 0 && order > 0)
                            {
                                sqlTrans.Commit();
                            }
                            else
                            {
                                sqlTrans.Rollback();
                            }
                        }
                        catch
                        {
                            prepay = 0;
                            order  = 0;
                            sqlTrans.Rollback();
                        }
                        finally
                        {
                            con.Close();
                        }
                        if (prepay > 0 && order > 0)
                        {
                            try
                            {
                                if (orderModel.Otype == (int)Enums.OType.推送账单)
                                {
                                    Utils.AddSysBusinessLog(disOrderMOdel.CompID, "Order", orderid.ToString(), "账单支付", "支付:" + price.ToString("0.00") + "元(企业钱包支付)", this.UserID.ToString());
                                }
                                else
                                {
                                    Utils.AddSysBusinessLog(disOrderMOdel.CompID, "Order", orderid.ToString(), "订单支付", "支付:" + price + "元(企业钱包支付)", this.UserID.ToString());
                                }
                                if (orderModel.Otype != 9)
                                {
                                    OrderInfoType.AddIntegral(disOrderMOdel.CompID, disOrderMOdel.DisID, "1", 1, orderid, price, "订单支付", "", this.UserID);
                                }
                                new Common().GetWxService("2", orderid.ToString(), "1", price);
                            }
                            catch (Exception ex) { throw ex; }

                            if (orderModel.Otype == (int)Enums.OType.推送账单)
                            {
                                err = true;//阻止进入网银支付
                                Response.Redirect("PaySuccess.aspx?type=" + Common.DesEncrypt("2", Common.EncryptKey) + "&KeyID=" + Common.DesEncrypt(orderid.ToString(), Common.EncryptKey) + "&Pid=" + Common.DesEncrypt("0".ToString(), Common.EncryptKey) + "&PPid=" + Common.DesEncrypt(prepayid.ToString(), Common.EncryptKey) + "&IsRef=Y", false);
                            }
                            else
                            {
                                err = true;//阻止进入网银支付
                                Response.Redirect("PaySuccess.aspx?type=" + Common.DesEncrypt("1", Common.EncryptKey) + "&KeyID=" + Common.DesEncrypt(orderid.ToString(), Common.EncryptKey) + "&Pid=" + Common.DesEncrypt("0".ToString(), Common.EncryptKey) + "&PPid=" + Common.DesEncrypt(prepayid.ToString(), Common.EncryptKey) + "&IsRef=Y", false);
                            }
                            return;
                        }
                        else
                        {
                            err = true;
                            ErrMessage("支付失败");
                            return;
                        }
                    }
                }

                if (payPrice <= 0)
                {
                    err = true;
                    ErrMessage("数据有误");
                    return;
                }


                #region     计算支付手续费 start
                string  sxfsq    = "-1";
                decimal sxf      = 0;
                decimal comp_sxf = 0;//收费方是厂商是,为了不改变支付金额,故声明此变量来记录,厂商手续费。
                // 获取手续费 begin
                string[] Json = Common.GetSxf(disOrderMOdel.CompID, AccountType, bankid, payPrice);

                string strMsg = Json[2].ToString();
                if (!string.IsNullOrEmpty(strMsg))
                {
                    ErrMessage(strMsg);
                    return;
                }
                else
                {
                    sxfsq    = Json[1].ToString();
                    sxf      = Convert.ToDecimal(Json[0]);
                    comp_sxf = Convert.ToDecimal(Json[3]);
                }
                // 获取手续费 end


                //支付总金额(含手续费)
                decimal UNIT = 0.01M;
                payPrice = payPrice + Common.Round(sxf, UNIT);

                #endregion  计算支付手续费 end


                int payid = 0;
                int regid = 0;
                Hi.Model.PAY_Payment payModel = new Hi.Model.PAY_Payment();
                string orderNo = WebConfigurationManager.AppSettings["OrgCode"] + DateTime.Now.ToString("yyyyMMdd");//支付订单号前半部分

                string guid = Guid.NewGuid().ToString().Replace("-", "");
                payModel.OrderID      = orderid;
                payModel.DisID        = this.DisID;
                payModel.Type         = isDBPay;
                payModel.PayUser      = disModel.DisName;
                payModel.PayPrice     = payPrice;
                payModel.IsAudit      = 2;
                payModel.guid         = Common.Number_repeat(guid);
                payModel.vdef3        = "1";
                payModel.vdef4        = orderNo;
                payModel.CreateDate   = DateTime.Now;
                payModel.CreateUserID = this.UserID;
                payModel.ts           = DateTime.Now;
                payModel.modifyuser   = this.UserID;
                //判断账户类型,判断支付渠道,然后赋值
                if (AccountType == "11")
                {
                    if (bankid == "888")
                    {
                        payModel.Channel = "2";
                    }
                    else
                    {
                        payModel.Channel = "3";
                    }
                }//信用卡支付
                else if (AccountType == "13")
                {
                    payModel.Channel = "8";
                }
                else//网银支付
                {
                    payModel.Channel = "4";
                }

                payModel.State = Convert.ToInt32(sxfsq);//手续费收取方

                if (sxfsq.Equals("2"))
                {
                    payModel.vdef5 = comp_sxf.ToString("0.00");
                }
                else
                {
                    payModel.vdef5 = sxf.ToString("0.00");//支付手续费
                }
                payid = new Hi.BLL.PAY_Payment().Add(payModel);
                if (prepayid > 0)
                {
                    Hi.Model.PAY_PrePayment prepayMent = new Hi.BLL.PAY_PrePayment().GetModel(prepayid);
                    prepayMent.vdef4 = payid.ToString();//与企业钱包关联
                    new Hi.BLL.PAY_PrePayment().Update(prepayMent);
                }

                Hi.Model.PAY_RegisterLog regModel = new Hi.Model.PAY_RegisterLog();
                regModel.OrderId    = orderid;
                regModel.Ordercode  = orderNo;// orderNo + payid.ToString();
                regModel.number     = payModel.guid;
                regModel.Price      = payPrice;
                regModel.Payuse     = "订单支付";
                regModel.PayName    = disModel.DisName;
                regModel.DisID      = disid;
                regModel.PayTime    = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
                regModel.Remark     = orderModel.Remark;
                regModel.DisName    = new Hi.BLL.BD_Company().GetModel(disOrderMOdel.CompID).CompName;
                regModel.BankID     = bankid;
                regModel.CreateUser = this.UserID;
                regModel.CreateDate = DateTime.Now;
                regModel.LogType    = 1311;
                regid = new Hi.BLL.PAY_RegisterLog().Add(regModel);
                if (payid <= 0 || regid <= 0)
                {
                    err = true;
                    ErrMessage("数据有误");
                    return;
                }
                string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
                try
                {
                    PaymentEnvironment.Initialize(configPath);
                }
                catch (Exception ex)
                {
                    //string Josn = "{\"error\":\"1\",\"msg\":\"支付配置有误,请联系系统管理员!\"}";
                    err = true;
                    ErrMessage("支付配置有误,请联系系统管理员");

                    return;
                }

                String institutionID = WebConfigurationManager.AppSettings["PayOrgCode"]; //机构代码

                long   amount          = Convert.ToInt64(payPrice * 100);                 //支付金额(单位:分)
                long   fee             = 0;
                String usage           = "支付订单";
                String remark          = "订单支付";
                String notificationURL = "";
                //"http://www.my1818.com/Handler/ReceiveNoticePage.ashx";//Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port +

                if (WebConfigurationManager.AppSettings["PayType"] == "0")
                {
                    notificationURL = Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port + "/Handler/ReceiveNoticePage.ashx";
                }
                // notificationURL = "https://www.yibanmed.com/Handler/ReceiveNoticePage.ashx";
                else
                {
                    notificationURL = "https://www.yibanmed.com/Handler/ReceiveNoticePage.ashx";//回调页面地址
                }
                String payees = new Hi.BLL.BD_Company().GetModel(disOrderMOdel.CompID).CompName;

                //判断支付接口
                string Pay_type = WebConfigurationManager.AppSettings["PayType"];
                String bankID   = string.Empty;
                if (Pay_type == "0") //测试接口
                {
                    bankID = "700";  //bankid;//
                }
                else
                {
                    bankID = bankid;//正式接口
                }
                int accountType = Convert.ToInt32(AccountType);

                // 2.创建交易请求对象
                Tx1311Request tx1311Request = new Tx1311Request();
                tx1311Request.setInstitutionID(institutionID);     //机构号码
                tx1311Request.setOrderNo(orderNo);                 //订单号orderNo + payid.ToString()
                tx1311Request.setPaymentNo(payModel.guid);         //支付交易流水号
                tx1311Request.setAmount(amount);                   //支付金额 单位分
                tx1311Request.setFee(fee);                         //支付服务手续费 单位分
                tx1311Request.setPayerID("");                      //付款人注册ID
                tx1311Request.setPayerName("");                    //付款方名称
                tx1311Request.setUsage(usage);                     //资金用途
                tx1311Request.setRemark(remark);                   //备注
                tx1311Request.setNotificationURL(notificationURL); //机构接收支付通知的URL
                tx1311Request.addPayee("");                        //收款方名称

                if (accountType == 13)
                {
                    tx1311Request.setAccountType(11); //付款方帐号类型
                    tx1311Request.setCardType("02");  //银行卡类型(01=借记卡、02=贷记卡)
                }
                else if (accountType == 11)
                {
                    tx1311Request.setAccountType(accountType); //付款方帐号类型
                    tx1311Request.setCardType("01");           //银行卡类型(01=借记卡、02=贷记卡)
                }
                else if (accountType == 12)
                {
                    tx1311Request.setAccountType(accountType); //付款方帐号类型
                }
                tx1311Request.setBankID(bankID);               //付款银行标识


                // 3.执行报文处理
                tx1311Request.process();
                try
                {
                    Hi.Model.PAY_RegisterLog regM = new Hi.BLL.PAY_RegisterLog().GetModel(regid);
                    regM.PlanMessage = tx1311Request.getRequestPlainText();
                    new Hi.BLL.PAY_RegisterLog().Update(regM);
                }
                catch (Exception ex) { throw ex; }

                //跳转的url地址
                HttpContext.Current.Items["action"] = PaymentEnvironment.PaymentURL;
                //中金返回信息
                HttpContext.Current.Items["message"] = tx1311Request.getRequestMessage();
                //中金签名信息
                HttpContext.Current.Items["signature"] = tx1311Request.getRequestSignature();
            }
            catch (Exception ex)
            {
                err = true;
                ErrMessage(ex.Message);
                return;
            }
            finally
            {
                if (!err)
                {
                    Context.Server.Transfer("DoSubmit.aspx", false);
                }
            }
        }
    }
Ejemplo n.º 17
0
 /// <summary>
 /// Used for test environment, where PayPal sandbox credentials are static.
 /// </summary>
 public PayPalConfiguration(PaymentEnvironment environment)
     : this(environment, TestUser, TestPassword, TestSignature)
 {
     if (environment == PaymentEnvironment.Live)
         throw new ArgumentException("PayPal UserId, Password and Signature must be provided for the live environment.");
 }
Ejemplo n.º 18
0
    /// <summary>
    ///  结算
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    protected void btnAudit_Click(object source, EventArgs e)
    {
        int    compID    = 0;
        int    disID     = 0;
        long   price     = 0;            //金额
        int    ordID     = 0;            //订单Id
        string ReceiptNo = string.Empty; //订单号
        string guid      = string.Empty; //流水号
        string remark    = string.Empty; //订单备注

        //-----银行信息
        string orgcode              = string.Empty; //机构代码
        int    accountType          = 0;            //帐号类型
        string paymentaccountname   = string.Empty; //账户名称
        string paymentaccountnumber = string.Empty; //账户号码
        string bankaccount          = string.Empty; //收款方在银行开立的账户
        string bankId        = string.Empty;        //银行ID
        string accountname   = string.Empty;        //账户名称
        string accountnumber = string.Empty;        //账户号码
        string branchname    = string.Empty;        //开会行地址
        string province      = string.Empty;        //开会所在省
        string city          = string.Empty;        //开会所在市

        //结算接口日志表
        Hi.Model.PAY_PayLog paylogmodel = new Hi.Model.PAY_PayLog();
        Hi.BLL.PAY_PayLog   paylogbll   = new Hi.BLL.PAY_PayLog();
        int paylogID = 0;//接口日志返回ID

        string str = CB_SelAll();

        if (string.IsNullOrEmpty(str))
        {
            JScript.AlertMsgOne(this, "请选择要结算的记录!", JScript.IconOption.错误);
            return;
        }


        string[] strArry = str.Split(',');

        foreach (string s in strArry)
        {
            ordID = Convert.ToInt32(s);//订单编号

            DataTable dt_order = new Hi.BLL.PAY_PrePayment().GetdataTable_pre(1, " and PAY_PrePayment.ID =" + ordID);
            if (dt_order.Rows.Count <= 0)
            {
                JScript.AlertMsgOne(this, "支付数据中没有相关的记录,无法进行收款结算!", JScript.IconOption.错误);
                return;
            }
            foreach (DataRow dr in dt_order.Rows)
            {
                compID    = Convert.ToInt32(dr["CompID"]);
                disID     = Convert.ToInt32(dr["DisID"]);
                price     = Convert.ToInt64(Convert.ToDecimal(dr["PayPrice"]) * 100);
                ReceiptNo = Convert.ToString(dr["ReceiptNo"]);
                guid      = Convert.ToString(dr["GUID"]);
                remark    = Convert.ToString(dr["Remark"]);

                //查找企业银行信息(绑定>默认)
                DataTable dt_bank_bydis = new Hi.BLL.PAY_PrePayment().GetdataTable_pre(2, " and PAY_PaymentAccountdtl.DisID=" + disID); //结算接口,银行信息--已代理商为核心
                DataTable dt_bank_comp  = new Hi.BLL.PAY_PrePayment().GetdataTable_pre(3, " and PAY_PaymentBank.CompID=" + compID);     //结算接口,银行信息--已企业为主,


                if (dt_bank_bydis.Rows.Count > 0)
                {
                    foreach (DataRow drdis in dt_bank_bydis.Rows)
                    {
                        orgcode              = Convert.ToString(drdis["OrgCode"]); //机构代码
                        accountType          = Convert.ToInt32(drdis["type"]);     //帐号类型
                        paymentaccountname   = Convert.ToString(drdis["payName"]); //账户名称
                        paymentaccountnumber = Convert.ToString(drdis["PayCode"]); //账户号码
                        //收款方在银行开立的账户
                        bankId        = "700";                                     // Convert.ToString(drdis["BankID"]); ;//银行ID
                        accountname   = Convert.ToString(drdis["AccountName"]);    //账户名称
                        accountnumber = Convert.ToString(drdis["bankcode"]);       //账户号码
                        branchname    = Convert.ToString(drdis["bankAddress"]);    //开会行地址
                        province      = Convert.ToString(drdis["bankprivate"]);    //开会所在省
                        city          = Convert.ToString(drdis["bankcity"]);       //开会所在市
                    }
                }
                else if (dt_bank_comp.Rows.Count > 0)
                {
                    foreach (DataRow drcomp in dt_bank_comp.Rows)
                    {
                        orgcode              = Convert.ToString(drcomp["OrgCode"]); //机构代码
                        accountType          = Convert.ToInt32(drcomp["type"]);     //帐号类型
                        paymentaccountname   = Convert.ToString(drcomp["payName"]); //账户名称
                        paymentaccountnumber = Convert.ToString(drcomp["PayCode"]); //账户号码
                        //收款方在银行开立的账户
                        bankId        = Convert.ToString(drcomp["BankID"]);;        //银行ID
                        accountname   = Convert.ToString(drcomp["AccountName"]);    //账户名称
                        accountnumber = Convert.ToString(drcomp["bankcode"]);       //账户号码
                        branchname    = Convert.ToString(drcomp["bankAddress"]);    //开会行地址
                        province      = Convert.ToString(drcomp["bankprivate"]);    //开会所在省
                        city          = Convert.ToString(drcomp["bankcity"]);       //开会所在市
                    }
                }

                //判断参数收款银行是否维护
                if (accountType == 0)
                {
                    JScript.AlertMsgOne(this, "无法进行收款结算,请在【结算账户管理】中维护收款帐号信息!", JScript.IconOption.错误);
                    return;
                }
                else if ((accountType == 11 || accountType == 12) && bankId != "" && accountname != "" && accountnumber != "")
                {
                    //先插入日志表,
                    paylogmodel.OrderId     = ordID;
                    paylogmodel.Ordercode   = ReceiptNo;
                    paylogmodel.number      = guid;
                    paylogmodel.CompID      = compID;
                    paylogmodel.OrgCode     = orgcode;
                    paylogmodel.MarkName    = paymentaccountname;
                    paylogmodel.MarkNumber  = paymentaccountnumber;
                    paylogmodel.AccountName = accountname;
                    paylogmodel.bankcode    = accountnumber;
                    paylogmodel.bankAddress = branchname;
                    paylogmodel.bankPrivate = province;
                    paylogmodel.bankCity    = city;
                    paylogmodel.Price       = price;
                    paylogmodel.Remark      = remark;
                    paylogmodel.CreateDate  = DateTime.Now;
                    paylogmodel.CreateUser  = this.UserID;
                    paylogID = paylogbll.Add(paylogmodel);


                    if (paylogID > 0)//日志插入成功
                    {
                        //调用中金接口,做结算处理-------------------------------
                        try
                        {
                            string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
                            PaymentEnvironment.Initialize(configPath);

                            // 2.创建交易请求对象
                            Tx1341Request tx1341Request = new Tx1341Request();
                            tx1341Request.setInstitutionID(orgcode);
                            tx1341Request.setSerialNumber(guid);
                            tx1341Request.setOrderNo(ReceiptNo);
                            tx1341Request.setAmount(price);
                            tx1341Request.setRemark(remark);
                            tx1341Request.setAccountType(accountType);
                            tx1341Request.setPaymentAccountName(paymentaccountname);
                            tx1341Request.setPaymentAccountNumber(paymentaccountnumber);

                            BankAccount bankAccount = new BankAccount();
                            bankAccount.setBankID(bankId);
                            bankAccount.setAccountName(accountname);
                            bankAccount.setAccountNumber(accountnumber);
                            bankAccount.setBranchName(branchname);
                            bankAccount.setProvince(province);
                            bankAccount.setCity(city);
                            tx1341Request.setBankAccount(bankAccount);

                            // 3.执行报文处理
                            tx1341Request.process();

                            //2个信息参数
                            HttpContext.Current.Items["txCode"] = "1341";
                            HttpContext.Current.Items["txName"] = "市场订单结算(结算)";

                            // 与支付平台进行通讯
                            TxMessenger txMessenger = new TxMessenger();
                            String[]    respMsg     = txMessenger.send(tx1341Request.getRequestMessage(), tx1341Request.getRequestSignature());// 0:message; 1:signature
                            String      plaintext   = XmlUtil.formatXmlString(Encoding.UTF8.GetString(Convert.FromBase64String(respMsg[0])));
                            Console.WriteLine("[message] = [" + respMsg[0] + "]");
                            Console.WriteLine("[signature] = [" + respMsg[1] + "]");
                            Console.WriteLine("[plaintext] = [" + plaintext + "]");

                            Tx134xResponse tx134xResponse = new Tx134xResponse(respMsg[0], respMsg[1]);
                            HttpContext.Current.Items["plainText"] = tx134xResponse.getResponsePlainText();
                            string strs = tx134xResponse.getCode() + "," + tx134xResponse.getMessage();
                            //消息提示
                            //JScript.ShowAlert(this, strs);

                            if ("2000".Equals(tx134xResponse.getCode()))
                            {
                                //处理业务

                                //日志记录 接口返回的信息
                                paylogmodel.Start         = tx134xResponse.getCode();
                                paylogmodel.ResultMessage = tx134xResponse.getMessage();
                                paylogmodel.ID            = paylogID;
                                bool payLog_update = paylogbll.Update(paylogmodel);

                                //修改转账汇款状态
                                Hi.Model.PAY_PrePayment PrepaymentModel = new Hi.BLL.PAY_PrePayment().GetModel(ordID);
                                PrepaymentModel.vdef2 = "1";//修改结算标示为已结算
                                bool fal = new Hi.BLL.PAY_PrePayment().Update(PrepaymentModel);
                                if (fal)
                                {
                                    Utils.AddSysBusinessLog(CompID, "PrePayment", ordID.ToString(), "转账汇款结算", "");
                                    JScript.AlertMsgOne(this, "操作成功!", JScript.IconOption.笑脸);
                                    Bind();
                                }
                            }
                            else
                            {
                                Utils.AddSysBusinessLog(CompID, "PrePayment", ordID.ToString(), strs, "");
                                JScript.AlertMsgOne(this, strs + "!", JScript.IconOption.错误);
                            }
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                    }
                    else
                    {
                        Utils.AddSysBusinessLog(CompID, "PrePayment", ordID.ToString(), "系统繁忙,接口日志文件插入失败!", "");
                        JScript.AlertMsgOne(this, "系统繁忙,接口日志文件插入失败!", JScript.IconOption.错误);
                    }
                }

                //支付账户类型判断**************************************************************************************
                else if (accountType == 20 && paymentaccountname != "" && paymentaccountnumber != "")
                {
                    //先插入日志表,
                    paylogmodel.OrderId     = ordID;
                    paylogmodel.Ordercode   = ReceiptNo;
                    paylogmodel.number      = guid;
                    paylogmodel.CompID      = compID;
                    paylogmodel.OrgCode     = orgcode;
                    paylogmodel.MarkName    = paymentaccountname;
                    paylogmodel.MarkNumber  = paymentaccountnumber;
                    paylogmodel.AccountName = accountname;
                    paylogmodel.bankcode    = accountnumber;
                    paylogmodel.bankAddress = branchname;
                    paylogmodel.bankPrivate = province;
                    paylogmodel.bankCity    = city;
                    paylogmodel.Price       = price;
                    paylogmodel.Remark      = remark;
                    paylogmodel.CreateDate  = DateTime.Now;
                    paylogmodel.CreateUser  = this.UserID;
                    paylogID = paylogbll.Add(paylogmodel);


                    if (paylogID > 0)//日志插入成功
                    {
                        //调用中金接口,做结算处理-------------------------------
                        try
                        {
                            string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
                            PaymentEnvironment.Initialize(configPath);

                            // 2.创建交易请求对象
                            Tx1341Request tx1341Request = new Tx1341Request();
                            tx1341Request.setInstitutionID(orgcode);
                            tx1341Request.setSerialNumber(guid);
                            tx1341Request.setOrderNo(ReceiptNo);
                            tx1341Request.setAmount(price);
                            tx1341Request.setRemark(remark);
                            tx1341Request.setAccountType(accountType);
                            tx1341Request.setPaymentAccountName(paymentaccountname);
                            tx1341Request.setPaymentAccountNumber(paymentaccountnumber);

                            BankAccount bankAccount = new BankAccount();
                            bankAccount.setBankID(bankId);
                            bankAccount.setAccountName(accountname);
                            bankAccount.setAccountNumber(accountnumber);
                            bankAccount.setBranchName(branchname);
                            bankAccount.setProvince(province);
                            bankAccount.setCity(city);
                            tx1341Request.setBankAccount(bankAccount);

                            // 3.执行报文处理
                            tx1341Request.process();

                            //2个信息参数
                            HttpContext.Current.Items["txCode"] = "1341";
                            HttpContext.Current.Items["txName"] = "市场订单结算(结算)";

                            // 与支付平台进行通讯
                            TxMessenger txMessenger = new TxMessenger();
                            String[]    respMsg     = txMessenger.send(tx1341Request.getRequestMessage(), tx1341Request.getRequestSignature());// 0:message; 1:signature
                            String      plaintext   = XmlUtil.formatXmlString(Encoding.UTF8.GetString(Convert.FromBase64String(respMsg[0])));
                            Console.WriteLine("[message] = [" + respMsg[0] + "]");
                            Console.WriteLine("[signature] = [" + respMsg[1] + "]");
                            Console.WriteLine("[plaintext] = [" + plaintext + "]");

                            Tx134xResponse tx134xResponse = new Tx134xResponse(respMsg[0], respMsg[1]);
                            HttpContext.Current.Items["plainText"] = tx134xResponse.getResponsePlainText();
                            string strs = tx134xResponse.getCode() + "," + tx134xResponse.getMessage();
                            //消息提示
                            //JScript.ShowAlert(this, strs);

                            if ("2000".Equals(tx134xResponse.getCode()))
                            {
                                //处理业务

                                //日志记录 接口返回的信息
                                paylogmodel.Start         = tx134xResponse.getCode();
                                paylogmodel.ResultMessage = tx134xResponse.getMessage();
                                paylogmodel.ID            = paylogID;
                                bool payLog_update = paylogbll.Update(paylogmodel);

                                //修改转账汇款状态
                                Hi.Model.PAY_PrePayment PrepaymentModel = new Hi.BLL.PAY_PrePayment().GetModel(ordID);
                                PrepaymentModel.vdef2 = "1";//修改结算标示为已结算
                                bool fal = new Hi.BLL.PAY_PrePayment().Update(PrepaymentModel);
                                if (fal)
                                {
                                    Utils.AddSysBusinessLog(CompID, "PrePayment", ordID.ToString(), "转账汇款结算", "");
                                    JScript.AlertMsgOne(this, "操作成功!", JScript.IconOption.笑脸);
                                    Bind();
                                }
                            }
                            else
                            {
                                Utils.AddSysBusinessLog(CompID, "PrePayment", ordID.ToString(), strs, "");
                                JScript.AlertMsgOne(this, strs + "!", JScript.IconOption.错误);
                            }
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                    }
                    else
                    {
                        Utils.AddSysBusinessLog(CompID, "PrePayment", ordID.ToString(), "系统繁忙,接口日志文件插入失败!", "");
                        JScript.AlertMsgOne(this, "系统繁忙,接口日志文件插入失败!", JScript.IconOption.错误);
                    }
                }
                else
                {
                    if (accountType == 11 || accountType == 12)
                    {
                        JScript.AlertMsgOne(this, "银行名称、持卡人名称、银行卡号不能为空!", JScript.IconOption.错误, 2500);
                    }
                    else
                    {
                        JScript.AlertMsgOne(this, "中金账户名称、中金账户号码不能为空!", JScript.IconOption.错误, 2500);
                    }
                }
            }
        }
    }
Ejemplo n.º 19
0
    protected void btnTx1376_Click(object sender, EventArgs e)
    {
        try
        {
            Hi.Model.PAY_PrePayment prepayM = new Hi.Model.PAY_PrePayment();
            Hi.Model.PAY_Payment    payM    = new Hi.Model.PAY_Payment();
            if (Request.QueryString["KeyID"] == "")
            {
                KeyID = 0;
            }
            else
            {
                KeyID = Convert.ToInt32(Common.DesDecrypt(Request.QueryString["KeyID"].ToString(), Common.EncryptKey));
            }

            string  phoneCode = this.txtPhoneNum.Value; //检验码
            decimal price     = 0;                      //使用企业钱包金额
            int     hidPay    = 0;                      //支付表ID
            if (ViewState["payid"] == null || ViewState["payid"] == "")
            {
                //JScript.ShowAlert(this, "数据异常!", "$('#txtPhoneNum').val('');$('.tip').fadeOut(100);$('.opacity').fadeOut(100);");
                Tx1376ErrResult("数据异常!");
                return;
            }
            hidPay             = Convert.ToInt32(ViewState["payid"]);
            ViewState["payid"] = null;
            payM = new Hi.BLL.PAY_Payment().GetModel(hidPay);
            int hidPrepay = KeyID;//企业钱包表ID
            if (hidPrepay <= 0)
            {
                //JScript.ShowAlert(this, "数据异常!", "$('#txtPhoneNum').val('');$('.tip').fadeOut(100);$('.opacity').fadeOut(100);");
                Tx1376ErrResult("数据异常!");
                return;
            }
            prepayM = new Hi.BLL.PAY_PrePayment().GetModel(Convert.ToInt32(hidPrepay));
            price   = prepayM.price;
            int hidFastPay = Convert.ToInt32(this.hidFastPay.Value);
            int regid      = 0;

            Hi.Model.PAY_RegisterLog regModel = new Hi.Model.PAY_RegisterLog();
            regModel.OrderId    = hidPrepay;
            regModel.Ordercode  = payM.vdef4;// WebConfigurationManager.AppSettings["OrgCode"] + Convert.ToString(hidPrepay);
            regModel.number     = payM.guid;
            regModel.Price      = price;
            regModel.Payuse     = prepayM.PreType == 6 ? "转账汇款" : prepayM.PreType == 1 ? "企业钱包充值" : "";
            regModel.PayName    = new Hi.BLL.BD_Distributor().GetModel(this.DisID).DisName;
            regModel.DisID      = this.DisID;
            regModel.PayTime    = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
            regModel.Remark     = prepayM.vdef1;
            regModel.DisName    = new Hi.BLL.BD_Company().GetModel(this.CompID).CompName;
            regModel.BankID     = new Hi.BLL.PAY_FastPayMent().GetModel(hidFastPay).BankID.ToString();
            regModel.CreateUser = this.UserID;
            regModel.CreateDate = DateTime.Now;
            regModel.LogType    = 1376;
            regid = new Hi.BLL.PAY_RegisterLog().Add(regModel);

            if (regid <= 0)
            {
                Tx1376ErrResult("数据异常!");
                return;
            }

            if (WebConfigurationManager.AppSettings["Paytest_zj"] != "1")
            {
                string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
                try
                {
                    PaymentEnvironment.Initialize(configPath);
                }
                catch
                {
                    throw new Exception("支付配置不正确,请联系管理员!");
                }

                string institutionID = WebConfigurationManager.AppSettings["PayOrgCode"];//机构号码

                Tx1376Request tx1376Request = new Tx1376Request();

                tx1376Request.setInstitutionID(institutionID);
                tx1376Request.setOrderNo(payM.vdef4);//WebConfigurationManager.AppSettings["OrgCode"] + Convert.ToString(hidPrepay)
                tx1376Request.setPaymentNo(new Hi.BLL.PAY_Payment().GetModel(Convert.ToInt32(hidPay)).guid);
                tx1376Request.setSmsValidationCode(phoneCode);

                tx1376Request.process();

                TxMessenger txMessenger = new TxMessenger();
                String[]    respMsg     = txMessenger.send(tx1376Request.getRequestMessage(), tx1376Request.getRequestSignature());

                Tx1376Response tx1376Response = new Tx1376Response(respMsg[0], respMsg[1]);

                try
                {
                    Hi.Model.PAY_RegisterLog regM = new Hi.BLL.PAY_RegisterLog().GetModel(regid);
                    regM.PlanMessage   = tx1376Request.getRequestPlainText();
                    regM.Start         = tx1376Response.getCode();
                    regM.ResultMessage = tx1376Response.getMessage();
                    new Hi.BLL.PAY_RegisterLog().Update(regM);
                    Hi.Model.PAY_Payment payModel = new Hi.BLL.PAY_Payment().GetModel(hidPay);
                    payM.PayDate          = DateTime.Now;
                    payModel.ts           = DateTime.Now;
                    payModel.verifystatus = tx1376Response.getVerifyStatus();
                    payModel.status       = tx1376Response.getStatus();
                    new Hi.BLL.PAY_Payment().Update(payModel);
                }
                catch { }
                if (!"2000".Equals(tx1376Response.getCode()))
                {
                    Tx1376ErrResult(tx1376Response.getMessage());
                    return;
                }
                int VerifyStatus = tx1376Response.getVerifyStatus();
                int Status       = tx1376Response.getStatus();
                if (VerifyStatus != 40 || Status != 20)//VerifyStatus = 40 验证码验证成功,Status = 20 支付成功
                {
                    if (Status == 10)
                    {
                        //中金:支付处理中,钱会从账户中扣除,第二天会退回到账户中。
                        Tx1376ErrResult("代扣失败");
                        return;
                    }
                    Tx1376ErrResult(tx1376Response.getResponseMessage());
                    return;
                }
            }
            else
            {
                try
                {
                    Hi.Model.PAY_RegisterLog regM = new Hi.BLL.PAY_RegisterLog().GetModel(regid);
                    regM.PlanMessage   = "";
                    regM.Start         = "2000";
                    regM.ResultMessage = "OK.";
                    new Hi.BLL.PAY_RegisterLog().Update(regM);
                    Hi.Model.PAY_Payment payModel = new Hi.BLL.PAY_Payment().GetModel(hidPay);
                    payM.PayDate          = DateTime.Now;
                    payModel.ts           = DateTime.Now;
                    payModel.verifystatus = 40;
                    payModel.status       = 20;
                    new Hi.BLL.PAY_Payment().Update(payModel);
                }
                catch { }
            }

            int           prepay = 0;
            int           pay    = 0;
            SqlConnection con    = new SqlConnection(LocalSqlServer);
            con.Open();
            SqlTransaction sqlTrans = con.BeginTransaction();
            try
            {
                pay    = new Hi.BLL.PAY_Payment().updatePayState(con, hidPay, sqlTrans);
                prepay = new Hi.BLL.PAY_PrePayment().updatePrepayState(con, hidPrepay, sqlTrans);
                if (pay > 0 && prepay > 0)
                {
                    sqlTrans.Commit();
                }
                else
                {
                    sqlTrans.Rollback();
                }
            }
            catch
            {
                pay    = 0;
                prepay = 0;
                sqlTrans.Rollback();
            }
            finally
            {
                con.Close();
            }
            if (pay <= 0 || prepay <= 0)
            {
                Tx1376ErrResult("支付成功,但修改支付状态失败,请联系系统管理员,勿重复操作!");
                return;
            }
            Response.Redirect("PaySuccess.aspx?type=" + Common.DesEncrypt("3", Common.EncryptKey) + "&KeyID=" + Common.DesEncrypt(KeyID.ToString(), Common.EncryptKey), false);
            return;
        }
        catch (Exception ex)
        {
            JScript.AlertMethod(this, ex.Message, JScript.IconOption.错误, "function (){ $('#txtPhoneNum').val('');$('.tip').fadeOut(100);$('.opacity').fadeOut(100); }");
            return;
        }
    }
Ejemplo n.º 20
0
    public void tx1375()
    {
        try
        {
            int hidFastPay = Convert.ToInt32(this.hidFastPay.Value);
            if (hidFastPay > 0)
            {
                string phone = new Hi.BLL.PAY_FastPayMent().GetModel(hidFastPay).phone;
                this.phone.InnerHtml = "(已发送至" + phone.Substring(0, 3) + " **** " + phone.Substring(phone.Length - 4, 4) + ")";
            }
            Hi.Model.PAY_PrePayment prepayM = new Hi.BLL.PAY_PrePayment().GetModel(KeyID);
            decimal price = prepayM.price;

            #region     计算支付手续费 start
            string AccountType = hid_PayType.Value;
            string bankid      = hidBank.Value;

            string  sxfsq = "-1";
            decimal sxf   = 0;
            // 获取手续费 begin
            string[] Json = Common.GetFastPay_sxf(this.CompID, price);

            string strMsg = Json[2].ToString();
            if (!string.IsNullOrEmpty(strMsg))
            {
                Tx1376ErrResult(strMsg);
                return;
            }
            else
            {
                sxfsq = Json[1].ToString();
                sxf   = Convert.ToDecimal(Json[0]);
            }

            //支付总金额(含手续费)
            decimal UNIT = 0.01M;
            price = price + Common.Round(sxf, UNIT);

            #endregion  计算支付手续费 end

            String orderNo = WebConfigurationManager.AppSettings["OrgCode"] + DateTime.Now.ToString("yyyyMMdd");//支付订单号前半部分

            int    payid = 0;
            int    regid = 0;
            string guid  = Guid.NewGuid().ToString().Replace("-", "");
            Hi.Model.PAY_Payment payModel = new Hi.Model.PAY_Payment();
            payModel.OrderID      = KeyID;
            payModel.DisID        = this.DisID;
            payModel.PayUser      = new Hi.BLL.BD_Distributor().GetModel(this.DisID).DisName;
            payModel.PayPrice     = price;
            payModel.guid         = Common.Number_repeat(guid);
            payModel.IsAudit      = 2;
            payModel.vdef3        = "2";
            payModel.vdef4        = orderNo;
            payModel.CreateDate   = DateTime.Now;
            payModel.CreateUserID = this.UserID;
            payModel.ts           = DateTime.Now;
            payModel.modifyuser   = this.UserID;

            payModel.Channel   = "1";                    //支付渠道
            payModel.State     = Convert.ToInt32(sxfsq); //手续费收取方
            payModel.vdef5     = sxf.ToString("0.00");   //支付手续费
            payModel.vdef9     = "1";                    //默认支付
            payid              = new Hi.BLL.PAY_Payment().Add(payModel);
            ViewState["payid"] = payid;

            Hi.Model.PAY_RegisterLog regModel = new Hi.Model.PAY_RegisterLog();
            regModel.OrderId    = KeyID;
            regModel.Ordercode  = WebConfigurationManager.AppSettings["OrgCode"] + Convert.ToString(KeyID);
            regModel.number     = payModel.guid;
            regModel.Price      = price;
            regModel.Payuse     = prepayM.PreType == 6 ? "转账汇款" : prepayM.PreType == 1 ? "企业钱包充值" : "";
            regModel.PayName    = new Hi.BLL.BD_Distributor().GetModel(this.DisID).DisName;
            regModel.DisID      = this.DisID;
            regModel.PayTime    = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
            regModel.Remark     = prepayM.vdef1;
            regModel.DisName    = new Hi.BLL.BD_Company().GetModel(this.CompID).CompName;
            regModel.BankID     = new Hi.BLL.PAY_FastPayMent().GetModel(hidFastPay).BankID.ToString();
            regModel.CreateUser = this.UserID;
            regModel.CreateDate = DateTime.Now;
            regModel.LogType    = 1375;
            regid = new Hi.BLL.PAY_RegisterLog().Add(regModel);

            if (payid <= 0 || regid <= 0)
            {
                //JScript.AlertMsg(this, "数据异常!");
                ClientScript.RegisterStartupScript(this.GetType(), "payTx1375", "<script>$('#lblErr').html('数据异常!');</script>");
                return;
            }

            if (WebConfigurationManager.AppSettings["Paytest_zj"] != "1")
            {
                string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
                try
                {
                    PaymentEnvironment.Initialize(configPath);
                }
                catch
                {
                    throw new Exception("支付配置不正确,请联系管理员!");
                }

                String institutionID = WebConfigurationManager.AppSettings["PayOrgCode"];
                // String orderNo = WebConfigurationManager.AppSettings["OrgCode"] + Convert.ToString(KeyID);   为了统一清算,作废次方法
                long amount = Convert.ToInt64(price * 100);

                // 2.创建交易请求对象
                Tx1375Request tx1375Request = new Tx1375Request();
                tx1375Request.setInstitutionID(institutionID);
                tx1375Request.setOrderNo(orderNo);
                tx1375Request.setPaymentNo(new Hi.BLL.PAY_Payment().GetModel(payid).guid);
                tx1375Request.setTxSNBinding(WebConfigurationManager.AppSettings["OrgCode"] + Convert.ToString(hidFastPay));
                tx1375Request.setAmount(amount);
                tx1375Request.setRemark("快捷支付发送短信".ToString());

                // 3.执行报文处理
                tx1375Request.process();

                TxMessenger txMessenger = new TxMessenger();
                String[]    respMsg     = txMessenger.send(tx1375Request.getRequestMessage(), tx1375Request.getRequestSignature());

                Tx1375Response tx1375Response = new Tx1375Response(respMsg[0], respMsg[1]);
                try
                {
                    Hi.Model.PAY_RegisterLog regM = new Hi.BLL.PAY_RegisterLog().GetModel(regid);
                    regM.PlanMessage   = tx1375Request.getRequestPlainText();
                    regM.Start         = tx1375Response.getCode();
                    regM.ResultMessage = tx1375Response.getMessage();
                    new Hi.BLL.PAY_RegisterLog().Update(regM);
                }
                catch { }

                if (!"2000".Equals(tx1375Response.getCode()))
                {
                    //JScript.AlertMsg(this, tx1375Response.getMessage());
                    ClientScript.RegisterStartupScript(this.GetType(), "payTx1375", "<script>$('#lblErr').html('" + tx1375Response.getMessage() + "!');</script>");
                    return;
                }
            }
            else
            {
                try
                {
                    Hi.Model.PAY_RegisterLog regM = new Hi.BLL.PAY_RegisterLog().GetModel(regid);
                    regM.PlanMessage   = "";
                    regM.Start         = "2000";
                    regM.ResultMessage = "OK.";
                    new Hi.BLL.PAY_RegisterLog().Update(regM);
                }
                catch { }
            }
            ClientScript.RegisterStartupScript(this.GetType(), "pay", "<script>$('.opacity').fadeIn(200);$('.tip').fadeIn(200);$('#paying').hide();$('#txtPhoneNum').show();$('#txtPhoneNum').select();$('#msgtwo').hide();$('#msgone').show();msgTime(120);</script>");
            return;
        }
        catch (Exception ex)
        {
            //JScript.AlertMsg(this, ex.Message);
            ClientScript.RegisterStartupScript(this.GetType(), "payTx1375", "<script>$('#lblErr').html('" + ex.Message + "!');</script>");
            return;
        }
    }
Ejemplo n.º 21
0
    /// <summary>
    /// 申请退款
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    //protected void btnRefund_Click(object sender, EventArgs e)
    //{
    //    Hi.Model.DIS_Order OrderModel = OrderBll.GetModel(KeyID);

    //    if (OrderModel != null)
    //    {
    //        if ((OrderModel.OState == (int)Enums.OrderState.已审) && OrderModel.PayState == (int)Enums.PayState.已支付)
    //        {
    //            string sql = " update [DIS_Order] set [PayState]=" + (int)Enums.PayState.申请退款 + ",[ReturnState]=" + (int)Enums.ReturnState.申请退款 + " where ID=" + KeyID;

    //            if (OrderBll.UpdateOrderState(sql))
    //            {
    //                Utils.AddSysBusinessLog(this.CompID, "Order", KeyID.ToString(), "申请退款", "");
    //                //Bind();
    //                Response.Redirect("OrderInfo.aspx?KeyID=" + Common.DesEncrypt(KeyID.ToString(), Common.EncryptKey));
    //            }
    //        }
    //        else
    //        {
    //            JScript.ShowAlert(this, "数据状态不正确,不能取消!");
    //        }
    //    }
    //}

    /// <summary>
    /// 支付查询
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnPayInfo_Click(object sender, EventArgs e)
    {
        Hi.Model.DIS_Order      orderM  = OrderBll.GetModel(KeyID);
        Hi.Model.PAY_PrePayment prepayM = new Hi.Model.PAY_PrePayment();
        if (orderM.PayState == (int)Enums.PayState.已支付)
        {
            //支付已成功
            JScript.AlertMsgOne(this, "支付已成功!", JScript.IconOption.笑脸);
            return;
        }
        else
        {
            //支付未成功
            string strWhere5 = string.Empty;
            if (KeyID > 0)
            {
                strWhere5 += " OrderID = " + KeyID;
            }
            strWhere5 += " and isnull(dr,0)=0";
            List <Hi.Model.PAY_PrePayment> prepayL = new Hi.BLL.PAY_PrePayment().GetList("", strWhere5, "");
            if (prepayL.Count > 0 && orderM.AuditAmount == prepayL[0].price * -1)
            {
                //只用企业钱包支付,但是修改状态时出错
                SqlConnection con = new SqlConnection(LocalSqlServer);
                con.Open();
                SqlTransaction sqlTrans = con.BeginTransaction();
                int            order    = 0;
                int            prepay   = 0;
                try
                {
                    order  = new Hi.BLL.DIS_Order().UpdateOrderPstate(con, KeyID, prepayL[0].price * -1, sqlTrans);
                    prepay = new Hi.BLL.PAY_PrePayment().updatePrepayState(con, prepayL[0].ID, sqlTrans);
                    sqlTrans.Commit();
                }
                catch
                {
                    order  = 0;
                    prepay = 0;
                    sqlTrans.Rollback();
                }
                finally
                {
                    con.Close();
                }
                if (order > 0 && prepay > 0)
                {
                    JScript.AlertMsgOne(this, "支付已成功!", JScript.IconOption.笑脸);
                    return;
                }
                else
                {
                    JScript.AlertMsgOne(this, "支付处理中!", JScript.IconOption.哭脸);
                    return;
                }
            }

            string strWhere = string.Empty;
            if (KeyID > 0)
            {
                strWhere += " OrderID = " + KeyID;
            }
            strWhere += " and vdef3 = '1' and verifystatus = '40' and status = '20' and isnull(dr,0)=0";
            List <Hi.Model.PAY_Payment> payL = new Hi.BLL.PAY_Payment().GetList("", strWhere, "");
            if (payL.Count > 0)
            {
                //使用快捷支付成功,但是修改状态失败
                if (orderM.AuditAmount > payL[0].PayPrice)
                {
                    //是否使用企业钱包
                    string strWhere1 = string.Empty;
                    if (KeyID != 0)
                    {
                        strWhere1 += " OrderID = " + KeyID;
                    }
                    strWhere += " and isnull(dr,0)=0";
                    prepayM   = new Hi.BLL.PAY_PrePayment().GetList("", strWhere1, "")[0];
                }
                int           order  = 0;
                int           prepay = 0;
                int           pay    = 0;
                SqlConnection con    = new SqlConnection(LocalSqlServer);
                con.Open();
                SqlTransaction sqlTrans = con.BeginTransaction();
                try
                {
                    order = new Hi.BLL.DIS_Order().UpdateOrderPstate(con, orderM.ID, payL[0].PayPrice + (prepayM.price * -1), sqlTrans);

                    if (orderM.AuditAmount == payL[0].PayPrice)
                    {
                        prepay = 1;
                        pay    = new Hi.BLL.PAY_Payment().updatePayState(con, payL[0].ID, sqlTrans);
                    }
                    else if (orderM.AuditAmount > payL[0].PayPrice)
                    {
                        prepay = new Hi.BLL.PAY_PrePayment().updatePrepayState(con, prepayM.ID, sqlTrans);
                        pay    = new Hi.BLL.PAY_Payment().updatePayState(con, payL[0].ID, sqlTrans);
                    }
                    else
                    {
                        order  = 0;
                        prepay = 0;
                        pay    = 0;
                        sqlTrans.Rollback();
                    }

                    sqlTrans.Commit();
                }
                catch
                {
                    order  = 0;
                    prepay = 0;
                    pay    = 0;
                    sqlTrans.Rollback();
                }
                finally
                {
                    con.Close();
                }
                if (order > 0 && prepay > 0 && pay > 0)
                {
                    JScript.AlertMsgOne(this, "支付成功!", JScript.IconOption.笑脸);
                    //Bind();
                    Response.Redirect("neworder/orderdetail.aspx?KeyID=" + Common.DesEncrypt(KeyID.ToString(), Common.EncryptKey));
                    return;
                }
                else
                {
                    JScript.AlertMsgOne(this, "支付处理中!", JScript.IconOption.哭脸);
                    return;
                }
            }
            else
            {
                //使用快捷支付未成功
                string strWhere2 = string.Empty;
                if (KeyID > 0)
                {
                    strWhere2 += " OrderID = " + KeyID;
                }
                strWhere2 += " and vdef3 = '1' and verifystatus = '40' and status = '10' and isnull(dr,0)=0";
                List <Hi.Model.PAY_Payment> payList = new Hi.BLL.PAY_Payment().GetList("", strWhere2, "ID desc");

                if (payList.Count > 0)
                {
                    //使用快捷支付,处理中
                    int regid = 0;
                    try
                    {
                        Hi.Model.PAY_RegisterLog regModel = new Hi.Model.PAY_RegisterLog();
                        regModel.OrderId    = KeyID;
                        regModel.Ordercode  = orderM.ReceiptNo;
                        regModel.number     = payList[0].guid;
                        regModel.Price      = payList[0].PayPrice;
                        regModel.Payuse     = "订单支付查询";
                        regModel.PayName    = new Hi.BLL.BD_Distributor().GetModel(orderM.DisID).DisName;
                        regModel.DisID      = orderM.DisID;
                        regModel.PayTime    = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
                        regModel.Remark     = orderM.Remark;
                        regModel.DisName    = new Hi.BLL.BD_Company().GetModel(orderM.CompID).CompName;
                        regModel.CreateUser = this.UserID;
                        regModel.CreateDate = DateTime.Now;
                        regModel.LogType    = 1372;
                        regid = new Hi.BLL.PAY_RegisterLog().Add(regModel);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    if (regid > 0)
                    {
                        if (orderM.AuditAmount > payList[0].PayPrice)
                        {
                            //是否使用企业钱包
                            string strWhere3 = string.Empty;
                            if (KeyID != 0)
                            {
                                strWhere3 += " OrderID = " + KeyID;
                            }
                            strWhere3 += " and isnull(dr,0)=0";
                            prepayM    = new Hi.BLL.PAY_PrePayment().GetList("", strWhere3, "")[0];
                        }

                        //调用快捷支付查询接口
                        string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
                        PaymentEnvironment.Initialize(configPath);

                        Tx1372Request tx1372Request = new Tx1372Request();
                        tx1372Request.setInstitutionID("001520");
                        tx1372Request.setPaymentNo(payList[0].guid);
                        tx1372Request.process();

                        TxMessenger txMessenger = new TxMessenger();
                        String[]    respMsg     = txMessenger.send(tx1372Request.getRequestMessage(), tx1372Request.getRequestSignature());

                        Tx1372Response tx1372Response = new Tx1372Response(respMsg[0], respMsg[1]);

                        try
                        {
                            Hi.Model.PAY_RegisterLog regModel = new Hi.BLL.PAY_RegisterLog().GetModel(regid);
                            regModel.Start         = tx1372Response.getCode();
                            regModel.ResultMessage = tx1372Response.getMessage();
                            new Hi.BLL.PAY_RegisterLog().Update(regModel);
                            Hi.Model.PAY_Payment payM = new Hi.BLL.PAY_Payment().GetModel(payList[0].ID);
                            payM.status = tx1372Response.getStatus();
                            new Hi.BLL.PAY_Payment().Update(payM);
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                        if ("2000".Equals(tx1372Response.getCode()))
                        {
                            int Status = tx1372Response.getStatus();
                            if (Status == 10)
                            {
                                JScript.AlertMsgOne(this, "支付处理中!", JScript.IconOption.哭脸);
                                return;
                            }
                            else if (Status == 20)
                            {
                                int           order  = 0;
                                int           prepay = 0;
                                int           pay    = 0;
                                SqlConnection con    = new SqlConnection(LocalSqlServer);
                                con.Open();
                                SqlTransaction sqlTrans = con.BeginTransaction();
                                try
                                {
                                    order = new Hi.BLL.DIS_Order().UpdateOrderPstate(con, KeyID, payList[0].PayPrice + prepayM.price * -1, sqlTrans);

                                    if (orderM.AuditAmount == payList[0].PayPrice)
                                    {
                                        prepay = 1;
                                        pay    = 1;
                                    }
                                    else if (orderM.AuditAmount > payList[0].PayPrice)
                                    {
                                        prepay = new Hi.BLL.PAY_PrePayment().updatePrepayState(con, prepayM.ID, sqlTrans);
                                        pay    = new Hi.BLL.PAY_Payment().updatePayState(con, payList[0].ID, sqlTrans);
                                    }
                                    else
                                    {
                                        sqlTrans.Rollback();
                                    }

                                    sqlTrans.Commit();
                                }
                                catch (Exception ex)
                                {
                                    order  = 0;
                                    prepay = 0;
                                    pay    = 0;
                                    sqlTrans.Rollback();
                                }
                                finally
                                {
                                    con.Close();
                                }

                                if (order > 0 && prepay > 0 && pay > 0)
                                {
                                    JScript.AlertMsgOne(this, "支付成功!", JScript.IconOption.笑脸);
                                    //Bind();
                                    Response.Redirect("neworder/orderdetail.aspx?KeyID=" + Common.DesEncrypt(KeyID.ToString(), Common.EncryptKey));
                                    return;
                                }
                                else
                                {
                                    JScript.AlertMsgOne(this, "系统繁忙,请稍后!", JScript.IconOption.错误);
                                    return;
                                }
                            }
                            else if (Status == 30)
                            {
                                bool f = false;
                                try
                                {
                                    Hi.Model.PAY_PrePayment prepayModel = new Hi.BLL.PAY_PrePayment().GetModel(prepayL[0].ID);
                                    prepayModel.Start = Convert.ToInt32(Enums.PrePayMentState.失败);
                                    f = new Hi.BLL.PAY_PrePayment().Update(prepayModel);
                                    Hi.Model.DIS_Order orderModel = new Hi.BLL.DIS_Order().GetModel(KeyID);
                                    orderModel.PayState = Convert.ToInt32(Enums.PayState.未支付);
                                    f = new Hi.BLL.DIS_Order().Update(orderModel);
                                }
                                catch (Exception ex)
                                {
                                    throw ex;
                                }
                                if (f)
                                {
                                    JScript.AlertMsgOne(this, "支付失败!", JScript.IconOption.错误);
                                    Bind();
                                    return;
                                }
                                else
                                {
                                    JScript.AlertMsgOne(this, "系统繁忙,请稍后!", JScript.IconOption.错误);
                                    return;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
Ejemplo n.º 22
0
    /// <summary>
    /// 关闭
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnClose_Click(object sender, EventArgs e)
    {
        int restID = 0;//接口日志表生成Id
        int BankID = Convert.ToInt32(this.hidFastBankid.Value);

        bool fal = false;

        string TxSNBinding   = string.Empty; //原绑定流水号
        string TxSNUnBinding = string.Empty; // 解绑流水号

        try
        {
            //老的绑定记录
            Hi.Model.PAY_FastPayMent fastpayModel_old = new Hi.BLL.PAY_FastPayMent().GetModel(BankID);

            //调用接口前,先生成一条解绑,信息在绑定表中
            Hi.Model.PAY_FastPayMent fastpayModel_new = new Hi.Model.PAY_FastPayMent();

            TxSNUnBinding = ConfigurationManager.AppSettings["OrgCode"].ToString().Trim() + Common.Number_repeat("");       //解绑流水号
            TxSNBinding   = ConfigurationManager.AppSettings["OrgCode"].ToString().Trim() + fastpayModel_old.ID.ToString(); //原绑定流水号

            //收集信息
            fastpayModel_new.DisID        = fastpayModel_old.DisID;
            fastpayModel_new.BankID       = fastpayModel_old.BankID;
            fastpayModel_new.Number       = fastpayModel_old.Number;
            fastpayModel_new.AccountName  = fastpayModel_old.AccountName;
            fastpayModel_new.bankcode     = fastpayModel_old.bankcode;
            fastpayModel_new.bankName     = fastpayModel_old.bankName;
            fastpayModel_new.IdentityCode = fastpayModel_old.IdentityCode;
            fastpayModel_new.phone        = fastpayModel_old.phone;
            fastpayModel_new.BankLogo     = fastpayModel_old.BankLogo;
            fastpayModel_new.Start        = 2;
            fastpayModel_new.CreateUser   = fastpayModel_old.CreateUser;
            fastpayModel_new.CreateDate   = DateTime.Now;
            fastpayModel_new.ts           = DateTime.Now;
            fastpayModel_new.modifyuser   = this.UserID;   //获取当前登录ID
            fastpayModel_new.vdef5        = TxSNUnBinding; //解绑流水号
            restID = new Hi.BLL.PAY_FastPayMent().Add(fastpayModel_new);

            string strs      = string.Empty;
            string resetcode = "2000";
            int    succes    = 20;
            //是否屏蔽中金支付接口0是不屏蔽,1,屏蔽
            if (ConfigurationManager.AppSettings["Paytest_zj"] == "0")
            {
                //调用接口
                string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
                PaymentEnvironment.Initialize(configPath);

                string institutionID = WebConfigurationManager.AppSettings["PayOrgCode"];//机构号码

                Tx2503Request tx2503Request = new Tx2503Request();
                tx2503Request.setInstitutionID(institutionID);
                tx2503Request.setTxSNUnBinding(TxSNUnBinding); //解绑流水号
                tx2503Request.setTxSNBinding(TxSNBinding);     //原绑定流水号
                tx2503Request.process();

                TxMessenger txMessenger = new TxMessenger();
                String[]    respMsg     = txMessenger.send(tx2503Request.getRequestMessage(), tx2503Request.getRequestSignature());

                Tx2503Response tx2503Response = new Tx2503Response(respMsg[0], respMsg[1]);

                strs      = tx2503Response.getMessage();// tx2503Response.getCode() + "," + tx2503Response.getMessage();
                resetcode = tx2503Response.getCode();
                succes    = Convert.ToInt32(tx2503Response.getStatus());
            }
            //消息提示
            //JScript.ShowAlert(this, strs);
            if ("2000".Equals(resetcode))
            {
                if (succes == 20)
                {
                    //修改原始记录的状态为解绑
                    fastpayModel_old.vdef6 = "1";
                    bool fal_old = new Hi.BLL.PAY_FastPayMent().Update(fastpayModel_old);

                    //修改,回填快捷支付表中的记录状态信息。
                    Hi.Model.PAY_FastPayMent fastpayModel = new Hi.BLL.PAY_FastPayMent().GetModel(restID);
                    fastpayModel.vdef6 = "1";
                    fastpayModel.ID    = restID;
                    fal = new Hi.BLL.PAY_FastPayMent().Update(fastpayModel);
                }
                else
                {
                    fal = false;
                }
            }
            else if ("30250311".Equals(resetcode))
            {
                //修改原始记录的状态为解绑
                fastpayModel_old.vdef6 = "1";
                bool fal_old = new Hi.BLL.PAY_FastPayMent().Update(fastpayModel_old);

                //修改,回填快捷支付表中的记录状态信息。
                Hi.Model.PAY_FastPayMent fastpayModel = new Hi.BLL.PAY_FastPayMent().GetModel(restID);
                fastpayModel.vdef6 = "1";
                fastpayModel.ID    = restID;
                fal = new Hi.BLL.PAY_FastPayMent().Update(fastpayModel);
            }
            else
            {
                JScript.AlertMsgOne(this, strs + "!", JScript.IconOption.错误);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }

        //if (fal)
        //    JScript.ShowAlert(this, "操作成功!");
        //else
        //    JScript.ShowAlert(this, "操作失败!");

        //重新绑定
        Bind();
    }
Ejemplo n.º 23
0
    public void tx1311()
    {
        Hi.Model.PAY_Payment     payModel = new Hi.Model.PAY_Payment();
        Hi.Model.PAY_RegisterLog regModel = new Hi.Model.PAY_RegisterLog();
        try
        {
            //账户类型
            string AccountType = Request["AccountType"];
            int    accountType = Convert.ToInt32(AccountType);

            //银行编码
            string bankid = this.hidBank.Value;

            Hi.Model.PAY_PrePayment prepayM = new Hi.BLL.PAY_PrePayment().GetModel(KeyID);
            decimal price = prepayM.price;

            #region     计算支付手续费 start
            string  sxfsq    = "-1";
            decimal sxf      = 0;
            decimal comp_sxf = 0;//收费方是厂商是,为了不改变支付金额,故声明此变量来记录,厂商手续费。
            // 获取手续费 begin
            string[] Json = Common.GetSxf(this.CompID, AccountType, bankid, price);

            string strMsg = Json[2].ToString();
            if (!string.IsNullOrEmpty(strMsg))
            {
                ClientScript.RegisterStartupScript(this.GetType(), "payTx1375", "<script>$('#lblErr').html(' 充值金额小于支付手续费,不允许支付 !');</script>");
                return;
            }
            else
            {
                sxfsq    = Json[1].ToString();
                sxf      = Convert.ToDecimal(Json[0]);
                comp_sxf = Convert.ToDecimal(Json[3]);
            }

            //支付总金额(含手续费)
            decimal UNIT = 0.01M;
            price = price + Common.Round(sxf, UNIT);

            #endregion  计算支付手续费 end



            int    payid   = 0;
            int    regid   = 0;
            string orderNo = WebConfigurationManager.AppSettings["OrgCode"] + DateTime.Now.ToString("yyyyMMdd");//支付订单号前半部分

            string guid = Guid.NewGuid().ToString().Replace("-", "");
            payModel.OrderID      = KeyID;
            payModel.DisID        = this.DisID;
            payModel.PayUser      = new Hi.BLL.BD_Distributor().GetModel(this.DisID).DisName;
            payModel.PayPrice     = price;
            payModel.IsAudit      = 2;
            payModel.guid         = Common.Number_repeat(guid);
            payModel.vdef3        = "2";
            payModel.vdef4        = orderNo;
            payModel.CreateDate   = DateTime.Now;
            payModel.CreateUserID = this.UserID;
            payModel.ts           = DateTime.Now;
            payModel.modifyuser   = this.UserID;
            //判断账户类型,判断支付渠道,然后赋值
            if (AccountType == "11")
            {
                if (bankid == "888")
                {
                    payModel.Channel = "2";
                }
                else
                {
                    payModel.Channel = "3";
                }
            }//个人贷记卡支付
            else if (AccountType == "13")
            {
                payModel.Channel = "8";
            }
            else
            {
                payModel.Channel = "4";
            }
            payModel.State = Convert.ToInt32(sxfsq);//手续费收取方
            if (sxfsq.Equals("2"))
            {
                payModel.vdef5 = comp_sxf.ToString("0.00");
            }
            else
            {
                payModel.vdef5 = sxf.ToString("0.00");//支付手续费
            }
            payid = new Hi.BLL.PAY_Payment().Add(payModel);

            regModel.OrderId    = KeyID;
            regModel.Ordercode  = WebConfigurationManager.AppSettings["OrgCode"] + Convert.ToString(KeyID);
            regModel.number     = payModel.guid;
            regModel.Price      = price;
            regModel.Payuse     = prepayM.PreType == 6 ? "转账汇款" : prepayM.PreType == 1 ? "企业钱包充值" : "";
            regModel.PayName    = new Hi.BLL.BD_Distributor().GetModel(this.DisID).DisName;
            regModel.DisID      = this.DisID;
            regModel.PayTime    = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
            regModel.Remark     = prepayM.vdef1;
            regModel.DisName    = new Hi.BLL.BD_Company().GetModel(this.CompID).CompName;
            regModel.BankID     = bankid;
            regModel.CreateUser = this.UserID;
            regModel.CreateDate = DateTime.Now;
            regModel.LogType    = 1311;
            regid = new Hi.BLL.PAY_RegisterLog().Add(regModel);

            if (payid <= 0 || regid <= 0)
            {
                //JScript.AlertMsg(this, "数据异常!");
                ClientScript.RegisterStartupScript(this.GetType(), "payTx1375", "<script>$('#lblErr').html('数据异常!');</script>");
                return;
            }

            string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
            try
            {
                PaymentEnvironment.Initialize(configPath);
            }
            catch
            {
                //JScript.AlertMsg(this, "支付配置有误,请联系系统管理员!");
                //return;
                throw new Exception("支付配置有误,请联系系统管理员!");
            }

            String institutionID = WebConfigurationManager.AppSettings["PayOrgCode"];
            //原来传递的支付订单号----目前订单号运行重复
            //String orderNo = WebConfigurationManager.AppSettings["OrgCode"] + Convert.ToString(KeyID);
            long   amount    = Convert.ToInt64(price * 100);
            long   fee       = 0;
            String payerID   = this.DisID.ToString();
            String payerName = new Hi.BLL.BD_Distributor().GetModel(this.DisID).DisName;
            String usage     = prepayM.PreType == 6 ? "转账汇款" : prepayM.PreType == 1 ? "企业钱包充值" : "";
            String remark    = prepayM.PreType == 6 ? "转账汇款" : prepayM.PreType == 1 ? "企业钱包充值" : "";

            String notificationURL = string.Empty;

            if (WebConfigurationManager.AppSettings["PayType"] == "0")
            {
                notificationURL = Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port + "/Handler/ReceiveNoticePage.ashx";
            }
            else
            {
                notificationURL = "http://www.my1818.com/Handler/ReceiveNoticePage.ashx";//回调页面地址
            }
            String payees = new Hi.BLL.BD_Company().GetModel(this.CompID).CompName;


            //判断支付接口
            string Pay_type = WebConfigurationManager.AppSettings["PayType"];
            String bankID   = string.Empty;
            if (Pay_type == "0")
            {
                bankID = "700";//bankid;//
            }
            else
            {
                bankID = bankid;
            }



            // 2.创建交易请求对象
            Tx1311Request tx1311Request = new Tx1311Request();
            tx1311Request.setInstitutionID(institutionID);     //机构号码
            tx1311Request.setOrderNo(orderNo);                 //转账流水号
            tx1311Request.setPaymentNo(payModel.guid);         //支付交易流水号
            tx1311Request.setAmount(amount);                   //支付金额 单位分
            tx1311Request.setFee(fee);                         //支付服务手续费 单位分
            tx1311Request.setPayerID("");                      //付款人注册ID
            tx1311Request.setPayerName("");                    //付款方名称
            tx1311Request.setUsage(usage);                     //资金用途
            tx1311Request.setRemark(remark);                   //备注
            tx1311Request.setNotificationURL(notificationURL); //机构接收支付通知的URL
            tx1311Request.addPayee("");                        //收款方名称
            tx1311Request.setBankID(bankID);                   //付款银行标识

            if (accountType == 13)
            {
                tx1311Request.setAccountType(11); //付款方帐号类型
                tx1311Request.setCardType("02");  //银行卡类型(01=借记卡、02=贷记卡)
            }
            else if (accountType == 11)
            {
                tx1311Request.setAccountType(accountType); //付款方帐号类型
                tx1311Request.setCardType("01");           //银行卡类型(01=借记卡、02=贷记卡)
            }
            else if (accountType == 12)
            {
                tx1311Request.setAccountType(accountType);//付款方帐号类型
            }
            // 3.执行报文处理
            tx1311Request.process();

            try
            {
                Hi.Model.PAY_RegisterLog regM = new Hi.BLL.PAY_RegisterLog().GetModel(regid);
                regM.PlanMessage = tx1311Request.getRequestPlainText();
                new Hi.BLL.PAY_RegisterLog().Update(regM);
            }
            catch { }

            // 4.将参数放置到request对象
            // //3个交易参数
            HttpContext.Current.Items["plainText"] = tx1311Request.getRequestPlainText();
            HttpContext.Current.Items["message"]   = tx1311Request.getRequestMessage();
            HttpContext.Current.Items["signature"] = tx1311Request.getRequestSignature();
            // //2个信息参数
            HttpContext.Current.Items["txCode"] = "1311";
            HttpContext.Current.Items["txName"] = "市场订单支付直通车";
            // 1个action(支付平台地址)参数
            HttpContext.Current.Items["action"] = PaymentEnvironment.PaymentURL;

            // 5.转向Request.jsp页面
            Context.Server.Transfer("ReRequest.aspx", true);
        }
        catch (Exception ex)
        {
            ClientScript.RegisterStartupScript(this.GetType(), "payTx1375", "<script>$('#lblErr').html('" + ex.Message + "!');</script>");
            return;
        }
    }
Ejemplo n.º 24
0
    /// <summary>
    /// 中金聚合支付(微信支付宝支付)
    /// </summary>
    /// <param name="paytype">类型(10=微信扫码支付  20=支付宝扫码支付)</param>
    /// <param name="KeyID">支付订单id</param>
    /// <param name="payPrice">本次支付金额</param>
    /// <returns></returns>
    public static string[] tx1401(string paytype, string KeyID, decimal payPrice)
    {
        string imageUrl = string.Empty;
        bool   fal      = false;

        Hi.Model.DIS_Order      OrderModel = new Hi.BLL.DIS_Order().GetModel(Convert.ToInt32(KeyID));
        Hi.Model.BD_Distributor disModel   = new Hi.BLL.BD_Distributor().GetModel(OrderModel.DisID);



        #region     计算支付手续费 start
        string  sxfsq    = "-1";
        decimal sxf      = 0;
        decimal comp_sxf = 0; //收费方是厂商是,为了不改变支付金额,故声明此变量来记录,厂商手续费。
                              // 获取手续费 begin
        string[] Json = Common.GetAli_Sxf(disModel.CompID, payPrice);

        string strMsg = Json[2].ToString();
        if (!string.IsNullOrEmpty(strMsg))
        {
            return(new string[] { "false", strMsg }); //"{\"sxf\":\"" + sxf + "\",\"sxfsq\":\"" + sxfsq + "\",\"strMsg\":\"" + str + "\"}";
        }
        else
        {
            sxfsq    = Json[1].ToString();
            sxf      = Convert.ToDecimal(Json[0]);
            comp_sxf = Convert.ToDecimal(Json[3]);
        }
        // 获取手续费 end


        //支付总金额(含手续费)
        decimal UNIT = 0.01M;
        payPrice = payPrice + Common.Round(sxf, UNIT);

        #endregion  计算支付手续费 end


        int payid = 0;
        int regid = 0;
        Hi.Model.PAY_Payment payModel = new Hi.Model.PAY_Payment();
        string orderNo = WebConfigurationManager.AppSettings["OrgCode"] + DateTime.Now.ToString("yyyyMMdd");//支付订单号前半部分

        string guid = Guid.NewGuid().ToString().Replace("-", "");
        payModel.OrderID      = OrderModel.ID;
        payModel.DisID        = OrderModel.DisID;
        payModel.Type         = Convert.ToInt32(WebConfigurationManager.AppSettings["IsDBPay"]);
        payModel.PayUser      = disModel.DisName;
        payModel.PayPrice     = payPrice;
        payModel.IsAudit      = 2;
        payModel.guid         = Common.Number_repeat(guid);
        payModel.vdef3        = "1";//1,订单支付,2,预付款充值、汇款
        payModel.vdef4        = orderNo;
        payModel.CreateDate   = DateTime.Now;
        payModel.CreateUserID = OrderModel.CreateUserID;
        payModel.ts           = DateTime.Now;
        payModel.modifyuser   = OrderModel.CreateUserID;
        payModel.Channel      = paytype.Equals("10") ? "7" : "6"; //(微信支付6,支付宝7)

        payModel.State = Convert.ToInt32(sxfsq);                  //手续费收取方

        if (sxfsq.Equals("2"))
        {
            payModel.vdef5 = comp_sxf.ToString("0.00");
        }
        else
        {
            payModel.vdef5 = sxf.ToString("0.00");//支付手续费
        }
        payid = new Hi.BLL.PAY_Payment().Add(payModel);

        //插入日志表
        Hi.Model.PAY_RegisterLog regModel = new Hi.Model.PAY_RegisterLog();
        regModel.OrderId    = OrderModel.ID;
        regModel.Ordercode  = orderNo;// orderNo + payid.ToString();
        regModel.number     = payModel.guid;
        regModel.Price      = payPrice;
        regModel.Payuse     = "订单支付";
        regModel.PayName    = disModel.DisName;
        regModel.DisID      = OrderModel.DisID;
        regModel.PayTime    = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
        regModel.Remark     = OrderModel.Remark;
        regModel.DisName    = new Hi.BLL.BD_Company().GetModel(OrderModel.CompID).CompName;
        regModel.BankID     = paytype;
        regModel.CreateUser = OrderModel.CreateUserID;
        regModel.CreateDate = DateTime.Now;
        regModel.LogType    = 1401;
        regid = new Hi.BLL.PAY_RegisterLog().Add(regModel);
        if (payid <= 0 || regid <= 0)
        {
            return(new string[] { "false", "数据有误" });
        }
        string configPath = WebConfigurationManager.AppSettings["payment.config.path"];
        try
        {
            PaymentEnvironment.Initialize(configPath);
        }
        catch (Exception ex)
        {
            return(new string[] { "false", "支付配置有误,请联系系统管理员" });
        }

        String institutionID = WebConfigurationManager.AppSettings["PayOrgCode"];//机构代码

        string    GoodsName = string.Empty;
        DataTable l         = new Hi.BLL.DIS_OrderDetail().GetOrderDe("", " IsNUll(o.dr,0)=0 and o.OrderId=" + KeyID);
        foreach (DataRow dr in l.Rows)
        {
            GoodsName += dr["GoodsName"] + ",";
        }
        if (GoodsName.Length > 15)
        {
            GoodsName = GoodsName.Substring(0, 10) + "...";
        }

        // 1.取得参数
        int    paymentWay      = Convert.ToInt32(paytype);
        String expirePeriod    = "5";//默认是五分钟
        String subject         = GoodsName;
        String productID       = KeyID.ToString();
        String goodsTag        = "";
        String remark          = "";
        String notificationURL = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port + "/Distributor/Pay/ReceiveNoticeAlipay.aspx";
        int    limitPay        = 10;

        long amount         = Convert.ToInt64(payPrice * 100);//支付金额(单位:分)
        long discountAmount = 0;

        // 2.创建交易请求对象
        Tx1401Request tx1401Request = new Tx1401Request();
        tx1401Request.setInstitutionID(institutionID);
        tx1401Request.setOrderNo(orderNo);
        tx1401Request.setPaymentNo(payModel.guid);
        tx1401Request.setPaymentWay(paymentWay);
        tx1401Request.setAmount(amount);
        tx1401Request.setExpirePeriod(expirePeriod);
        tx1401Request.setSubject(subject);
        tx1401Request.setDiscountAmount(discountAmount);
        tx1401Request.setProductID(productID);
        tx1401Request.setGoodsTag(goodsTag);
        tx1401Request.setRemark(remark);
        tx1401Request.setNotificationURL(notificationURL);
        tx1401Request.setLimitPay(limitPay);

        // 3.执行报文处理
        tx1401Request.process();

        //2个信息参数
        HttpContext.Current.Items["txCode"] = "1401";
        HttpContext.Current.Items["txName"] = "市场订单聚合支付";

        // 与支付平台进行通讯
        TxMessenger txMessenger = new TxMessenger();
        String[]    respMsg     = txMessenger.send(tx1401Request.getRequestMessage(), tx1401Request.getRequestSignature());// 0:message; 1:signature

        String plaintext = XmlUtil.formatXmlString(Encoding.UTF8.GetString(Convert.FromBase64String(respMsg[0])));

        //Console.WriteLine("[message] = [" + respMsg[0] + "]");
        //Console.WriteLine("[signature] = [" + respMsg[1] + "]");
        //Console.WriteLine("[plaintext] = [" + plaintext + "]");

        Tx1401Response tx1401Response = new Tx1401Response(respMsg[0], respMsg[1]);
        HttpContext.Current.Items["plainText"] = tx1401Response.getResponsePlainText();
        if ("2000".Equals(tx1401Response.getCode()))
        {
            //图片URL
            imageUrl = tx1401Response.getImageUrl();
            //二维码代码
            string codeUrl = tx1401Response.getCodeUrl();
            //处理业务
            fal = true;
        }
        return(new string[] { fal.ToString(), imageUrl, payModel.guid });
    }