public Task<PaymentResult> Buy (PayPalItem item, Deveel.Math.BigDecimal tax) { if (buyTcs != null) { buyTcs.TrySetCanceled (); buyTcs.TrySetResult (null); } buyTcs = new TaskCompletionSource<PaymentResult> (); Manager.BuyItem (item, tax, SendOnPayPalPaymentDidCancel, SendOnPayPalPaymentCompleted, SendOnPayPalPaymentError); return buyTcs.Task; }
public Task<PaymentResult> Buy (PayPalItem[] items, Decimal shipping, Decimal tax, ShippingAddress address = null) { if (buyTcs != null) { buyTcs.TrySetCanceled (); buyTcs.TrySetResult (null); } buyTcs = new TaskCompletionSource<PaymentResult> (); Manager.BuyItems (items, shipping, tax, SendOnPayPalPaymentDidCancel, SendOnPayPalPaymentCompleted, SendOnPayPalPaymentError, address); return buyTcs.Task; }
public void BuyItem(PayPalForms.PayPalItem item, Decimal xftax, PayPalForms.PaymentIntent xfintent, Action onCancelled, Action <string> onSuccess, Action <string> onError, PayPalForms.ShippingAddress address) { _onCancelled = onCancelled; _onSuccess = onSuccess; _onError = onError; BigDecimal amount = new BigDecimal(RoundNumber((double)item.Price)).Add(new BigDecimal(RoundNumber((double)xftax))); string paymentIntent; switch (xfintent) { case PayPalForms.PaymentIntent.Authorize: paymentIntent = PayPalPayment.PaymentIntentAuthorize; break; case PayPalForms.PaymentIntent.Order: paymentIntent = PayPalPayment.PaymentIntentOrder; break; default: case PayPalForms.PaymentIntent.Sale: paymentIntent = PayPalPayment.PaymentIntentSale; break; } PayPalPayment payment = new PayPalPayment(amount, item.Currency, item.Name, paymentIntent); if (address != null) { ShippingAddress shippingAddress = new ShippingAddress() .RecipientName(address.RecipientName) .Line1(address.Line1) .Line2(address.Line2) .City(address.City) .State(address.State) .PostalCode(address.PostalCode) .CountryCode(address.CountryCode); payment = payment.InvokeProvidedShippingAddress(shippingAddress); } switch (_formsConfig.ShippingAddressOption) { case Abstractions.ShippingAddressOption.Both: case Abstractions.ShippingAddressOption.PayPal: payment = payment.EnablePayPalShippingAddressesRetrieval(true); break; default: payment = payment.EnablePayPalShippingAddressesRetrieval(false); break; } Intent intent = new Intent(Context, typeof(PaymentActivity)); intent.PutExtra(PayPalService.ExtraPaypalConfiguration, _nativeConfig); intent.PutExtra(PaymentActivity.ExtraPayment, payment); (Context as Activity).StartActivityForResult(intent, REQUEST_CODE_PAYMENT); }