示例#1
0
        public string OtherMsg = null;//附加消息

        public string FormatMsg()
        {
            merchantId = ChargeConfig.GetConfigKey(CompanyType.快钱, ChargeConfig.DataType.User);
            var messageName = GetType().Namespace;

            messageName = messageName.Substring(messageName.LastIndexOf(".") + 1);
            String signMsgXml = "";

            signMsgXml += "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
            signMsgXml += "<MasMessage xmlns=\"http://www.99bill.com/mas_cnp_merchant_interface\">";
            signMsgXml += "<version>1.0</version>";
            signMsgXml += "<" + messageName + ">";
            signMsgXml += "<merchantId>" + merchantId + "</merchantId>";
            signMsgXml += "<customerId>" + customerId + "</customerId>";
            var fields = GetType().GetFields();

            foreach (var item in fields)
            {
                var value = item.GetValue(this) + "";
                if (item.Name == "OtherMsg")
                {
                    signMsgXml += value;
                }
                else
                {
                    signMsgXml += string.Format("<{0}>{1}</{0}>", item.Name, value);
                }
            }
            signMsgXml += "</" + messageName + ">";
            signMsgXml += "</MasMessage>";
            return(signMsgXml);
        }
示例#2
0
        public Config(PayHistory order)
        {
            var company = CompanyType.支付宝WAP;

            #region 支付宝参数,必须按照以下值传递
            Req_url = "http://wappaygw.alipay.com/service/rest.htm";

            V = "2.0";
            Service_Create     = "alipay.wap.trade.create.direct";
            Service_Auth       = "alipay.wap.auth.authAndExecute";
            Sec_id             = "MD5";
            Format             = "xml";
            Input_charset_UTF8 = "utf-8";
            #endregion

            #region 商户需要手动配置
            Partner             = ChargeConfig.GetConfigKey(company, ChargeConfig.DataType.User);
            Key                 = ChargeConfig.GetConfigKey(company, ChargeConfig.DataType.Key);
            Seller_account_name = ChargeConfig.GetConfigKey(company, "卖家账户名称");

            Req_id       = Guid.NewGuid().ToString();
            Out_trade_no = order.OrderId;
            Subject      = order.Desc;
            Total_fee    = order.Amount.ToString();
            Out_user     = order.UserId.ToString();
            //Call_back_url = "";
            //Notify_url = "";
            Merchant_url = ChargeConfig.GetConfigKey(company, "返回商户产品URL");
            #endregion
        }
示例#3
0
        /// <summary>
        /// 生成请求头
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public T CreateHead <T>() where T : RequestBase, new()
        {
            string merId     = ChargeConfig.GetConfigKey(CompanyType.银联托管, ChargeConfig.DataType.User);
            string channelId = ChargeConfig.GetConfigKey(CompanyType.银联托管, ChargeConfig.DataType.Data);
            var    obj       = new T();

            obj.SetCode();
            obj.Ver        = "100";
            obj.MerId      = merId;
            obj.SrcReqDate = DateTime.Now.ToString("yyyyMMdd");
            obj.SrcReqId   = CreateOrderId();
            obj.ChannelId  = channelId;
            return(obj);
        }
示例#4
0
        public override void Submit(IPayHistory order)
        {
            BaseSubmit(order);
            var request = CreateHead <Charge.Request>();

            request.UserId   = order.UserId;
            request.Amt      = (Convert.ToInt64(order.Amount) * 100).ToString();
            request.SrcReqId = order.OrderId;//更改为订单ID
            request.CurCode  = "156";
            string notifyUrl = ChargeConfig.GetConfigKey(CompanyType.银联托管, ChargeConfig.DataType.NotifyUrl);
            string returnUrl = ChargeConfig.GetConfigKey(CompanyType.银联托管, ChargeConfig.DataType.ReturnUrl);

            request.NotifyUrl = ConvertUrl(notifyUrl);
            request.ReturnUrl = ConvertUrl(returnUrl);
            Submit(request);
        }
示例#5
0
        public XmlDocument SendRequest()
        {
            var              data       = FormatMsg();
            string           url        = Host + InterfacePath;
            var              privateKey = CoreHelper.CustomSetting.GetConfigKey("99billQuickPayPFXFile");
            var              user       = ChargeConfig.GetConfigKey(CompanyType.快钱, ChargeConfig.DataType.User);
            var              pass       = ChargeConfig.GetConfigKey(CompanyType.快钱, ChargeConfig.DataType.PayPass);
            X509Certificate2 x509       = new X509Certificate2(privateKey, pass, X509KeyStorageFlags.MachineKeySet);

            byte[] buffer = Encoding.GetEncoding("utf-8").GetBytes(data);
            ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
            HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url);

            webReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(user + ":" + pass)));

            webReq.ClientCertificates.Add(x509);
            webReq.Timeout       = 40000;
            webReq.KeepAlive     = true;
            webReq.Method        = "POST";
            webReq.ContentType   = "application/x-www-form-urlencoded";
            webReq.ContentLength = buffer.Length;
            Stream reqStream = webReq.GetRequestStream();

            reqStream.Write(buffer, 0, buffer.Length);
            reqStream.Close();

            HttpWebResponse webResp    = (HttpWebResponse)webReq.GetResponse();
            StreamReader    sr         = new StreamReader(webResp.GetResponseStream());
            var             returnData = sr.ReadToEnd();

            returnData = returnData.Replace("xmlns=\"http://www.99bill.com/mas_cnp_merchant_interface\"", "");
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(returnData);
            webResp.Close();
            sr.Close();
            return(xmlDoc);
        }
