You are here

mollie_payment.class.inc in Mollie Payment 7

Same filename and directory in other branches
  1. 7.2 includes/mollie_payment.class.inc

File

includes/mollie_payment.class.inc
View source
<?php

/**
 * This file contains classes for the Mollie Payment module.
 */

/**
 * Mollie payment method controller.
 */
class MolliePaymentMethodController extends PaymentMethodController {
  public $payment_method_configuration_form_elements_callback = 'mollie_payment_method_configuration';
  public $payment_configuration_form_elements_callback = 'mollie_payment_configuration';

  /**
   * Class constructor.
   */
  public function __construct() {
    $this->title = t('Mollie');
  }

  /**
   * Implements PaymentMethodController::execute().
   */
  public function execute(Payment $payment) {
    $method_data = $payment->method_data;
    $controller_data = $payment->method->controller_data;
    $client = mollie_payment_get_client($payment);
    if ($client) {
      $return_path = MOLLIE_PAYMENT_RETURN_PATH;
      $listener_path = MOLLIE_PAYMENT_LISTENER_PATH;
      $recurring_listener_path = MOLLIE_PAYMENT_RECURRING_LISTENER_PATH;
      if (!empty($controller_data['webhook_base_url'])) {
        $return_path = $controller_data['webhook_base_url'] . '/' . $return_path;
        $listener_path = $controller_data['webhook_base_url'] . '/' . $listener_path;
        $recurring_listener_path = $controller_data['webhook_base_url'] . '/' . $recurring_listener_path;
      }
      $payment_data = array(
        'amount' => $payment
          ->totalAmount(TRUE),
        'description' => $payment->description,
        'redirectUrl' => url($return_path . '/' . $payment->pid, array(
          'absolute' => TRUE,
        )),
        'webhookUrl' => url($listener_path . '/' . $payment->pid, array(
          'absolute' => TRUE,
        )),
      );
      if (isset($method_data['mollie_payment_method'])) {
        $payment_data['method'] = $method_data['mollie_payment_method'];
      }
      if (isset($method_data['mollie_payment_issuer'])) {
        $payment_data['issuer'] = $method_data['mollie_payment_issuer'];
      }
      if (module_exists('payment_recurring')) {
        $recurring_info = payment_recurring_recurring_payment_info($payment);
        if (!empty($recurring_info)) {

          // This is a recurring payment.
          $payment_data['recurringType'] = 'first';

          // We need to created a customer first.
          $customer = $client->customers
            ->create(array(
            'name' => $recurring_info['name'],
            'email' => $recurring_info['email'],
          ));
          $payment_data['customerId'] = $customer->id;
        }
      }

      // Create the payment in the Mollie system.
      $mollie_payment = $client->payments
        ->create($payment_data);

      // Context data might not be the best location to store this information
      // because in fact it is not related to the context. We might consider
      // storing it in a separate database table just like the controller data
      // of the payment method. (The method_data in the payment object is
      // currently not stored.)
      $payment->context_data['payment'] = array(
        'id' => $mollie_payment->id,
      );
      entity_save('payment', $payment);
      $redirect_url = $mollie_payment
        ->getPaymentUrl();
      drupal_goto($redirect_url);
    }
  }

}

Classes

Namesort descending Description
MolliePaymentMethodController Mollie payment method controller.