public Transaction ProcessOpenBanking(BankPaymentBuilder builder) { string timestamp = builder.Timestamp ?? GenerationUtils.GenerateTimestamp(); string orderId = builder.OrderId ?? GenerationUtils.GenerateOrderId(); var amount = builder.Amount != null?builder.Amount.ToNumericCurrencyString() : null; JsonDoc request = new JsonDoc(); var paymentMethod = builder.PaymentMethod as BankPayment; switch (builder.TransactionType) { case TransactionType.Sale: var bankPaymentType = paymentMethod.BankPaymentType != null ? paymentMethod.BankPaymentType : GetBankPaymentType(builder.Currency); string hash = GenerationUtils.GenerateHash(SharedSecret, ShaHashType, timestamp, MerchantId, orderId, amount, builder.Currency, !string.IsNullOrEmpty(paymentMethod.SortCode) && bankPaymentType.Equals(BankPaymentType.FASTERPAYMENTS) ? paymentMethod.SortCode : "", !string.IsNullOrEmpty(paymentMethod.AccountNumber) && bankPaymentType.Equals(BankPaymentType.FASTERPAYMENTS) ? paymentMethod.AccountNumber : "", !string.IsNullOrEmpty(paymentMethod.Iban) && bankPaymentType.Equals(BankPaymentType.SEPA) ? paymentMethod.Iban : ""); SetAuthorizationHeader(hash); request.Set("request_timestamp", timestamp) .Set("merchant_id", MerchantId) .Set("account_id", AccountId); JsonDoc order = new JsonDoc(); order.Set("id", orderId) .Set("currency", builder.Currency) .Set("amount", amount) .Set("description", builder.Description); JsonDoc payment = new JsonDoc(); JsonDoc destination = new JsonDoc(); destination.Set("account_number", bankPaymentType.Equals(BankPaymentType.FASTERPAYMENTS) ? paymentMethod.AccountNumber : null) .Set("sort_code", bankPaymentType.Equals(BankPaymentType.FASTERPAYMENTS) ? paymentMethod.SortCode : null) .Set("iban", bankPaymentType.Equals(BankPaymentType.SEPA) ? paymentMethod.Iban : null) .Set("name", paymentMethod.AccountName); JsonDoc remittance_reference = new JsonDoc(); remittance_reference.Set("type", builder.RemittanceReferenceType != null ? builder.RemittanceReferenceType.ToString() : null) .Set("value", builder.RemittanceReferenceValue); payment.Set("scheme", bankPaymentType.ToString()) .Set("destination", destination); if (remittance_reference.HasKeys()) { payment.Set("remittance_reference", remittance_reference); } request.Set("order", order) .Set("payment", payment) .Set("return_url", paymentMethod.ReturnUrl) .Set("status_url", paymentMethod.StatusUpdateUrl); break; default: break; } try { string rawResponse = DoTransaction(HttpMethod.Post, "/payments", request.ToString()); return(OpenBankingMapping.MapResponse(rawResponse)); } catch (GatewayException gatewayException) { throw gatewayException; } }
public T ProcessReport <T>(ReportBuilder <T> builder) where T : class { Dictionary <string, string> queryParams = new Dictionary <string, string>(); string timestamp = GenerationUtils.GenerateTimestamp(); switch (builder.ReportType) { case ReportType.FindBankPayment: if (builder is TransactionReportBuilder <T> ) { var trb = builder as TransactionReportBuilder <T>; var accountId = string.IsNullOrEmpty(trb.SearchBuilder.BankPaymentId) ? AccountId : ""; string hash = GenerationUtils.GenerateHash(SharedSecret, ShaHashType, timestamp, MerchantId, accountId, !string.IsNullOrEmpty(trb.SearchBuilder.BankPaymentId) ? trb.SearchBuilder.BankPaymentId : "", trb.SearchBuilder.StartDate.HasValue ? trb.SearchBuilder.StartDate.Value.ToString("yyyyMMddHHmmss") : "", trb.SearchBuilder.EndDate.HasValue ? trb.SearchBuilder.EndDate.Value.ToString("yyyyMMddHHmmss") : "", trb.SearchBuilder.ReturnPII.HasValue ? (trb.SearchBuilder.ReturnPII.Value ? "True" : "False") : ""); SetAuthorizationHeader(hash); queryParams.Add("timestamp", timestamp); queryParams.Add("merchantId", MerchantId); if (!string.IsNullOrEmpty(accountId)) { queryParams.Add("accountId", accountId); } var obTransId = !string.IsNullOrEmpty(trb.SearchBuilder.BankPaymentId) ? trb.SearchBuilder.BankPaymentId : ""; if (!string.IsNullOrEmpty(obTransId)) { queryParams.Add("obTransId", obTransId); } var startDate = trb.SearchBuilder.StartDate.HasValue ? trb.SearchBuilder.StartDate.Value.ToString("yyyyMMddHHmmss") : ""; if (!string.IsNullOrEmpty(startDate)) { queryParams.Add("startDateTime", startDate); } var endDate = trb.SearchBuilder.EndDate.HasValue ? trb.SearchBuilder.EndDate.Value.ToString("yyyyMMddHHmmss") : ""; if (!string.IsNullOrEmpty(endDate)) { queryParams.Add("endDateTime", endDate); } var transState = trb.SearchBuilder.BankPaymentStatus.HasValue ? trb.SearchBuilder.BankPaymentStatus.Value.ToString() : ""; if (!string.IsNullOrEmpty(transState)) { queryParams.Add("transactionState", transState); } var returnPii = trb.SearchBuilder.ReturnPII.HasValue ? (trb.SearchBuilder.ReturnPII.Value ? "True" : "False") : ""; if (!string.IsNullOrEmpty(returnPii)) { queryParams.Add("returnPii", returnPii); } } break; default: break; } try { string response = DoTransaction(HttpMethod.Get, "/payments", null, queryParams); return(OpenBankingMapping.MapReportResponse <T>(response, builder.ReportType)); } catch (GatewayException ex) { throw ex; } }