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();
}
}