You are here

function commerce_robokassa_transaction in Commerce robokassa 7.2

Creates an payment transaction for the specified charge amount.

Parameters

mixed $payment_method: Drupal commerce payment method instance.

object $order: Drupal commerce order object.

mixed $charge: Amount to be charged.

Return value

mixed Created transaction.

2 calls to commerce_robokassa_transaction()
commerce_robokassa_submit_form_submit in ./commerce_robokassa.module
Payment method callback: submit form submission.
_commerce_robokassa_transaction_load in ./commerce_robokassa.module
Payment transaction load helper.

File

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

Code

function commerce_robokassa_transaction($payment_method, $order, $charge) {
  $transaction = commerce_payment_transaction_new('commerce_robokassa', $order->order_id);
  $transaction->instance_id = $payment_method['instance_id'];
  $transaction->amount = $charge['amount'];
  $transaction->currency_code = $charge['currency_code'];
  $transaction->status = COMMERCE_PAYMENT_STATUS_PENDING;
  $transaction->message = 'User redirected to robokassa';

  // Robokassa does not support remote ID in response so populate
  // transaction->remote_id with random int. This value will be used as
  // Robokassa InvId request parameter.
  // We can't use transaction id as value for InvId because possible
  // CSRF attack. Also we can't use hash or any non int value for InvId
  // because documentation requirements.
  $guid = sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
  $transaction->remote_id = $guid;
  commerce_payment_transaction_save($transaction);
  return $transaction;
}