function _commerce_robokassa_transaction_load in Commerce robokassa 7.2
Payment transaction load helper.
Commerce robokassa 7.x-2.x send transaction GUID as shp_trx_id custom parameter.
Parameters
int $inv_id: Robokassa InvId value.
int $shp_trx_id: Commerce transaction GUID for 7.x-2.x, empty for 7.x-1.x.
float $amount: Payed order amount for 7.x-1.x compatibility.
object $payment_method: Payment method object user on transaction creation for 7.x-1.x compatibility.
Return value
object|bool Commerce payment transaction object or FALSE otherwise.
2 calls to _commerce_robokassa_transaction_load()
- commerce_robokassa_status in ./
commerce_robokassa.module - Page callback: commerce_robokassa/%commerce_robokassa_pm/%.
- _commerce_robokassa_validate_post in ./
commerce_robokassa.module - Helper to validate robokassa $_POST data.
File
- ./
commerce_robokassa.module, line 128 - Drupal Commerce Robokassa payment method.
Code
function _commerce_robokassa_transaction_load($inv_id, $shp_trx_id = FALSE, $amount = 0, $payment_method = FALSE) {
if (!is_numeric($inv_id)) {
return FALSE;
}
// Transaction key 'order_id' used for 7.x-1.x transactions.
// Transaction key 'remote_id' used for 7.x-2.x transactions.
$transaction_key = $shp_trx_id ? 'remote_id' : 'order_id';
$transaction_key_val = $shp_trx_id ? $shp_trx_id : $inv_id;
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'commerce_payment_transaction')
->propertyCondition($transaction_key, $transaction_key_val)
->propertyCondition('payment_method', 'commerce_robokassa')
->range(0, 1);
$result = $query
->execute();
if (!isset($result['commerce_payment_transaction'])) {
if (!$shp_trx_id) {
$order = commerce_order_load($inv_id);
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$currency_code = $order_wrapper->commerce_order_total->currency_code
->value();
$amount = commerce_currency_decimal_to_amount($amount, $currency_code);
$charge = array(
'amount' => $amount,
'currency_code' => $currency_code,
);
return commerce_robokassa_transaction($payment_method, $order, $charge);
}
return FALSE;
}
$transaction_ids = array_keys($result['commerce_payment_transaction']);
$entities = entity_load('commerce_payment_transaction', $transaction_ids);
return reset($entities);
}