public static function get_recurring_payment(SI_Invoice $invoice) { $payment_ids = $invoice->get_payments(); if (empty($payment_ids)) { return 0; } $r_payment_id = 0; foreach ($payment_ids as $pid) { if (in_array(get_post_status($pid), array(SI_Payment::STATUS_RECURRING, SI_Payment::STATUS_CANCELLED))) { $r_payment_id = $pid; } } if (!$r_payment_id) { return false; } $payment = SI_Payment::get_instance($r_payment_id); return $payment; }
public static function invoice_data(SI_Invoice $invoice) { $invoice_data = array('title' => $invoice->get_title(), 'id' => $invoice->get_id(), 'invoice_id' => $invoice->get_invoice_id(), 'status' => $invoice->get_status(), 'balance' => $invoice->get_balance(), 'deposit' => $invoice->get_deposit(), 'issue_date' => $invoice->get_issue_date(), 'estimate_id' => $invoice->get_estimate_id(), 'due_date' => $invoice->get_due_date(), 'expiration_date' => $invoice->get_expiration_date(), 'client_id' => $invoice->get_client_id(), 'client_data' => array(), 'po_number' => $invoice->get_po_number(), 'discount' => $invoice->get_discount(), 'tax' => $invoice->get_tax(), 'tax2' => $invoice->get_tax2(), 'currency' => $invoice->get_currency(), 'subtotal' => $invoice->get_subtotal(), 'calculated_total' => $invoice->get_calculated_total(), 'project_id' => $invoice->get_project_id(), 'terms' => $invoice->get_terms(), 'notes' => $invoice->get_notes(), 'line_items' => $invoice->get_line_items(), 'user_id' => $invoice->get_user_id(), 'payment_ids' => $invoice->get_payments()); if ($invoice->get_client_id()) { $client = SI_Client::get_instance($invoice->get_client_id()); if (is_a($client, 'SI_Client')) { $invoice_data['client_data'] = self::client_data($client); } } return $invoice_data; }
/** * Build the NVP data array for submitting the current checkout to PayPal as an Authorization request * * @param SI_Checkouts $checkout * @param SI_Invoice $invoice * @return array */ private function process_nvp_data(SI_Checkouts $checkout, SI_Invoice $invoice) { $client = $invoice->get_client(); $payments = $invoice->get_payments(); $user = si_who_is_paying($invoice); // User email or none $user_email = $user ? $user->user_email : ''; $nvpData = array(); $nvpData['USER'] = self::$api_username; $nvpData['PWD'] = self::$api_password; $nvpData['SIGNATURE'] = self::$api_signature; $nvpData['VERSION'] = self::$version; $nvpData['TOKEN'] = self::get_token(); $nvpData['PAYERID'] = self::get_payerid(); $nvpData['METHOD'] = 'DoExpressCheckoutPayment'; $nvpData['PAYMENTREQUEST_0_PAYMENTACTION'] = 'Authorization'; $nvpData['IPADDRESS'] = $_SERVER['REMOTE_ADDR']; $payment_amount = si_has_invoice_deposit($invoice->get_id()) ? $invoice->get_deposit() : $invoice->get_balance(); $nvpData['PAYMENTREQUEST_0_AMT'] = si_get_number_format($payment_amount); $nvpData['PAYMENTREQUEST_0_CURRENCYCODE'] = self::get_currency_code($invoice->get_id()); $item_amount = si_has_invoice_deposit($invoice->get_id()) ? $invoice->get_deposit() : $invoice->get_balance() - ($invoice->get_tax_total() + $invoice->get_tax2_total()); $nvpData['PAYMENTREQUEST_0_ITEMAMT'] = si_get_number_format($item_amount); $nvpData['PAYMENTREQUEST_0_INVNUM'] = $invoice->get_id() . '#' . count($payments); // $nvpData['PAYMENTREQUEST_0_SHIPPINGAMT'] = si_get_number_format( $invoice->get_shipping_total() ); // FUTURE $tax_amount = si_has_invoice_deposit($invoice->get_id()) ? 0 : $invoice->get_tax_total() + $invoice->get_tax2_total(); $nvpData['PAYMENTREQUEST_0_TAXAMT'] = si_get_number_format($tax_amount); $nvpData['BUTTONSOURCE'] = self::PLUGIN_NAME; $nvpData += self::payment_request_line_items($invoice); $nvpData = apply_filters('si_paypal_ec_nvp_data', $nvpData, $checkout, $i, $invoice); return $nvpData; }