74 lines
2.4 KiB
PHP
Executable File
74 lines
2.4 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* PayPal REST Refund Request
|
|
*/
|
|
|
|
namespace Omnipay\PayPal\Message;
|
|
|
|
/**
|
|
* PayPal REST Refund Request
|
|
*
|
|
* To get details about completed payments (sale transaction) created by a payment request
|
|
* or to refund a direct sale transaction, PayPal provides the /sale resource and related
|
|
* sub-resources.
|
|
*
|
|
* TODO: There might be a problem here, in that refunding a capture requires a different URL.
|
|
*
|
|
* TODO: Yes I know. The gateway doesn't yet support looking up or refunding captured
|
|
* transactions. That will require adding additional message classes because the URLs
|
|
* are all different.
|
|
*
|
|
* A non-zero amount can be provided for the refund using setAmount(), if this is not
|
|
* provided (or is zero) then a full refund is made.
|
|
*
|
|
* Example -- note this example assumes that the purchase has been successful
|
|
* and that the transaction ID returned from the purchase is held in $sale_id.
|
|
* See RestPurchaseRequest for the first part of this example transaction:
|
|
*
|
|
* <code>
|
|
* $transaction = $gateway->refund(array(
|
|
* 'amount' => '10.00',
|
|
* 'currency' => 'AUD',
|
|
* ));
|
|
* $transaction->setTransactionReference($sale_id);
|
|
* $response = $transaction->send();
|
|
* if ($response->isSuccessful()) {
|
|
* echo "Refund transaction was successful!\n";
|
|
* $data = $response->getData();
|
|
* echo "Gateway refund response data == " . print_r($data, true) . "\n";
|
|
* }
|
|
* </code>
|
|
*
|
|
* ### Known Issues
|
|
*
|
|
* PayPal subscription payments cannot be refunded. PayPal is working on this functionality
|
|
* for their future API release. In order to refund a PayPal subscription payment, you will
|
|
* need to use the PayPal web interface to refund it manually.
|
|
*
|
|
* @see RestPurchaseRequest
|
|
*/
|
|
class RestRefundRequest extends AbstractRestRequest
|
|
{
|
|
public function getData()
|
|
{
|
|
$this->validate('transactionReference');
|
|
|
|
if ($this->getAmount() > 0) {
|
|
return array(
|
|
'amount' => array(
|
|
'currency' => $this->getCurrency(),
|
|
'total' => $this->getAmount(),
|
|
),
|
|
'description' => $this->getDescription(),
|
|
);
|
|
} else {
|
|
return new \stdClass();
|
|
}
|
|
}
|
|
|
|
public function getEndpoint()
|
|
{
|
|
return parent::getEndpoint() . '/payments/sale/' . $this->getTransactionReference() . '/refund';
|
|
}
|
|
}
|