You are here

function commerce_mollie_return in Commerce Mollie 7

Response return url for Mollie.

We have a intermediate url to retrieve the payment status. This is not returned by the Mollie on the redirect url.

Parameters

$order:

$payment_redirect_key:

Return value

void

1 string reference to 'commerce_mollie_return'
commerce_mollie_menu in ./commerce_mollie.module
Implements hook_menu().

File

./commerce_mollie.module, line 253

Code

function commerce_mollie_return($order, $payment_redirect_key) {
  if ($payment_redirect_key == $order->data['payment_redirect_key']) {

    // Load non failed payments.
    $transaction_query = new EntityFieldQuery();
    $transaction_query
      ->entityCondition('entity_type', 'commerce_payment_transaction')
      ->propertyCondition('status', 'failure', '!=')
      ->propertyCondition('order_id', $order->order_id);
    $transaction = $transaction_query
      ->execute();
    if (!empty($transaction['commerce_payment_transaction'])) {
      $transaction = entity_load('commerce_payment_transaction', array_keys($transaction['commerce_payment_transaction']));
      $transaction = reset($transaction);
    }
    else {
      $transaction = NULL;
    }
    if (!empty($transaction)) {
      $transaction = commerce_mollie_request_status($order, $transaction);
      commerce_payment_transaction_save($transaction);
      if ($transaction->status == COMMERCE_PAYMENT_STATUS_FAILURE) {
        drupal_set_message(t('You cancelled your payment. Please proceed again or choose a different payment option.'));
        commerce_payment_redirect_pane_previous_page($order);
        drupal_goto('checkout/' . $order->order_id . '/payment/back/' . $order->data['payment_redirect_key']);
      }
      else {
        commerce_payment_redirect_pane_next_page($order);
        drupal_goto('checkout/' . $order->order_id . '/payment/return/' . $order->data['payment_redirect_key']);
      }
    }
    else {
      commerce_payment_redirect_pane_previous_page($order);
      drupal_goto('checkout/' . $order->order_id . '/payment/back/' . $order->data['payment_redirect_key']);
    }
  }
  else {
    watchdog('commerce_mollie', 'Return payment url used with incorrect redirect key.', array(), WATCHDOG_WARNING);
    drupal_not_found();
  }
}