public static function maybe_thankyou_page() { if (!self::is_gravityforms_supported()) { return; } if ($str = RGForms::get("gf_paypal_return")) { $str = base64_decode($str); parse_str($str, $query); if (wp_hash("ids=" . $query["ids"]) == $query["hash"]) { list($form_id, $lead_id) = explode("|", $query["ids"]); $form = RGFormsModel::get_form_meta($form_id); $lead = RGFormsModel::get_lead($lead_id); if (!class_exists("GFFormDisplay")) { require_once GFCommon::get_base_path() . "/form_display.php"; } $confirmation = GFFormDisplay::handle_confirmation($form, $lead, false); if (is_array($confirmation) && isset($confirmation["redirect"])) { header("Location: {$confirmation["redirect"]}"); exit; } GFFormDisplay::$submission[$form_id] = array("is_confirmation" => true, "confirmation_message" => $confirmation, "form" => $form, "lead" => $lead); } } }
public static function maybe_thankyou_page() { $instance = self::get_instance(); if (!$instance->is_gravityforms_supported()) { return; } if ($str = rgget('gf_paypal_return')) { $str = base64_decode($str); parse_str($str, $query); if (wp_hash('ids=' . $query['ids']) == $query['hash']) { list($form_id, $lead_id) = explode('|', $query['ids']); $form = GFAPI::get_form($form_id); $lead = GFAPI::get_entry($lead_id); if (!class_exists('GFFormDisplay')) { require_once GFCommon::get_base_path() . '/form_display.php'; } $confirmation = GFFormDisplay::handle_confirmation($form, $lead, false); if (is_array($confirmation) && isset($confirmation['redirect'])) { header("Location: {$confirmation['redirect']}"); exit; } GFFormDisplay::$submission[$form_id] = array('is_confirmation' => true, 'confirmation_message' => $confirmation, 'form' => $form, 'lead' => $lead); } } }
public static function confirm_express_checkout($form, $entry, $config, $billing_data) { $token = rgget("token"); //finalize PayPal transaction if ($config["meta"]["type"] != "product") { $fields = "METHOD=CreateRecurringPaymentsProfile&" . "TOKEN={$token}&" . "PROFILESTARTDATE=" . urlencode(gmdate(DATE_ATOM)) . "&" . "DESC=" . urlencode(self::get_recurring_description($config, $billing_data)) . "&" . "MAXFAILEDPAYMENTS=0&" . "BILLINGPERIOD=" . self::get_interval_unit($config["meta"]["billing_cycle_type"]) . "&" . "BILLINGFREQUENCY=" . $config["meta"]["billing_cycle_number"] . "&" . "AMT=" . $billing_data["amount"] . "&" . "CURRENCYCODE=" . GFCommon::get_currency() . "&" . "TOTALBILLINGCYCLES=" . $config["meta"]["recurring_times"] . "&"; $trial_data = self::get_trial_data($config, $billing_data); $trial_amount = 0; if ($trial_data) { $fields .= "TRIALBILLINGPERIOD=" . $trial_data["period"] . "&" . "TRIALBILLINGFREQUENCY=" . $trial_data["frequency"] . "&" . "TRIALTOTALBILLINGCYCLES=" . $trial_data["cycles"] . "&"; if ($trial_data["amount"] > 0) { $fields .= "TRIALAMT=" . $trial_data["amount"] . "&"; } } //setup fee $setup_fee_amount = self::get_setup_fee($config, $billing_data); if ($setup_fee_amount) { $fields .= "INITAMT=" . $setup_fee_amount; } $success = self::send_request($config, $fields, $response, $form, $entry); if (!$success || !in_array($response["PROFILESTATUS"], array("PendingProfile", "ActiveProfile"))) { //3a- if failure, display message and abort self::log_error("Error on CreateRecurringPaymentsProfile \n\nFields:\n{$fields} \n\nResponse:\n " . print_r($response, true)); return __("There was an error while confirming your payment. Your payment could not be processed. Please try again later.", "gravityformspaypalpro"); } else { //Everything OK. confirm subscription $subscriber_id = rgar($response, "PROFILEID"); $is_pending = $response["PROFILESTATUS"] == "PendingProfile"; $amount = $billing_data["amount"]; //marking entry as Active self::update_entry($entry, $form, $subscriber_id, true, $amount, $is_pending); //inserting initial signup transaction GFPayPalProData::insert_transaction($entry["id"], $config["id"], "signup", $subscriber_id, "", "", 0); //fulfilling order if profile was created successfully if (!$is_pending) { self::fulfill_order($entry, $subscriber_id, $setup_fee_amount, $amount); } $confirmation = GFFormDisplay::handle_confirmation($form, $entry); return $confirmation; } } else { //Confirm payment $fields = "METHOD=DoExpressCheckoutPayment&" . "PAYERID=" . rgget("PayerID") . "&" . "PAYMENTREQUEST_0_AMT=" . $billing_data["amount"] . "&" . "PAYMENTREQUEST_0_NOTIFYURL=" . urlencode(get_bloginfo("url") . "/?page=gf_paypalpro_ipn") . "&" . "TOKEN={$token}&"; $success = self::send_request($config, $fields, $response, $form, $entry); if (!$success || !in_array($response["PAYMENTINFO_0_PAYMENTSTATUS"], array("Pending", "Completed"))) { //GCCommon::log_error("paypalpro", "Error on DoExpressCheckoutPayment \n\nFields:\n{$fields} \n\nResponse:\n " . print_r($response, true)); return __("There was an error while confirming your payment. Your payment could not be processed. Please try again later.", "gravityformspaypalpro"); } else { $transaction_id = rgar($response, "PAYMENTINFO_0_TRANSACTIONID"); $is_pending = $response["PAYMENTINFO_0_PAYMENTSTATUS"] == "Pending"; $amount = $response["PAYMENTINFO_0_AMT"]; self::confirm_payment($entry, $form, "", $transaction_id, false, $amount, 0, $is_pending); $confirmation = GFFormDisplay::handle_confirmation($form, $entry); return $confirmation; } } }
/** * Handler for the gpoll_ajax AJAX request. * Returns the json encoded result for processing by gpoll.js. */ public function gpoll_ajax() { $output = array(); $form_id = rgpost('formId'); $form = RGFormsModel::get_form_meta($form_id); $preview_results = rgpost('previewResults'); $preview_results = $preview_results == '1' ? true : false; $has_voted = isset($_COOKIE['gpoll_form_' . $form_id]); $override = false; if (rgpost('override') == 1) { $show_results_link = rgpost('showResultsLink') == '1' ? true : false; $display_results = rgpost('displayResults') == '1' ? true : false; $confirmation = rgpost('confirmation') == '1' ? true : false; $percentages = rgpost('percentages') == '1' ? true : false; $counts = rgpost('counts') == '1' ? true : false; $cookie_duration = urldecode(rgpost('cookieDuration')); $style = rgpost('style'); $checksum = rgpost('checksum'); if ($checksum == $this->generate_checksum($display_results, $show_results_link, $cookie_duration, $confirmation, $percentages, $counts, $style)) { $override = true; } } if (false === $override) { $show_results_link = $this->get_form_setting($form, 'showResultsLink'); $display_results = $this->get_form_setting($form, 'displayResults'); $confirmation = true; $percentages = $this->get_form_setting($form, 'showPercentages'); $counts = $this->get_form_setting($form, 'showCounts'); $style = $this->get_form_setting($form, 'style'); $block_repeat_voters = $this->get_form_setting($form, 'blockRepeatVoters'); if ($block_repeat_voters) { $cookie_duration = $this->get_form_setting($form, 'cookie'); } else { $cookie_duration = ''; } } $can_vote = !$has_voted || empty($cookie_duration) && $has_voted; $output['canVote'] = $can_vote; if ($preview_results || false === $can_vote) { if ('' === $show_results_link) { $show_results_link = true; } if ($preview_results && $show_results_link || $display_results) { $results = $this->gpoll_get_results($form_id, '0', $style, $percentages, $counts); $results_summary = $results['summary']; $output['resultsUI'] = $results_summary; } else { if ($confirmation) { require_once GFCommon::get_base_path() . '/form_display.php'; $output['resultsUI'] = GFFormDisplay::handle_confirmation($form, null); } else { $output['resultsUI'] = ''; } } } else { $output['resultsUI'] = ''; } echo json_encode($output); die; }
/** * Get confirmations for lead based on payment status. * * @param $lead * * @param string $payment_status * * @return mixed */ public function get_confirmation($lead, $payment_status = Pronamic_WP_Pay_Statuses::OPEN) { $form = GFAPI::get_form($lead['form_id']); $feed = get_pronamic_gf_pay_feed_by_entry_id($lead['id']); $link = Pronamic_WP_Pay_Extensions_GravityForms_Links::transform_status($payment_status); if (!class_exists('GFFormDisplay')) { require_once GFCommon::get_base_path() . '/form_display.php'; } // Use only link confirmation if set if (isset($feed->links[$link]['confirmation_id']) && !empty($feed->links[$link]['confirmation_id'])) { $confirmation_id = $feed->links[$link]['confirmation_id']; if (isset($form['confirmations'][$confirmation_id])) { $form['confirmations'] = array_intersect_key($form['confirmations'], array($confirmation_id => true)); } } return GFFormDisplay::handle_confirmation($form, $lead, false); }