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); }
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 }
/// <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); }
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); }
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); }
public AlipayCompany() { key = ChargeConfig.GetConfigKey(CompanyType.支付宝, ChargeConfig.DataType.Key); }
public TenpayCompany() { key = ChargeConfig.GetConfigKey(ThisCompanyType, ChargeConfig.DataType.Key); }
/// <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 }
public void Delete(ChargeConfig ChargeConfig) { this._dBContext.Attach(ChargeConfig); this._dBContext.Entry(ChargeConfig).State = EntityState.Modified; }
public void Add(ChargeConfig ChargeConfig) { this._dBContext.Add(ChargeConfig); }