function espresso_process_wepay_callback($payment_data) { $payment_data['txn_details'] = serialize($_REQUEST); $payment_data['txn_type'] = 'WePay'; $wepay_settings = get_option('event_espresso_wepay_settings'); include_once 'Wepay.php'; if ($wepay_settings['use_sandbox']) { Espresso_Wepay::useStaging($wepay_settings['wepay_client_id'], $wepay_settings['wepay_client_secret']); } else { Espresso_Wepay::useProduction($wepay_settings['wepay_client_id'], $wepay_settings['wepay_client_secret']); } $wepay = new Espresso_Wepay($wepay_settings['access_token']); $raw = $wepay->request('checkout', array('checkout_id' => $_REQUEST['checkout_id'])); if (!empty($raw)) { $payment_data['txn_details'] = serialize(get_object_vars($raw)); $payment_data['txn_id'] = $raw->reference_id; $responsecode = $raw->state; if ($responsecode == 'cancelled' || $responsecode == 'failed') { $payment_data['payment_status'] = 'Incomplete'; $subject = 'Problem with your WePay payment'; $body = "WePay has informed us that your payment for " . $payment_data['event_link'] . " has moved to a status of " . $responsecode . ".\n"; $body .= "We have changed your payment status for the event to 'Incomplete'.\n"; $body .= "Please look into the cause in your account interface at wepay.com.\nThank You.\n"; wp_mail($payment_data['email'], $subject, $body); } return $payment_data; } }
function espresso_display_wepay($payment_data) { extract($payment_data); // Setup class if (empty($event_name)) { $event_name = "Event number #" . $event_id; } include_once 'Wepay.php'; echo '<!-- Event Espresso WePay Gateway Version ' . Espresso_Wepay::$version . '-->'; $wepay_settings = get_option('event_espresso_wepay_settings'); global $org_options; if ($wepay_settings['use_sandbox']) { Espresso_Wepay::useStaging($wepay_settings['wepay_client_id'], $wepay_settings['wepay_client_secret']); } else { Espresso_Wepay::useProduction($wepay_settings['wepay_client_id'], $wepay_settings['wepay_client_secret']); } $quantity = isset($quantity) && $quantity > 0 ? $quantity : espresso_count_attendees_for_registration($attendee_id); $fields['account_id'] = $wepay_settings['account_id']; $fields['short_description'] = stripslashes_deep($event_name); $fields['long_description'] = stripslashes_deep($event_name) . ' | ' . __('Name:', 'event_espresso') . ' ' . stripslashes_deep($fname . ' ' . $lname) . ' | ' . __('Registrant Email:', 'event_espresso') . ' ' . $attendee_email . ' | ' . __('Total Registrants:', 'event_espresso') . ' ' . $quantity; $fields['type'] = 'SERVICE'; $fields['reference_id'] = $attendee_id; $fields['amount'] = number_format($event_cost, 2, '.', ''); $fields['redirect_uri'] = add_query_arg(array('id' => $attendee_id, 'r_id' => $registration_id, 'event_id' => $event_id, 'attendee_action' => 'post_payment', 'form_action' => 'payment', 'type' => 'wepay'), get_permalink($org_options['return_url'])); $fields['callback_uri'] = add_query_arg(array('id' => $attendee_id, 'r_id' => $registration_id, 'event_id' => $event_id, 'attendee_action' => 'post_payment', 'form_action' => 'payment', 'type' => 'wepay'), get_permalink($org_options['notify_url'])); // $fields['redirect_uri'] = $home . '/?page_id=' . $org_options['return_url'] . '&id=' . $attendee_id . '&r_id=' . $registration_id . '&event_id=' . $event_id . '&attendee_action=post_payment&form_action=payment&type=wepay'; // $fields['callback_uri'] = $home . '/?page_id=' . $org_options['notify_url'] . '&id=' . $attendee_id . '&r_id=' . $registration_id . '&event_id=' . $event_id . '&attendee_action=post_payment&form_action=payment&type=wepay'; if ($wepay_settings['force_ssl_return']) { $fields['redirect_uri'] = str_replace("http://", "https://", $fields['redirect_uri']); $fields['callback_uri'] = str_replace("http://", "https://", $fields['callback_uri']); } if (empty($wepay_settings['access_token'])) { return; } try { $wepay = new Espresso_Wepay($wepay_settings['access_token']); $raw = $wepay->request('checkout/create', $fields); } catch (Exception $e) { printf(__("WePay seems to be misconfigured. Error: %s", "event_espresso"), $e->getMessage()); return; } if (empty($raw->checkout_uri)) { return; } $uri = $raw->checkout_uri; if ($wepay_settings['bypass_payment_page'] == 'Y') { $wepay->submitPayment($uri); //Enable auto redirect to payment site } else { $wepay->submitButton($uri, $wepay_settings['button_url'], 'wepay'); //Display payment button wp_deregister_script('jquery.validate.pack'); } if ($wepay_settings['use_sandbox']) { echo '<h3 style="color:#ff0000;" title="Payments will not be processed">' . __('Debug Mode Is Turned On', 'event_espresso') . '</h3>'; $wepay->dump_fields($fields); // for debugging, output a table of all the fields } }
function event_espresso_wepay_payment_settings() { global $espresso_premium, $active_gateways; if (!$espresso_premium) { return; } require_once dirname(__FILE__) . "/Wepay.php"; $wepay_settings = get_option('event_espresso_wepay_settings'); $need_to_reauthorize = false; if (!array_key_exists('access_token', $wepay_settings) || empty($wepay_settings['access_token'])) { $need_to_reauthorize = true; } if (isset($_POST['update_wepay'])) { if ($wepay_settings['wepay_client_id'] != $_POST['wepay_client_id'] || $wepay_settings['wepay_client_secret'] != $_POST['wepay_client_secret']) { $wepay_settings['wepay_client_id'] = $_POST['wepay_client_id']; $wepay_settings['wepay_client_secret'] = $_POST['wepay_client_secret']; $wepay_settings['access_token'] = ''; $need_to_reauthorize = true; } $wepay_settings['use_sandbox'] = empty($_POST['use_sandbox']) ? false : true; $wepay_settings['force_ssl_return'] = empty($_POST['force_ssl_return']) ? false : true; $wepay_settings['bypass_payment_page'] = $_POST['bypass_payment_page']; $wepay_settings['button_url'] = $_POST['button_url']; $wepay_settings['account_id'] = $_POST['account_id']; update_option('event_espresso_wepay_settings', $wepay_settings); echo '<div id="message" class="updated fade"><p><strong>' . __('WePay settings saved.', 'event_espresso') . '</strong></p></div>'; } if (isset($_GET['code'])) { if ($wepay_settings['use_sandbox']) { Espresso_Wepay::useStaging($wepay_settings['wepay_client_id'], $wepay_settings['wepay_client_secret']); } else { Espresso_Wepay::useProduction($wepay_settings['wepay_client_id'], $wepay_settings['wepay_client_secret']); } $info = Espresso_Wepay::getToken($_GET['code'], get_transient('espresso_wepay_redirect_uri')); if ($info) { // Normally you'd integrate this into your existing auth system $wepay_settings['access_token'] = $info->access_token; $wepay_settings['user_id'] = $info->user_id; try { $wepay = new Espresso_Wepay($info->access_token); $accounts = $wepay->request('account/find'); foreach ($accounts as $account) { $available_accounts[] = array('id' => $account->account_id, 'text' => $account->name); } $wepay_settings['available_accounts'] = $available_accounts; $wepay_settings['account_id'] = $available_accounts[0]['id']; $need_to_reauthorize = false; } catch (WepayException $e) { // Something went wrong - normally you would log // this and give your user a more informative message echo $e->getMessage(); } update_option('event_espresso_wepay_settings', $wepay_settings); echo '<div id="message" class="updated fade"><p><strong>' . __('WePay Access Token saved.', 'event_espresso') . '</strong></p></div>'; } else { // Unable to obtain access token echo 'Unable to obtain access token from WePay.'; } } if (empty($wepay_settings)) { if (file_exists(EVENT_ESPRESSO_GATEWAY_DIR . "/wepay/wepay-logo.png")) { $button_url = EVENT_ESPRESSO_GATEWAY_URL . "/wepay/wepay-logo.png"; } else { $button_url = EVENT_ESPRESSO_PLUGINFULLURL . "gateways/wepay/wepay-logo.png"; } $wepay_settings['wepay_client_id'] = ''; $wepay_settings['wepay_client_secret'] = ''; $wepay_settings['use_sandbox'] = false; $wepay_settings['bypass_payment_page'] = 'N'; $wepay_settings['button_url'] = $button_url; $wepay_settings['available_accounts'] = array(); $wepay_settings['account_id'] = ''; $wepay_settings['force_ssl_return'] = false; if (add_option('event_espresso_wepay_settings', $wepay_settings, '', 'no') == false) { update_option('event_espresso_wepay_settings', $wepay_settings); } } //Open or close the postbox div if (empty($_REQUEST['deactivate_wepay']) && (!empty($_REQUEST['activate_wepay']) || array_key_exists('wepay', $active_gateways))) { $postbox_style = ''; } else { $postbox_style = 'closed'; } ?> <a name="wepay" id="wepay"></a> <div class="metabox-holder"> <div class="postbox <?php echo $postbox_style; ?> "> <div title="Click to toggle" class="handlediv"><br /></div> <h3 class="hndle"> <?php _e('WePay Settings', 'event_espresso'); ?> </h3> <div class="inside"> <div class="padding"> <?php if (!empty($_REQUEST['activate_wepay'])) { $active_gateways['wepay'] = dirname(__FILE__); update_option('event_espresso_active_gateways', $active_gateways); } if (!empty($_REQUEST['deactivate_wepay'])) { unset($active_gateways['wepay']); update_option('event_espresso_active_gateways', $active_gateways); } echo '<ul>'; if (array_key_exists('wepay', $active_gateways)) { echo '<li id="deactivate_wepay" style="width:30%;" onclick="location.href=\'' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=payment_gateways&deactivate_wepay=true\';" class="red_alert pointer"><strong>' . __('Deactivate WePay IPN?', 'event_espresso') . '</strong></li>'; event_espresso_display_wepay_settings($need_to_reauthorize); } else { echo '<li id="activate_wepay" style="width:30%;" onclick="location.href=\'' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=payment_gateways&activate_wepay=true#wepay\';" class="green_alert pointer"><strong>' . __('Activate WePay IPN?', 'event_espresso') . '</strong></li>'; } echo '</ul>'; ?> </div> </div> </div> </div> <?php }