Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }