/** * Build the NVP data array for submitting the current checkout to PayPal as an Authorization request * * @param SI_Checkouts $checkout * @return array */ private function nvp_data(SI_Checkouts $checkout, SI_Invoice $invoice) { $client = $invoice->get_client(); $user = si_who_is_paying($invoice); // User email or none $user_email = $user ? $user->user_email : ''; $nvpData['USER'] = self::$api_username; $nvpData['PWD'] = self::$api_password; $nvpData['SIGNATURE'] = self::$api_signature; $nvpData['VERSION'] = '56.0'; $nvpData['METHOD'] = 'DoDirectPayment'; $nvpData['PAYMENTACTION'] = 'Authorization'; $nvpData['IPADDRESS'] = $_SERVER['REMOTE_ADDR']; $nvpData['CREDITCARDTYPE'] = self::get_card_type($this->cc_cache['cc_number']); $nvpData['ACCT'] = $this->cc_cache['cc_number']; $nvpData['EXPDATE'] = self::expiration_date($this->cc_cache['cc_expiration_month'], $this->cc_cache['cc_expiration_year']); $nvpData['CVV2'] = $this->cc_cache['cc_cvv']; $nvpData['FIRSTNAME'] = $checkout->cache['billing']['first_name']; $nvpData['LASTNAME'] = $checkout->cache['billing']['last_name']; $nvpData['EMAIL'] = $user->user_email; $nvpData['STREET'] = $checkout->cache['billing']['street']; $nvpData['CITY'] = $checkout->cache['billing']['city']; $nvpData['STATE'] = $checkout->cache['billing']['zone']; $nvpData['COUNTRYCODE'] = self::country_code($checkout->cache['billing']['country']); $nvpData['ZIP'] = $checkout->cache['billing']['postal_code']; $payment_amount = si_has_invoice_deposit($invoice->get_id()) ? $invoice->get_deposit() : $invoice->get_balance(); $nvpData['AMT'] = si_get_number_format($payment_amount); $nvpData['CURRENCYCODE'] = $this->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['ITEMAMT'] = si_get_number_format($item_amount); //$nvpData['SHIPPINGAMT'] = si_get_number_format( $purchase->get_shipping_total( $this->get_payment_method() ) ); $tax_amount = si_has_invoice_deposit($invoice->get_id()) ? 0 : $invoice->get_tax_total() + $invoice->get_tax2_total(); $nvpData['TAXAMT'] = si_get_number_format($tax_amount); $nvpData['INVNUM'] = $invoice->get_id() . '#' . time(); $nvpData['BUTTONSOURCE'] = self::PLUGIN_NAME; $nvpData += self::payment_request_line_items($invoice); // Recurring billing agreement if (si_is_invoice_recurring($invoice)) { $nvpData['L_BILLINGTYPE0'] = 'RecurringPayments'; $nvpData['L_BILLINGAGREEMENTDESCRIPTION0'] = $this->recurring_desc($invoice); } $nvpData = apply_filters('si_paypal_wpp_nvp_data', $nvpData, $checkout, $i, $invoice); return $nvpData; }
public static function sender_submission_fields(SI_Invoice $invoice) { $fields = array(); $from_name = SI_Notifications_Control::from_name(array('invoice_id' => $invoice->get_id())); $from_email = SI_Notifications_Control::from_email(array('invoice_id' => $invoice->get_id())); $fields['send_as'] = array('weight' => 1, 'label' => self::__('Sender'), 'type' => 'text', 'placeholder' => '', 'attributes' => array('readonly' => 'readonly'), 'default' => $from_name . ' <' . $from_email . '>'); // options for recipients $client = $invoice->get_client(); $recipient_options = '<div class="form-group"><div class="input_wrap">'; // client users if (is_a($client, 'SI_Client')) { $client_users = $client->get_associated_users(); foreach ($client_users as $user_id) { if (!is_wp_error($user_id)) { $recipient_options .= sprintf('<label class="clearfix"><input type="checkbox" name="sa_metabox_recipients[]" value="%1$s"> %2$s</label>', $user_id, esc_attr(SI_Notifications::get_user_email($user_id))); } } } $recipient_options .= sprintf('<label class="clearfix"><input type="checkbox" name="sa_metabox_custom_recipient_check" disabled="disabled"><input type="text" name="sa_metabox_custom_recipient" placeholder="%1$s"><span class="helptip" title="%2$s"></span></label>', self::__('*****@*****.**'), self::__('Entering an email will prevent some notification shortcodes from working since there is no client.')); // Send to me. $recipient_options .= sprintf('<label class="clearfix"><input type="checkbox" name="sa_metabox_recipients[]" value="%1$s"> %2$s</label>', get_current_user_id(), si__('Send me a copy')); $recipient_options .= '</div></div>'; $fields['recipients'] = array('weight' => 5, 'label' => sprintf('%s <span class="helptip" title="%s"></span>', si__('Recipients'), si__('A notification will be sent if recipients are selected and this invoice is saved.')), 'type' => 'bypass', 'output' => $recipient_options); $fields['sender_note'] = array('weight' => 10, 'label' => self::__('Note'), 'type' => 'textarea', 'default' => $invoice->get_sender_note(), 'description' => si__('This note will be added to the Invoice Notification via the [admin_note] shortcode.')); $fields['doc_id'] = array('type' => 'hidden', 'value' => $invoice->get_id(), 'weight' => 10000); $fields['notification_nonce'] = array('type' => 'hidden', 'value' => wp_create_nonce(SI_Controller::NONCE), 'weight' => 10001); $fields = apply_filters('si_sender_submission_fields', $fields); uasort($fields, array(__CLASS__, 'sort_by_weight')); return $fields; }
/** * 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; }