コード例 #1
0
 /**
  * Purchase button
  *
  * @see http://plugins.trac.wordpress.org/browser/membership/tags/3.4.4.1/membershipincludes/includes/payment.form.php#L78
  *
  * @param M_Subscription $subscription
  *     @see http://plugins.trac.wordpress.org/browser/membership/tags/3.4.4.1/membershipincludes/classes/class.subscription.php
  *
  * @param array $pricing
  *     @see http://plugins.trac.wordpress.org/browser/membership/tags/3.4.4.1/membershipincludes/classes/class.subscription.php#L110
  *
  *     array(
  *         array(
  *             'period' => '1',
  *             'amount' => '50.00',
  *             'type'   => 'indefinite',
  *             'unit'   => 'm'
  *         )
  *     )
  *
  * @param int $user_id WordPress user/member ID
  */
 public function purchase_button($subscription, $pricing, $user_id)
 {
     if (Pronamic_WP_Pay_Extensions_WPMUDEV_Membership_Membership::is_pricing_free($pricing)) {
         // @todo what todo?
         return;
     } else {
         $membership = Pronamic_WP_Pay_Extensions_WPMUDEV_Membership_Membership::get_membership($user_id);
         $config_id = get_option(Pronamic_WP_Pay_Extensions_WPMUDEV_Membership_Extension::OPTION_CONFIG_ID);
         $data = new Pronamic_WP_Pay_Extensions_WPMUDEV_Membership_PaymentData($subscription, $membership);
         $gateway = Pronamic_WP_Pay_Plugin::get_gateway($config_id);
         $gateway->set_payment_method($this->payment_method);
         if ($gateway) {
             // @see http://plugins.trac.wordpress.org/browser/membership/tags/3.4.4.1/membershipincludes/classes/membershipadmin.php#K2908
             if ('new' === strtolower(Pronamic_WP_Pay_Extensions_WPMUDEV_Membership_Membership::get_option('formtype'))) {
                 $action = add_query_arg(array('action' => 'buynow', 'subscription' => $data->get_subscription_id()), admin_url('admin-ajax.php'));
             } else {
                 $action = '#pronamic-pay-form';
             }
             printf('<form id="pronamic-pay-form" method="post" action="%s">', $action);
             printf('<img src="%s" alt="%s" />', esc_attr(plugins_url('images/ideal-logo-pay-off-2-lines.png', Pronamic_WP_Pay_Plugin::$file)), esc_attr__('iDEAL - Online payment through your own bank', 'pronamic_ideal'));
             echo '<div style="margin-top: 1em;">';
             echo $gateway->get_input_html();
             // Data
             $fields = array('subscription_id' => $data->get_subscription_id(), 'user_id' => $user_id);
             // Coupon
             if (function_exists('membership_get_current_coupon')) {
                 $coupon = membership_get_current_coupon();
                 if ($coupon) {
                     $fields['coupon_code'] = $coupon->get_coupon_code();
                 }
             }
             echo Pronamic_IDeal_IDeal::htmlHiddenFields($fields);
             // Submit button
             printf('<input type="submit" name="pronamic_pay_membership_%s" value="%s" />', esc_attr($this->gateway), esc_attr__('Pay', 'pronamic_ideal'));
             echo '</div>';
             if (isset($this->error) && is_wp_error($this->error)) {
                 foreach ($this->error->get_error_messages() as $message) {
                     echo $message, '<br />';
                 }
             }
             printf('</form>');
         }
     }
 }
コード例 #2
0
    public function to_html()
    {
        global $current_user;
        $subscription = $this->data['ms_relationship'];
        $membership = $subscription->get_membership();
        $invoice = $subscription->get_current_invoice();
        $ms_gateway = $this->data['gateway'];
        $gateway = Pronamic_WP_Pay_Plugin::get_gateway($ms_gateway->config_id);
        // Don't set payment method here as the issuer id is unknown when Pronamic_WP_Pay_Plugin::start() creates
        // the payment. Therefore, any chosen banks won't get used for the payment.
        $data = new Pronamic_WP_Pay_Extensions_WPMUDEV_Membership_PaymentData($subscription, $membership);
        $html = '';
        if ($gateway) {
            ob_start();
            $gateway->set_payment_method($this->payment_method);
            echo '<form id="pronamic-pay-form" method="post">';
            // Button image URL
            $button_image_url = plugins_url('images/ideal-logo-pay-off-2-lines.png', Pronamic_WP_Pay_Plugin::$file);
            if (isset($ms_gateway->button_image_url) && '' !== $ms_gateway->button_image_url) {
                $button_image_url = $ms_gateway->button_image_url;
            }
            // Button description
            $button_description = __('iDEAL - Online payment through your own bank', 'pronamic_ideal');
            if (isset($ms_gateway->button_description) && '' !== $ms_gateway->button_description) {
                $button_description = $ms_gateway->button_description;
            }
            printf('<img src="%s" alt="%s" />', esc_attr($button_image_url), esc_attr($button_description));
            echo '<div style="margin-top: 1em;">';
            echo $gateway->get_input_html();
            // Data
            $fields = array('subscription_id' => $data->get_subscription_id(), 'user_id' => $current_user->ID, 'invoice_id' => $invoice->id);
            echo Pronamic_IDeal_IDeal::htmlHiddenFields($fields);
            // Submit button
            printf(' <input type="submit" name="pronamic_pay_membership_%s" value="%s" />', esc_attr($ms_gateway->gateway), esc_attr__('Pay', 'pronamic_ideal'));
            echo '</div>';
            $error = $gateway->get_error();
            if (is_wp_error($error)) {
                foreach ($error->get_error_messages() as $message) {
                    echo $message, '<br />';
                }
            }
            ?>
			</form>
			<?php 
            $payment_form = apply_filters('ms_gateway_form', ob_get_clean(), $ms_gateway, $invoice, $this);
            $row_class = 'gateway_' . $ms_gateway->id;
            if (!$ms_gateway->is_live_mode()) {
                $row_class .= ' sandbox-mode';
            }
            ob_start();
            ?>
			<tr class="<?php 
            echo esc_attr($row_class);
            ?>
">
				<td class="ms-buy-now-column" colspan="2">
					<?php 
            echo $payment_form;
            ?>
				</td>
			</tr>
			<?php 
            $html = ob_get_clean();
            $html = apply_filters('ms_gateway_button', $html, $ms_gateway->id, $this);
        }
        return $html;
    }