public PaymentStatusResponse checkStatus(PaymentRequest request) { var result = new PaymentStatusResponse(); var dwollaApi = new DwollaApi(Setting); if (string.IsNullOrEmpty(request.ReferenceId)) { return(result); } var response = dwollaApi.GetTransfer(request.ReferenceId).Result; if (response.Status == "processed") { result.Status = PaymentStatus.Paid; } else if (response.Status == "failed") { result.Status = PaymentStatus.Rejected; } else if (response.Status == "pending") { result.Status = PaymentStatus.Pending; } else if (response.Status == "cancelled") { result.Status = PaymentStatus.Cancelled; } return(result); }
public IPaymentResponse Charge(PaymentRequest request) { request.Additional.TryGetValue("firstName", out var firstName); request.Additional.TryGetValue("lastName", out var lastName); var email = Guid.NewGuid().ToString() + "@email.com"; var customerParameters = new Customer() { FirstName = (string)firstName, LastName = (string)lastName, Email = email }; var money = new Money { Currency = request.Currency, Value = request.TotalAmount }; var dwollaApi = new DwollaApi(Setting); var failedResponse = new FailedResponse("Payment failed") { requestId = request.Id }; var customer = dwollaApi.CreateCustomer(customerParameters).Result; if (!customer.IsSuccessStatusCode) { failedResponse.Message = customer.Content; return(failedResponse); } var iavToken = dwollaApi.CreateIavToken(customer.Headers.Location.ToString()).Result; if (string.IsNullOrEmpty(iavToken.Token)) { failedResponse.Message = "Getting IAV token failed"; return(failedResponse); } var response = new HiddenFormResponse { requestId = request.Id }; response.html = GetHtml(Setting.IsUsingSanbox, iavToken.Token, money, request); return(response); }
public PaymentCallback CreateTransfer(RenderContext context) { var fundingSourceResponse = JsonConvert.DeserializeObject <AddFundingSourceResponse>(context.Request.Body); PaymentCallback response = null; var fundingSourceLink = fundingSourceResponse.Links.FundingSource.Href; if (fundingSourceLink != null) { var dwollaApi = new DwollaApi(Setting); var webhookApi = PaymentHelper.GetCallbackUrl(this, nameof(Notify), context); var isNeedSubscribe = true; var webhookSubscriptionList = dwollaApi.GetWebhookSubscription().Result; foreach (var subscription in webhookSubscriptionList.Embedded.WebhookSubscriptions) { if (subscription.Url == webhookApi) { isNeedSubscribe = false; } } if (isNeedSubscribe) { var issubscribed = dwollaApi.CreateWebhookSubscription(webhookApi, "kooboodwollasecret").Result; } var request = new CreateTransferRequest() { Links = new Dictionary <string, Link> { { "source", new Link { Href = fundingSourceLink } }, { "destination", new Link { Href = new Uri(dwollaApi.ApiBaseAddress + "/funding-sources/" + Setting.FundingSourceId) } } }, Amount = fundingSourceResponse.Money }; var createTransferResult = dwollaApi.CreateTransfer(request).Result; if (createTransferResult.Status == "Created") { response = new PaymentCallback(); var storedRequest = PaymentManager.GetRequest(fundingSourceResponse.RequestId, context); storedRequest.ReferenceId = createTransferResult.TransferURL.ToString(); PaymentManager.UpdateRequest(storedRequest, context); } } return(response); }