You are here

function commerce_robokassa_result in Commerce robokassa 7.2

Same name and namespace in other branches
  1. 7 commerce_robokassa.module \commerce_robokassa_result()

Page callback: commerce_robokassa/%commerce_robokassa_pm/result.

I do not use default payment method redirect_validate with return urls checkout/' . $order->order_id . '/payment/return/' . $order->data['payment_redirect_key'] and checkout/ ' . $order->order_id . '/payment/back/' . $order->data['payment_redirect_key'] that calls CALLBACK_redirect_validate payment transaction processing and user redirect are combined and robokassa does not support dynamic return urls. Also payment processing for all payment systems require change order\transaction statuses only in interaction\process\ipn callbacks not in success\fail\panding page callbacks.

Parameters

mixed $payment_method: Drupal payment method passed via url arg.

bool $is_result: Fallback call flag.

1 call to commerce_robokassa_result()
commerce_robokassa_status in ./commerce_robokassa.module
Page callback: commerce_robokassa/%commerce_robokassa_pm/%.
1 string reference to 'commerce_robokassa_result'
commerce_robokassa_menu in ./commerce_robokassa.module
Implements hook_menu().

File

./commerce_robokassa.module, line 275
Drupal Commerce Robokassa payment method.

Code

function commerce_robokassa_result($payment_method, $is_result = TRUE) {

  // Retrieve the SCI from $_POST if the caller did not supply an SCI array.
  // Note that Drupal has already run stripslashes() on the contents of the
  // $_POST array at this point, so we don't need to worry about them.
  $data = $_POST;
  $transaction = _commerce_robokassa_validate_post($data, $payment_method, $is_result);
  $transaction->message_variables = array();
  $transaction->remote_status = '';
  $transaction->payload = $data;
  $order = commerce_order_load($transaction->order_id);
  if ($is_result) {
    $remote_payment_method = isset($data['PaymentMethod']) ? $data['PaymentMethod'] : 'Robokassa';
    $transaction->message_variables = array(
      '!remote_payment_method' => $remote_payment_method,
    );
    $transaction->message = t('Success payment via !remote_payment_method');
    $transaction->status = COMMERCE_PAYMENT_STATUS_SUCCESS;
    commerce_payment_redirect_pane_next_page($order);
  }
  else {
    $transaction->message = t('Fail payment via robokassa');
    $transaction->status = COMMERCE_PAYMENT_STATUS_FAILURE;
    commerce_payment_redirect_pane_previous_page($order);
  }
  commerce_payment_transaction_save($transaction);
  if ($is_result) {
    print 'OK' . $transaction->transaction_id;
    drupal_exit();
  }
}