public static Payment CreateFuturePayment() { FuturePayment pay = new FuturePayment(); pay.intent = "sale"; CreditCard card = CreditCardTest.GetCreditCard(); List <FundingInstrument> fundingInstruments = new List <FundingInstrument>(); FundingInstrument fundingInstrument = new FundingInstrument(); fundingInstrument.credit_card = card; fundingInstruments.Add(fundingInstrument); Payer payer = new Payer(); payer.payment_method = "credit_card"; payer.funding_instruments = fundingInstruments; List <Transaction> transactionList = new List <Transaction>(); Transaction trans = new Transaction(); trans.amount = AmountTest.GetAmount(); transactionList.Add(trans); pay.transactions = transactionList; pay.payer = payer; Payment paymnt = pay.Create(UnitTestUtil.GetApiContext()); return(paymnt); }
public void FuturePaymentTest() { APIContext context = UnitTestUtil.GetApiContext(); Payment futurePayment = GetFuturePayment(); Payment retrievedPayment = FuturePayment.Get(context, futurePayment.id); Assert.AreEqual(futurePayment.id, retrievedPayment.id); }
public void FuturePaymentTest() { var context = UnitTestUtil.GetApiContext(); var futurePayment = CreateFuturePayment(); var retrievedPayment = FuturePayment.Get(context, futurePayment.id); Assert.AreEqual(futurePayment.id, retrievedPayment.id); }
public void FuturePaymentTest() { try { var context = TestingUtil.GetApiContext(); var futurePayment = CreateFuturePayment(); var retrievedPayment = FuturePayment.Get(context, futurePayment.id); Assert.AreEqual(futurePayment.id, retrievedPayment.id); } finally { TestingUtil.RecordConnectionDetails(); } }
public void FuturePaymentTest() { try { var context = TestingUtil.GetApiContext(); var futurePayment = CreateFuturePayment(); var retrievedPayment = FuturePayment.Get(context, futurePayment.id); Assert.AreEqual(futurePayment.id, retrievedPayment.id); } catch (ConnectionException ex) { TestingUtil.WriteConnectionExceptionDetails(ex); throw; } }
public void FuturePaymentTest() { try { var apiContext = TestingUtil.GetApiContext(); this.RecordConnectionDetails(); var futurePayment = CreateFuturePayment(); this.RecordConnectionDetails(); var retrievedPayment = FuturePayment.Get(apiContext, futurePayment.id); this.RecordConnectionDetails(); Assert.AreEqual(futurePayment.id, retrievedPayment.id); } catch (ConnectionException) { this.RecordConnectionDetails(false); throw; } }
public PreAuthorizePaymentResponse PreAuthorize(Guid accountId, Guid orderId, string email, decimal amountToPreAuthorize, bool isReAuth = false) { var message = string.Empty; var transactionId = string.Empty; var preAuthAmount = amountToPreAuthorize; try { var isSuccessful = false; if (amountToPreAuthorize > 0) { var account = _accountDao.FindById(accountId); var regionName = _serverSettings.ServerData.PayPalRegionInfoOverride; var conversionRate = _serverSettings.ServerData.PayPalConversionRate; _logger.LogMessage("PayPal Conversion Rate: {0}", conversionRate); var amount = Math.Round(amountToPreAuthorize * conversionRate, 2); preAuthAmount = amount; var futurePayment = new FuturePayment { intent = Intents.Authorize, payer = new Payer { payment_method = "paypal" }, transactions = new List <Transaction> { new Transaction { amount = new Amount { currency = conversionRate != 1 ? CurrencyCodes.Main.UnitedStatesDollar : _resources.GetCurrencyCode(), total = amount.ToString("N", CultureInfo.InvariantCulture) }, description = regionName.HasValue() ? string.Format("order: {0}", orderId) : string.Format(_resources.Get("PaymentItemDescription", account.Language), orderId, amountToPreAuthorize) } } }; var refreshToken = _accountDao.GetPayPalEncryptedRefreshToken(accountId); if (!refreshToken.HasValue()) { throw new Exception("Account has no PayPal refresh token"); } var accessToken = GetAccessToken(accountId); var createdPayment = futurePayment.Create(GetAPIContext(accessToken, isReAuth ? Guid.NewGuid() : orderId)); transactionId = createdPayment.transactions[0].related_resources[0].authorization.id; switch (createdPayment.state) { case PaymentStates.Approved: isSuccessful = true; break; case PaymentStates.Created: case PaymentStates.Pending: message = string.Format("Authorization state was {0}", createdPayment.state); break; case PaymentStates.Failed: case PaymentStates.Canceled: case PaymentStates.Expired: message = string.Format("Authorization state was {0}", createdPayment.state); break; } } else { // if we're preauthorizing $0, we skip the preauth with payment provider // but we still send the InitiateCreditCardPayment command // this should never happen in the case of a real preauth (hence the minimum of $50) isSuccessful = true; } if (isSuccessful && !isReAuth) { var paymentId = Guid.NewGuid(); _commandBus.Send(new InitiateCreditCardPayment { PaymentId = paymentId, Amount = preAuthAmount, TransactionId = transactionId, OrderId = orderId, Provider = PaymentProvider.PayPal, IsNoShowFee = false }); } return(new PreAuthorizePaymentResponse { IsSuccessful = isSuccessful, Message = message, TransactionId = transactionId }); } catch (Exception ex) { var exceptionMessage = ex.Message; var paymentException = ex as PaymentsException; if (paymentException != null && paymentException.Details != null) { exceptionMessage = paymentException.Details.message; } _logger.LogMessage(string.Format("Error during preauthorization (validation of the PayPal account) for client {0}: {1} - {2}", email, message + exceptionMessage, paymentException ?? ex)); _logger.LogError(paymentException ?? ex); return(new PreAuthorizePaymentResponse { IsSuccessful = false, Message = message }); } }
/// <summary> /// Code example for creating a future payment object. /// </summary> /// <param name="correlationId"></param> /// <param name="authorizationCode"></param> private Payment CreateFuturePayment(string correlationId, string authorizationCode, string redirectUrl) { // ###Payer // A resource representing a Payer that funds a payment // Payment Method // as `paypal` Payer payer = new Payer() { payment_method = "paypal" }; // ###Details // Let's you specify details of a payment amount. Details details = new Details() { tax = "15", shipping = "10", subtotal = "75" }; // ###Amount // Let's you specify a payment amount. var amount = new Amount() { currency = "USD", total = "100", // Total must be equal to sum of shipping, tax and subtotal. details = details }; // # Redirect URLS var redirUrls = new RedirectUrls() { cancel_url = redirectUrl, return_url = redirectUrl }; // ###Items // Items within a transaction. var itemList = new ItemList() { items = new List <Item>() }; itemList.items.Add(new Item() { name = "Item Name", currency = "USD", price = "15", quantity = "5", sku = "sku" }); // ###Transaction // A transaction defines the contract of a // payment - what is the payment for and who // is fulfilling it. var transactionList = new List <Transaction>(); // The Payment creation API requires a list of // Transaction; add the created `Transaction` // to a List transactionList.Add(new Transaction() { description = "Transaction description.", amount = amount, item_list = itemList }); var authorizationCodeParameters = new CreateFromAuthorizationCodeParameters(); authorizationCodeParameters.setClientId(Configuration.ClientId); authorizationCodeParameters.setClientSecret(Configuration.ClientSecret); authorizationCodeParameters.SetCode(authorizationCode); var apiContext = new APIContext(); apiContext.Config = Configuration.GetConfig(); var tokenInfo = Tokeninfo.CreateFromAuthorizationCodeForFuturePayments(apiContext, authorizationCodeParameters); var accessToken = string.Format("{0} {1}", tokenInfo.token_type, tokenInfo.access_token); // ###Payment // A FuturePayment Resource this.futurePayment = new FuturePayment() { intent = "authorize", payer = payer, transactions = transactionList, redirect_urls = redirUrls }; return(this.futurePayment.Create(accessToken, correlationId)); }