/** * Process the donation with PayPal. * * @param int $donation_id * @param Charitable_Donation_Processor $processor * @return void * @access public * @static * @since 1.0.0 */ public static function process_donation($donation_id, $processor) { $gateway = new Charitable_Gateway_Paypal(); $user_data = $processor->get_donation_data_value('user'); $donation = new Charitable_Donation($donation_id); $transaction_mode = $gateway->get_value('transaction_mode'); $paypal_args = apply_filters('charitable_paypal_redirect_args', array('business' => $gateway->get_value('paypal_email'), 'email' => $user_data['email'], 'first_name' => $user_data['first_name'], 'last_name' => $user_data['last_name'], 'address1' => $user_data['address'], 'address2' => $user_data['address_2'], 'city' => $user_data['city'], 'country' => $user_data['country'], 'zip' => $user_data['postcode'], 'invoice' => $processor->get_donation_data_value('donation_key'), 'amount' => $donation->get_total_donation_amount(), 'item_name' => html_entity_decode($donation->get_campaigns_donated_to(), ENT_COMPAT, 'UTF-8'), 'no_shipping' => '1', 'shipping' => '0', 'no_note' => '1', 'currency_code' => charitable_get_currency(), 'charset' => get_bloginfo('charset'), 'custom' => $donation_id, 'rm' => '2', 'return' => charitable_get_permalink('donation_receipt_page', array('donation_id' => $donation_id)), 'cancel_return' => home_url(), 'notify_url' => $processor->get_ipn_url(self::ID), 'cbt' => get_bloginfo('name'), 'bn' => 'Charitable_SP', 'cmd' => $transaction_mode == 'donations' ? '_donations' : '_xclick'), $donation_id, $processor); /** * Set up the PayPal redirect URL */ $paypal_redirect = trailingslashit($gateway->get_redirect_url()) . '?'; $paypal_redirect .= http_build_query($paypal_args); $paypal_redirect = str_replace('&', '&', $paypal_redirect); /** * Redirect to PayPal */ wp_redirect($paypal_redirect); exit; }
/** * Add donation_receipt_optout to the list of meta fields to be saved. * * @param mixed[] $meta * @param int $donation_id * @param Charitable_Donation_Processor $processor * @return mixed[] */ function ed_save_donation_receipt_opt_out_meta_field($meta, $donation_id, Charitable_Donation_Processor $processor) { $meta['donation_receipt_optout'] = $processor->get_donation_data_value('donation_receipt_optout'); return $meta; }