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