public static function createRefund() { $refund = new Refund(); $refund->setAmount(AmountTest::createAmount()); $refund->setCapture_id(self::$captureId); $refund->setCreate_time(self::$createTime); $refund->setDescription(self::$description); $refund->setId(self::$id); $refund->setLinks(array(LinkTest::createLink())); $refund->setParent_payment(self::$parentPayment); return $refund; }
function refund_payment($oID, $total = '', $comment = '') { global $order; $orders_query = xtc_db_query("SELECT p.*,\n o.customers_address_format_id\n FROM " . TABLE_PAYPAL_PAYMENT . " p\n JOIN " . TABLE_ORDERS . " o\n ON p.orders_id = o.orders_id\n WHERE p.orders_id = '" . (int) $oID . "'"); if (xtc_db_num_rows($orders_query) > 0) { $orders = xtc_db_fetch_array($orders_query); // auth $apiContext = $this->apiContext(); try { // Get the payment Object by passing paymentId $payment = Payment::get($orders['payment_id'], $apiContext); $valid = true; } catch (Exception $ex) { $this->LoggingManager->log(print_r($ex, true), 'DEBUG'); $valid = false; } if ($valid === true) { // transaction $transactions = $payment->getTransactions(); $transaction = $transactions[0]; $relatedResources = $transaction->getRelatedResources(); for ($i = 0, $n = count($relatedResources); $i < $n; $i++) { $relatedResource = $relatedResources[$i]; if ($relatedResource->__isset('sale')) { $resource = $relatedResource->getSale($relatedResource); break; } if ($relatedResource->__isset('capture')) { $resource = $relatedResource->getCapture($relatedResource); break; } if ($relatedResource->__isset('order')) { continue; } if ($relatedResource->__isset('authorization')) { continue; } if ($relatedResource->__isset('refund')) { continue; } } if (is_object($resource)) { // get amount $amount = $resource->getAmount(); $amount->__unset('details'); if ($total != '' && $total > 0) { $amount->setTotal($total); } // set refund $refund = new Refund(); $refund->setAmount($amount); if ($comment != '') { $refund->setDescription($this->encode_utf8($comment)); } try { $resource->refund($refund, $apiContext); $success = true; } catch (Exception $ex) { $this->LoggingManager->log(print_r($ex, true), 'DEBUG'); if ($ex instanceof \PayPal\Exception\PayPalConnectionException) { $error_json = $ex->getData(); $error = json_decode($error_json, true); $_SESSION['pp_error'] = $error['message']; } } } } } }