示例#6
0
 public AlipayCompany()
 {
     key = ChargeConfig.GetConfigKey(CompanyType.支付宝, ChargeConfig.DataType.Key);
 }
示例#7
0
 public TenpayCompany()
 {
     key = ChargeConfig.GetConfigKey(ThisCompanyType, ChargeConfig.DataType.Key);
 }
示例#8
0
        /// <summary>
        /// 退款接口,可重复提交得到状态
        /// </summary>
        /// <param name="order"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public override bool RefundOrder(PayHistory order, out string message)
        {
            #region 退款
            RequestHandler reqHandler = new RequestHandler(HttpContext.Current);

            //通信对象
            TenpayHttpClient      httpClient = new TenpayHttpClient();
            ClientResponseHandler resHandler = new ClientResponseHandler();
            //-----------------------------
            //设置请求参数
            //-----------------------------
            reqHandler.init();
            reqHandler.setKey(key);
            reqHandler.setGateUrl("https://mch.tenpay.com/refundapi/gateway/refund.xml");

            reqHandler.setParameter("partner", bargainor_id);
            //out_trade_no和transaction_id至少一个必填,同时存在时transaction_id优先
            //reqHandler.setParameter("out_trade_no", order.OrderId);
            reqHandler.setParameter("transaction_id", order.OrderId);
            reqHandler.setParameter("out_refund_no", order.OrderId + "C");
            reqHandler.setParameter("total_fee", (order.Amount * 100).ToString());
            reqHandler.setParameter("refund_fee", (order.Amount * 100).ToString());
            reqHandler.setParameter("op_user_id", bargainor_id);
            reqHandler.setParameter("op_user_passwd", ChargeConfig.GetConfigKey(ThisCompanyType, ChargeConfig.DataType.PayPass));
            string requestUrl = reqHandler.getRequestURL();
            //证书和证书密码
            httpClient.setCertInfo(ChargeConfig.GetConfigKey(ThisCompanyType, ChargeConfig.DataType.CertFile), bargainor_id);
            //设置请求内容
            httpClient.setReqContent(requestUrl);
            //设置超时
            httpClient.setTimeOut(10);

            string rescontent = "";
            //后台调用
            if (!httpClient.call())
            {
                message = "接口调用失败";
                return(false);
            }
            //获取结果
            rescontent = httpClient.getResContent();

            resHandler.setKey(key);
            //设置结果参数
            resHandler.setContent(rescontent);
            message = resHandler.getParameter("retmsg");
            //Log("退款返回结果为:" + rescontent);
            //判断签名及结果
            if (!resHandler.isTenpaySign())
            {
                message = "返回签名验证错误";
                return(false);
            }
            if (resHandler.getParameter("retcode") != "0")
            {
                return(false);
            }

            //商户订单号
            string out_trade_no = resHandler.getParameter("out_trade_no");
            //财富通订单号
            string transaction_id = resHandler.getParameter("transaction_id");

            // 退款状态:
            //4,10:退款成功。
            //3,5,6:退款失败。
            //8,9,11:退款处理中。
            //1,2:未确定,需要商户原退款单号重新发起。
            //7:转入代发,退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,资金回流到商户的现金帐号,需要商户人工干预,通过线下或者财富通转账的方式进行退款

            string refund_status = resHandler.getParameter("refund_status");

            if (refund_status == "4" || refund_status == "10")
            {
                string recv_user_id    = resHandler.getParameter("recv_user_id");
                string reccv_user_name = resHandler.getParameter("reccv_user_name");
                //Log("退款接收人信息为:" + recv_user_id + "  " + reccv_user_name);
                BaseRefundOrder(order);
                return(true);
            }
            if (refund_status == "8" || refund_status == "9" || refund_status == "11")
            {
                //todo 自动重复查询
                message = "退款处理中";
                return(true);
            }
            return(false);

            #endregion
        }
示例#9
0
 public void Delete(ChargeConfig ChargeConfig)
 {
     this._dBContext.Attach(ChargeConfig);
     this._dBContext.Entry(ChargeConfig).State = EntityState.Modified;
 }
示例#10
0
 public void Add(ChargeConfig ChargeConfig)
 {
     this._dBContext.Add(ChargeConfig);
 }