Интеграция Omnipay MIGS

1

Привет, я использую omnipay github lib с интеграцией migs в моем проекте. Образец кода, похоже, не работает. Кто-нибудь может мне с этим помочь?

require_once 'vendor/autoload.php';

use \Omnipay\Omnipay as omnipay;

$gateway = Omnipay::create('Migs_ThreeParty');
$gateway->setMerchantId('foo');
$gateway->setMerchantAccessCode('foo');
$gateway->setSecureHash('foo');

try {
    $response = $gateway->purchase(array('amount' => '0.00', 'currency' => 'AED', 'returnURL' => 'www.google.com.pk'))->send();

    if ($response->isRedirect()) {
        // redirect to offsite payment gateway
        $response->redirect();
        //$url = $response->getRedirectUrl();
        //$data = $response->getRedirectData();

    } else {
        // payment failed: display message to customer
        echo $response->getMessage();
    }
} catch (\Exception $e) {
    // internal error, log exception and display a generic message to the customer
    exit('Sorry, there was an error processing your payment. Please try again later.');
}

"$gateway-> setSecureHash" == "$ SECURE_SECRET", как показано в примере ссылки http://integrate-payment-gateway.blogspot.in/2012/01/migs-payment-gateway-integration-php.html

Вышеприведенный код запрашивает redirectUrl и transactionId. Где его указать?

  • 0
    Что вы имеете в виду "пример кода не работает"? Есть ли сообщение об ошибке?
  • 0
    Да, php выдает фатальную ошибку, а в сообщении говорится, что необходимо указать returnURL. Как я могу предоставить это в приведенном выше примере? Кроме того, он также попросил предоставить идентификатор транзакции. Я не знаю, где его найти и предоставить. И да, пример кода был взят из github.
Показать ещё 3 комментария
Теги:
omnipay

2 ответа

0
Лучший ответ
require_once 'vendor/autoload.php';

use \Omnipay\Omnipay as omnipay;

$gateway = Omnipay::create('Migs_ThreeParty');
$gateway->setMerchantId('MerchantId');
$gateway->setMerchantAccessCode('MerchantAccessCode');
$gateway->setSecureHash('SecureHash');

try {
    $response = $gateway->purchase(array(
        'amount' => '10.00', // amount should be greater than zero
        'currency' => 'AED',
        'transactionId' => 'refnodata', // replace this for your reference # such as invoice reference #
        'returnURL' => 'http://yourdomain.com/returnPage.php'))->send();

    if ($response->isRedirect()) {
        $url = $response->getRedirectUrl(); // do whatever with the return url
    } else {
        // payment failed: display message to customer
        echo $response->getMessage();
    }
} catch (\Exception $e) {
    // internal error, log exception and display a generic message to the customer
    echo $e;
    exit('Sorry, there was an error processing your payment. Please try again later.');
}
  • 0
    @Mohammad_Sharaf ваше решение работает нормально, но в интерфейсе mastercard сумма умножается на 100. Можете ли вы помочь мне решить эту проблему?
  • 0
    Попробуйте 'сумма' => $ сумма * 100; в качестве мигов принимает целое количество.
1

У меня был тот же вопрос, о чем говорит returnURL? Ответ - это разница между методами Migs_TwoParty и Migs_ThreeParty.

Migs_ThreeParty передает управление поставщику платежей и когда обработанный платеж обрабатывается, он возвращается на ваш сайт. В документации это делается так:

Интернет-браузер владельца карты перенаправляется для запроса транзакции на платежный сервер для обработки транзакции. После обработки транзакции интернет-браузер владельца карты возвращается на веб-страницу, которую вы назначаете в транзакции вместе с ответом на транзакцию. Обработка транзакции с информацией о получении завершает транзакцию.

Если вы хотите сделать все сопряжение с Gateway самостоятельно, вы должны использовать метод Migs_TwoParty. Тогда returnURL не требуется.

Cheers Murray

  • 0
    Я согласен. Код, который я разместил, работает в случае 2-х сторон, где вам нужно предоставить returnUrl и транзакции. После долгих попыток мне удалось заставить код работать так, как ожидалось. Спасибо :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню