Omnipay: как получить исходный идентификатор транзакции при использовании обратного вызова WorldPay

При обработке обратного вызова из транзакции WorldPay, как лучше всего получить исходный идентификатор транзакции, который был передан в Omnipay?

Это потребуется, например, для обновления соответствующей записи базы данных результатом транзакции.

Я вижу, что в ответе доступен метод getTransactionReference(), но не метод getTransactionId() (который предположительно будет получать доступ к значению 'cartId', возвращаемому WorldPay).

Я предполагаю, что к значению cartId можно получить доступ напрямую, но есть ли способ сделать это, не зависящий от шлюза?


person coatesap    schedule 21.01.2014    source источник


Ответы (1)


Вы должны передать идентификатор транзакции обратно себе, используя собственный returnUrl.

Во-первых, при настройке Worldpay:

  1. Войдите в свой интерфейс администратора WorldPay Merchant.
  2. В разделе «Установки» нажмите «Настройка» рядом с идентификатором установки.
  3. В поле URL ответа на платеж введите <wpdisplay item=MC_callback>.
  4. Убедитесь, что ответ на платеж включен? опция выбрана

Затем, когда вы делаете первоначальный запрос на покупку через Omnipay, передайте пользовательский returnUrl. Например:

$response = $gateway->purchase(array(
    'amount' => '10.00',
    'currency' => 'USD',
    'returnUrl' => 'https://www.example.com/return?transactionId=123'
))->send();

Таким образом, на странице обратного вызова/возврата вы можете загрузить исходные данные транзакции перед вызовом completePurchase():

$transaction = Transaction::find($_GET['transactionId']);
$response = $gateway->completePurchase(array(
    'amount' => $transaction->amount,
    'currency' => $transaction->currency,
))->send();
person Adrian Macneil    schedule 22.01.2014
comment
Вероятно, это работает, однако это не соответствует цели «универсального платежного провайдера»! Как вы могли бы сделать это с помощью существующих абстрактных методов Omnipay? Например, цель использует «trxid» в качестве параметра. - person twicejr; 15.09.2014