/** * Gets payment for current operation * * @return mixed RApi object with information on success, boolean false on failure. */ public function getPayment() { if (!empty($this->paymentObject)) { return $this->paymentObject; } if (!empty($this->paymentId)) { $this->paymentObject = RApiPaymentHelper::getPaymentById($this->paymentId); } if (empty($this->paymentObject) && (!empty($this->orderId) && !empty($this->extensionName))) { $this->paymentObject = RApiPaymentHelper::getPaymentByExtensionId($this->extensionName, $this->orderId); } // Set up default variables if not set if ($this->paymentObject) { if (empty($this->paymentName)) { $this->paymentName = $this->paymentObject->payment_name; } $this->extensionName = $this->paymentObject->extension_name; $this->ownerName = $this->paymentObject->owner_name; $this->orderId = $this->paymentObject->order_id; $this->paymentId = $this->paymentObject->id; } return $this->paymentObject; }
/** * Returns details about the payment * * @param string $extensionName Extension name (ex: com_content) * @param array $orderData Extension Order data * * @return object */ protected function getPaymentByExtensionOrderData($extensionName, $orderData) { $orderId = empty($orderData['order_id']) ? $orderData['id'] : $orderData['order_id']; $payment = RApiPaymentHelper::getPaymentByExtensionId($extensionName, $orderId); $restrictedData = array('id', 'extension_name', 'payment_name', 'sandbox', 'created_date', 'modified_date', 'confirmed_date', 'transaction_id', 'amount_total', 'amount_paid', 'coupon_code', 'customer_note', 'status'); if (!$payment) { $ownerName = !empty($orderData['owner_name']) ? $orderData['owner_name'] : ''; $createData = array(); foreach ($orderData as $key => $value) { if (!in_array($key, $restrictedData)) { $createData[$key] = $orderData[$key]; } } // Create new payment based on order data $this->createPayment($extensionName, $ownerName, $createData); $payment = RApiPaymentHelper::getPaymentByExtensionId($extensionName, $orderId); } else { // We will update payment with provided data if it is different than originally provided $ownerName = !empty($orderData['owner_name']) ? $orderData['owner_name'] : $payment->owner_name; $updateData = JArrayHelper::fromObject($payment); foreach ($orderData as $key => $value) { if (!in_array($key, $restrictedData)) { $updateData[$key] = $orderData[$key]; } } // Create new payment based on order data $this->createPayment($extensionName, $ownerName, $updateData); } return $payment; }