Example #1
0
 /**
  * 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;
 }
Example #2
0
 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();
     }
 }