A refund transaction.
Inheritance: extends PayPal\Common\PayPalModel
 /**
  * @depends testSerializationDeserialization
  * @param RefundRequest $obj
  */
 public function testGetters($obj)
 {
     $this->assertEquals($obj->getAmount(), AmountTest::getObject());
     $this->assertEquals($obj->getDescription(), "TestSample");
     $this->assertEquals($obj->getRefundSource(), "TestSample");
     $this->assertEquals($obj->getReason(), "TestSample");
     $this->assertEquals($obj->getInvoiceNumber(), "TestSample");
     $this->assertEquals($obj->getRefundAdvice(), true);
 }
<?php

// # Refund Capture Sample
// This sample code demonstrates how you can
// process a refund on a Captured transaction.
// API used: /v1/payments/capture/{<captureID>}/refund
/** @var Capture $capture */
$capture = (require 'AuthorizationCapture.php');
use PayPal\Api\Capture;
use PayPal\Api\Refund;
use PayPal\Api\RefundRequest;
// ### Refund
// Create a refund object indicating
// refund amount and call the refund method
$refundRequest = new RefundRequest();
$refundRequest->setAmount($amt);
try {
    // Create a new apiContext object so we send a new
    // PayPal-Request-Id (idempotency) header for this resource
    $apiContext = getApiContext($clientId, $clientSecret);
    $captureRefund = $capture->refundCapturedPayment($refundRequest, $apiContext);
} catch (Exception $ex) {
    // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
    ResultPrinter::printError("Refund Capture", "Capture", null, $refundRequest, $ex);
    exit(1);
}
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
ResultPrinter::printResult("Refund Capture", "Capture", $captureRefund->getId(), $refundRequest, $captureRefund);
// API used: /v1/payments/sale/{sale-id}/refund
/** @var Sale $sale */
$sale = (require 'GetSale.php');
$saleId = $sale->getId();
use PayPal\Api\Amount;
use PayPal\Api\Refund;
use PayPal\Api\RefundRequest;
use PayPal\Api\Sale;
// ### Refund amount
// Includes both the refunded amount (to Payer)
// and refunded fee (to Payee). Use the $amt->details
// field to mention fees refund details.
$amt = new Amount();
$amt->setCurrency('USD')->setTotal(0.01);
// ### Refund object
$refundRequest = new RefundRequest();
$refundRequest->setAmount($amt);
// ###Sale
// A sale transaction.
// Create a Sale object with the
// given sale transaction id.
$sale = new Sale();
$sale->setId($saleId);
try {
    // Create a new apiContext object so we send a new
    // PayPal-Request-Id (idempotency) header for this resource
    $apiContext = getApiContext($clientId, $clientSecret);
    // Refund the sale
    // (See bootstrap.php for more on `ApiContext`)
    $refundedSale = $sale->refundSale($refundRequest, $apiContext);
} catch (Exception $ex) {