See PayPal Developer documentation for more information.
public void RefundIdTest() { try { var apiContext = TestingUtil.GetApiContext(); this.RecordConnectionDetails(); var pay = PaymentTest.CreatePaymentAuthorization(apiContext); this.RecordConnectionDetails(); Assert.IsNotNull(pay); Assert.IsNotNull(pay.transactions); Assert.IsTrue(pay.transactions.Count > 0); var transaction = pay.transactions[0]; Assert.IsNotNull(transaction.related_resources); Assert.IsTrue(transaction.related_resources.Count > 0); var resource = transaction.related_resources[0]; Assert.IsNotNull(resource.authorization); var authorization = Authorization.Get(apiContext, resource.authorization.id); this.RecordConnectionDetails(); var cap = new Capture { amount = new Amount { total = "1", currency = "USD" } }; var response = authorization.Capture(apiContext, cap); this.RecordConnectionDetails(); var fund = new Refund { amount = new Amount { total = "1", currency = "USD" } }; apiContext.ResetRequestId(); var responseRefund = response.Refund(apiContext, fund); this.RecordConnectionDetails(); var retrievedRefund = Refund.Get(apiContext, responseRefund.id); this.RecordConnectionDetails(); Assert.AreEqual(responseRefund.id, retrievedRefund.id); } catch(ConnectionException) { this.RecordConnectionDetails(false); throw; } }
public void AuthorizationCaptureTest() { try { var apiContext = TestingUtil.GetApiContext(); this.RecordConnectionDetails(); var pay = PaymentTest.CreatePaymentAuthorization(apiContext); this.RecordConnectionDetails(); Assert.IsNotNull(pay); Assert.IsNotNull(pay.transactions); Assert.IsTrue(pay.transactions.Count > 0); var transaction = pay.transactions[0]; Assert.IsNotNull(transaction.related_resources); Assert.IsTrue(transaction.related_resources.Count > 0); var resource = transaction.related_resources[0]; Assert.IsNotNull(resource.authorization); var authorize = Authorization.Get(apiContext, resource.authorization.id); this.RecordConnectionDetails(); var cap = new Capture { amount = new Amount { total = "1", currency = "USD" } }; var response = authorize.Capture(apiContext, cap); this.RecordConnectionDetails(); Assert.AreEqual("completed", response.state); } catch(ConnectionException) { this.RecordConnectionDetails(false); throw; } }
/// <summary> /// Captures a payment for an order, by ID. To use this call, the original payment call must specify an intent of `order`. In the JSON request body, include the payment amount and indicate whether this capture is the final capture for the authorization. /// </summary> /// <param name="apiContext">APIContext used for the API call.</param> /// <param name="capture">Capture</param> /// <returns>Capture</returns> public Capture Capture(APIContext apiContext, Capture capture) { return Order.Capture(apiContext, this.id, capture); }
/// <summary> /// Creates (and processes) a new Capture Transaction added as a related resource. /// </summary> /// <param name="apiContext">APIContext used for the API call.</param> /// <param name="orderId">ID of the order to capture.</param> /// <param name="capture">Capture</param> /// <returns>Capture</returns> public static Capture Capture(APIContext apiContext, string orderId, Capture capture) { // Validate the arguments to be used in the request ArgumentValidator.ValidateAndSetupAPIContext(apiContext); ArgumentValidator.Validate(orderId, "orderId"); ArgumentValidator.Validate(capture, "capture"); // Configure and send the request var pattern = "v1/payments/orders/{0}/capture"; var resourcePath = SDKUtil.FormatURIPath(pattern, new object[] { orderId }); return PayPalResource.ConfigureAndExecute<Capture>(apiContext, HttpMethod.POST, resourcePath, capture.ConvertToJson()); }
/// <summary> /// Captures an order. For a partial capture, you can provide a lower /// amount than the total payment. Additionally, you can explicitly /// indicate a final capture (complete the transaction and prevent /// future captures) by setting the is_final_capture value to true. /// /// More Information: /// https://developer.paypal.com/webapps/developer/docs/integration/direct/create-process-order/#capture-an-order /// </summary> private void CaptureOrder(APIContext apiContext) { var capture = new Capture(); capture.amount = this.amount; capture.is_final_capture = true; this.order.Capture(apiContext, capture); }
public static Capture CapturePayment(string paymentId) { var apiContext = PayPalConfiguration.GetAPIContext(); var payment = Payment.Get(apiContext, paymentId); var auth = payment.transactions[0].related_resources[0].authorization; // Specify an amount to capture. By setting 'is_final_capture' to true, all remaining funds held by the authorization will be released from the funding instrument. var capture = new Capture() { amount = new Amount() { currency = "USD", total = "4.54" }, is_final_capture = true }; // Capture an authorized payment by POSTing to // URI v1/payments/authorization/{authorization_id}/capture var responseCapture = auth.Capture(apiContext, capture); return responseCapture; }
/// <summary> /// Creates (and processes) a new Capture Transaction added as a related resource. /// </summary> /// <param name="apiContext">APIContext used for the API call.</param> /// <param name="capture">Capture</param> /// <returns>Capture</returns> public Capture Capture(APIContext apiContext, Capture capture) { return Authorization.Capture(apiContext, this.id, capture); }
protected override void RunSample() { // ### Api Context // Pass in a `APIContext` object to authenticate // the call and to send a unique request id // (that ensures idempotency). The SDK generates // a request id if you do not pass one explicitly. // See [Configuration.cs](/Source/Configuration.html) to know more about APIContext. var apiContext = Configuration.GetAPIContext(); // ###Payment // A Payment Resource; create one with its intent set to `sale`, `authorize`, or `order` var payment = new Payment() { intent = "authorize", // A resource representing a Payer that funds a payment. Use the List of `FundingInstrument` and the Payment Method as 'credit_card' payer = new Payer() { // The Payment creation API requires a list of // FundingInstrument; add the created `FundingInstrument` // to a List funding_instruments = new List<FundingInstrument>() { // A resource representing a Payeer's funding instrument. // Use a Payer ID (A unique identifier of the payer generated // and provided by the facilitator. This is required when // creating or using a tokenized funding instrument) // and the `CreditCardDetails` new FundingInstrument() { // A resource representing a credit card that can be used to fund a payment. credit_card = new CreditCard() { billing_address = new Address() { city = "Johnstown", country_code = "US", line1 = "52 N Main ST", postal_code = "43210", state = "OH" }, cvv2 = "874", expire_month = 11, expire_year = 2018, first_name = "Joe", last_name = "Shopper", number = "4877274905927862", type = "visa" } } }, payment_method = "credit_card" }, // The Payment creation API requires a list of transactions; add the created `Transaction` to a List transactions = new List<Transaction>() { // A transaction defines the contract of a payment - what is the payment for and who is fulfilling it. Transaction is created with a `Payee` and `Amount` types new Transaction() { // Let's you specify a payment amount. amount = new Amount() { currency = "USD", // Total must be equal to sum of shipping, tax and subtotal. total = "107.47", details = new Details() { shipping = "0.03", subtotal = "107.41", tax = "0.03" } }, description = "This is the payment transaction description." } } }; // ^ Ignore workflow code segment #region Track Workflow this.flow.AddNewRequest(title: "Create authorization for credit card payment", requestObject: payment); #endregion // Create a payment by posting to the APIService // using a valid APIContext var createdPayment = payment.Create(apiContext); // ^ Ignore workflow code segment #region Track Workflow this.flow.RecordResponse(createdPayment); #endregion // ###Authorization // Once the payment with intent set to `authorize` has been created, retrieve its authorization object. var authorization = createdPayment.transactions[0].related_resources[0].authorization; // Specify an amount to capture. By setting 'is_final_capture' to true, all remaining funds held by the authorization will be released from the funding instrument. var capture = new Capture() { amount = new Amount() { currency = "USD", total = "4.54" }, is_final_capture = true }; // ^ Ignore workflow code segment #region Track Workflow this.flow.AddNewRequest("Capture authorized payment", capture, string.Format("URI: v1/payments/authorization/{0}/capture", authorization.id)); #endregion // Capture an authorized payment by POSTing to // URI v1/payments/authorization/{authorization_id}/capture var responseCapture = authorization.Capture(apiContext, capture); // ^ Ignore workflow code segment #region Track Workflow this.flow.RecordResponse(responseCapture); #endregion // For more information, please visit [PayPal Developer REST API Reference](https://developer.paypal.com/docs/api/). }
/// <summary> /// Creates (and processes) a new Capture Transaction added as a related resource. /// </summary> /// <param name="apiContext">APIContext used for the API call.</param> /// <param name="capture">Capture</param> /// <returns>Capture</returns> public Capture Capture(APIContext apiContext, Capture capture) { return(Authorization.Capture(apiContext, this.id, capture)); }