public PaymentResult BillPaymentRequest(int cyberplatOperatorId, StringList parametersList, string session) { var result = new PaymentResult { Error = 0 }; if (parametersList.ContainsKey("AllowPart") && bool.Parse(parametersList["AllowPart"])) { // todo проверка LOWER/UPPER } var token = Authenticate(); var request = GetRequestContent(Bilpmtrq); var signer = new EfawateerSigner(_certificate); var guid = GenerateGuid(); var time = DateTime.Now.ToString("s"); request.Element("MsgHeader").Element("TmStp").Value = time; request.Element("MsgHeader").Element("TrsInf").Element("SdrCode").Value = _customerCode; var trxInf = request.Element("MsgBody").Element("Transactions").Element("TrxInf"); var accInfo = trxInf.Element("AcctInfo"); if (!parametersList.ContainsKey("BillingNo") || parametersList["BillingNo"].Contains("#")) { accInfo.Element("BillingNo").Remove(); accInfo.Element("BillNo").Remove(); } else { accInfo.Element("BillingNo").Value = parametersList["BillingNo"]; accInfo.Element("BillNo").Value = parametersList["BillingNo"]; } accInfo.Element("BillerCode").Value = ExpandBillerCodeFromCyberplatOpertaroId(cyberplatOperatorId).ToString(CultureInfo.InvariantCulture); trxInf.Element("ServiceTypeDetails").Element("ServiceType").Value = parametersList.Get("ServiceType"); trxInf.Element("DueAmt").Value = parametersList.Get("DueAmt"); trxInf.Element("PaidAmt").Value = parametersList.Get("DueAmt"); trxInf.Element("ProcessDate").Value = time; trxInf.Element("BankTrxID").Value = session; Audit("BillPaymentRequest request:" + request); request.Element("MsgFooter").Element("Security").Element("Signature").Value = signer.SignData(request.Element("MsgBody").ToString()); var service = new PaymentClient(new WSHttpBinding(SecurityMode.None, true) { ReceiveTimeout = new TimeSpan(0, 0, 0, 0, _timeout) }, new EndpointAddress(_paymentUrl)); var response = service.PayBill(guid, token, request); Audit("BillPaymentRequest response:" + response); trxInf = response.Element("MsgBody").Element("Transactions").Element("TrxInf"); result.Error = Convert.ToInt32(trxInf.Element("Result").Element("ErrorCode").Value); if (trxInf.Element("JOEBPPSTrx") != null) { result.JoebppsTrx = trxInf.Element("JOEBPPSTrx").Value; } if (trxInf.Element("STMTDate") != null) { result.StmtDate = DateTime.Parse(trxInf.Element("STMTDate").Value); } result.Params = parametersList; return(result); }
public PaymentResult PrepaidValidationRequest(int cyberplatOperatorId, StringList parametersList) { var billerCode = ExpandBillerCodeFromCyberplatOpertaroId(cyberplatOperatorId); var token = Authenticate(); var request = GetRequestContent(Prepadvalrq); var signer = new EfawateerSigner(_certificate); var time = DateTime.Now.ToString("s"); var guid = GenerateGuid(); request.Element("MsgHeader").Element("TmStp").Value = time; request.Element("MsgHeader").Element("TrsInf").Element("SdrCode").Value = _customerCode; request.Element("MsgHeader").Element("GUID").Value = guid; var billInfo = request.Element("MsgBody").Element("BillingInfo"); var accInfo = billInfo.Element("AcctInfo"); accInfo.Element("BillerCode").Value = billerCode.ToString(); if (!parametersList.ContainsKey("BillingNo") || parametersList["BillingNo"].Contains("#")) { accInfo.Element("BillingNo").Remove(); } else { accInfo.Element("BillingNo").Value = parametersList["BillingNo"]; } var serviceTypeDetails = billInfo.Element("ServiceTypeDetails"); serviceTypeDetails.Element("ServiceType").Value = parametersList["ServiceType"]; if (!parametersList.ContainsKey("PrepaidCat")) { serviceTypeDetails.Element("PrepaidCat").Remove(); } else { serviceTypeDetails.Element("PrepaidCat").Value = parametersList["PrepaidCat"]; } if (!parametersList.ContainsKey("DueAmt")) { billInfo.Element("DueAmt").Remove(); } else { billInfo.Element("DueAmt").Value = parametersList["DueAmt"]; } Audit("Validation request:" + request); request.Element("MsgFooter").Element("Security").Element("Signature").Value = signer.SignData(request.Element("MsgBody").ToString()); var service = new PrepaidValidationClient(new WSHttpBinding(SecurityMode.None, true) { ReceiveTimeout = new TimeSpan(0, 0, 0, 0, _timeout) }, new EndpointAddress(_validationUrl)); var response = service.Validate(guid, token, request); Audit("Validation response:" + response); billInfo = response.Element("MsgBody").Element("BillingInfo"); var errorCode = Convert.ToInt32(billInfo.Element("Result").Element("ErrorCode").Value); if (errorCode == 0) { var validationCode = billInfo.Element("ValidationCode").Value; if (parametersList.ContainsKey("ValidationCode")) { parametersList.Remove("ValidationCode"); } parametersList.Add("ValidationCode", validationCode); } return(new PaymentResult { Params = parametersList, Error = errorCode }); }
public PaymentResult BillInquiryRequest(int cyberplatOperatorId, StringList parametersList) { var billerCode = ExpandBillerCodeFromCyberplatOpertaroId(cyberplatOperatorId); var token = Authenticate(); var request = GetRequestContent(Bilinqrq); var signer = new EfawateerSigner(_certificate); var now = DateTime.Now; var time = now.ToString("s"); var guid = GenerateGuid(); request.Element("MsgHeader").Element("TmStp").Value = time; request.Element("MsgHeader").Element("TrsInf").Element("SdrCode").Value = _customerCode; var billInfo = request.Element("MsgBody"); var accInfo = billInfo.Element("AcctInfo"); accInfo.Element("BillerCode").Value = billerCode.ToString(CultureInfo.InvariantCulture); if (!parametersList.ContainsKey("BillingNo") || parametersList["BillingNo"].Contains("#")) { accInfo.Element("BillingNo").Remove(); } else { accInfo.Element("BillingNo").Value = parametersList["BillingNo"]; } billInfo.Element("ServiceType").Value = parametersList.Get("ServiceType"); var dateRange = billInfo.Element("DateRange"); dateRange.Element("StartDt").Value = now.AddDays(-_startdt).ToString("s"); dateRange.Element("EndDt").Value = time; Audit("BillInquiryRequest request:" + request); request.Element("MsgFooter").Element("Security").Element("Signature").Value = signer.SignData(request.Element("MsgBody").ToString()); var service = new BillInquiryClient(new WSHttpBinding(SecurityMode.None, true) { ReceiveTimeout = new TimeSpan(0, 0, 0, 0, _timeout) }, new EndpointAddress(_inquiryUrl)); var response = service.Inquire(guid, token, request); Audit("BillInquiryRequest response:" + response); var errorCode = Convert.ToInt32(response.Element("MsgHeader").Element("Result").Element("ErrorCode").Value); if (errorCode != 0) { return new PaymentResult { Params = parametersList, Error = errorCode } } ; errorCode = 0; if (response.Element("MsgBody") == null) { errorCode = 10; } else if (response.Element("MsgBody").Element("BillsRec") == null) { errorCode = 11; } else { var billRec = response.Element("MsgBody").Element("BillsRec").Element("BillRec"); if (billRec.Element("OpenDate") != null) { var openDate = DateTime.Parse(billRec.Element("OpenDate").Value); if (openDate > now) { errorCode = 12; } //throw new Exception("Невозможно выполнить оплату счет в будущем (OpenDate)"); } else { var dueDate = DateTime.Parse(billRec.Element("DueDate").Value); if (dueDate > now) { errorCode = 13; } //throw new Exception("Невозможно выполнить оплату счет в будущем (DueDate)"); } if (billRec.Element("ExpiryDate") != null) { var expiryDate = DateTime.Parse(billRec.Element("ExpiryDate").Value); if (expiryDate < now) { errorCode = 14; } //throw new Exception("Невозможно выполнить оплату счет в прошлом (ExpiryDate)"); } if (billRec.Element("CloseDate") != null) { var closeDate = DateTime.Parse(billRec.Element("CloseDate").Value); if (closeDate < now) { errorCode = 15; } //throw new Exception("Невозможно выполнить оплату счет в прошлом (CloseDate)"); } if (errorCode == 0) { var dueAmt = billRec.Element("DueAmount").Value; var inqRefNo = string.Empty; if (billRec.Element("InqRefNo") != null) { inqRefNo = billRec.Element("InqRefNo").Value; } var pmtConst = billRec.Element("PmtConst"); var lower = pmtConst.Element("Lower").Value; var upper = pmtConst.Element("Upper").Value; var allowPart = pmtConst.Element("AllowPart").Value; parametersList.Add("INQREFNO", inqRefNo); if (parametersList.ContainsKey("DueAmt")) { parametersList.Remove("DueAmt"); } parametersList.Add("DueAmt", dueAmt); parametersList.Add("AllowPart", allowPart); parametersList.Add("LOWERAMOUNT", lower); parametersList.Add("UPPERAMOUNT", upper); } } return(new PaymentResult { Params = parametersList, Error = errorCode }); }
public PaymentResult PaymentInquiryRequest(int cyberplatOperatorId, StringList parametersList, string session) { var result = new PaymentResult { Error = 0 }; var billerCode = ExpandBillerCodeFromCyberplatOpertaroId(cyberplatOperatorId); var token = Authenticate(); var request = GetRequestContent(Pmtinqrq); var signer = new EfawateerSigner(_certificate); var now = DateTime.Now; var time = now.ToString("s"); var guid = GenerateGuid(); request.Element("MsgHeader").Element("TmStp").Value = time; request.Element("MsgHeader").Element("TrsInf").Element("SdrCode").Value = _customerCode; var trxInf = request.Element("MsgBody").Element("Transactions").Element("TrxInf"); trxInf.Element("PmtGuid").Value = session; trxInf.Element("ParTrxID").Value = session; if (parametersList.ContainsKey("ValidationCode")) { trxInf.Element("ValidationCode").Value = parametersList["ValidationCode"]; } else { trxInf.Element("ValidationCode").Remove(); } trxInf.Element("DueAmt").Value = parametersList.Get("DueAmt"); trxInf.Element("PaidAmt").Value = parametersList.Get("DueAmt"); trxInf.Element("ProcessDate").Value = time; trxInf.Element("PaymentType").Value = parametersList.Get("PaymentType"); trxInf.Element("ServiceTypeDetails").Element("ServiceType").Value = parametersList.Get("ServiceType"); trxInf.Element("ServiceTypeDetails").Element("PrepaidCat").Remove(); var accInfo = trxInf.Element("AcctInfo"); if (!parametersList.ContainsKey("BillingNo") || parametersList["BillingNo"].Contains("#")) { accInfo.Element("BillingNo").Remove(); accInfo.Element("BillNo").Remove(); } else { accInfo.Element("BillingNo").Value = parametersList["BillingNo"]; accInfo.Element("BillNo").Value = parametersList["BillingNo"]; } accInfo.Element("BillerCode").Value = billerCode.ToString(CultureInfo.InvariantCulture); Audit("PaymentInquiryRequest request:" + request); request.Element("MsgFooter").Element("Security").Element("Signature").Value = signer.SignData(request.Element("MsgBody").ToString()); var service = new PaymentInquiryClient(new WSHttpBinding(SecurityMode.None, true) { ReceiveTimeout = new TimeSpan(0, 0, 0, 0, _timeout) }, new EndpointAddress(_paymentInquryUrl)); var response = service.Inquire(guid, token, request); Audit("PaymentInquiryRequest response:" + response); if (response.Element("MsgBody") != null) { trxInf = response.Element("MsgBody").Element("Transactions").Element("TrxInf"); result.Error = Convert.ToInt32(trxInf.Element("Result").Element("ErrorCode").Value); } else { result.Error = Convert.ToInt32(response.Element("MsgHeader").Element("Result").Element("ErrorCode").Value); } result.StmtDate = DateTime.Now; return(result); }