* @copyright Mollie B.V. * @link https://www.mollie.com * * @method Mollie_API_Object_Payment[]|Mollie_API_Object_List all($offset = 0, $limit = 0) * @method Mollie_API_Object_Payment create(array $data) */ class Mollie_API_Resource_Payments extends Mollie_API_Resource_Base { /** * @var string */ const RESOURCE_ID_PREFIX = 'tr_'; /** * @return Mollie_API_Object_Payment */ protected function getResourceObject () { return new Mollie_API_Object_Payment; } /** * Retrieve a single payment from Mollie. * * Will throw a Mollie_API_Exception if the payment id is invalid or the resource cannot be found. * * @param string $payment_id * * @throws Mollie_API_Exception * @return Mollie_API_Object_Payment */ public function get($payment_id) { if (empty($payment_id) || strpos($payment_id, self::RESOURCE_ID_PREFIX) !== 0) { throw new Mollie_API_Exception("Invalid payment ID: '{$payment_id}'. A payment ID should start with '" . self::RESOURCE_ID_PREFIX . "'."); } return parent::get($payment_id); } /** * @param Mollie_API_Object_Payment $payment * @param float|NULL $amount Amount to refund, or NULL to refund full amount. * @return Mollie_API_Object_Payment_Refund */ public function refund (Mollie_API_Object_Payment $payment, $amount = NULL) { $resource = "{$this->getResourceName()}/" . urlencode($payment->id) . "/refunds"; $body = NULL; if ($amount) { $body = json_encode( array("amount" => $amount) ); } $result = $this->performApiCall(self::REST_CREATE, $resource, $body); /* * Update the payment with the new properties that we got from the refund. */ if (!empty($result->payment)) { foreach ($result->payment as $payment_key => $payment_value) { $payment->{$payment_key} = $payment_value; } } return $this->copy($result, new Mollie_API_Object_Payment_Refund); } }