/** * Convert a Model_Brand_Refund object to an array of parameteres, suited for Omnipay * @param Model_Brand_Refund $refund * @return array */ public function convert_refund(Model_Brand_Refund $refund) { $payment = $refund->payment_insist(); $currency = $refund->display_currency() ?: $refund->currency(); $params = array('transactionReference' => $payment->payment_id, 'reason' => $refund->reason, 'currency' => $currency); $is_full_refund = $refund->amount()->is(Jam_Price::EQUAL_TO, $refund->purchase_insist()->total_price(array('is_payable' => TRUE))); if (count($refund->items) and !$is_full_refund) { $params['items'] = array_map(function ($item) use($currency) { return array("name" => $item->purchase_item->id(), "price" => $item->amount()->as_string($currency)); }, $refund->items->as_array()); } $params['amount'] = $refund->amount()->as_string($currency); return $params; }
public static function add_purchase_item_refund(Model_Payment $payment, Jam_Event_Data $data, Model_Brand_Refund $refund) { if ($refund->transaction_status === Model_Brand_Refund::TRANSACTION_REFUNDED) { $refund->add_purchase_item_refund(); } }