Я пытаюсь интегрировать обработку CC Pin.net.au на свой сайт. Я использую библиотеку Omnipay для совершения звонков.
Чтобы не хранить детали CC на моем сервере, я использую метод токена Pin.js.
На странице отправки формы (после того, как пользователь заполнит личные данные и данные CC) javascript выполняет «предотвращение по умолчанию» и отправляет данные из форм (браузера) прямо на серверы pin.net.au. Сервер отправляет в ответ card_token и повторно отправляет форму на мой сервер.
Этот токен успешно получен, и я могу вывести его в своих тестах.
У меня возникают проблемы, когда я беру этот токен и отправляю запрос на покупку на pin.net.au. Согласно документам API, мне не нужно отправлять данные пользователя и карты при отправке токена (на самом деле весь смысл токена). Я отправляю этот токен вместе с другими обязательными битами, такими как электронная почта, сумма, описание и т. д.
Это работает, когда я использую cURL на своем терминале и получаю успешную оплату.
Однако, отправляя этот запрос на покупку/оплату с использованием библиотеки Omnipay, я каждый раз получаю 422 (недопустимый ресурс), который запрашивает данные пользователя и информацию CC. Он должен был заполнить этот материал из токена, который я отправил.
Я изучил документацию по API как Omnipay, так и Pin.net.au. Кажется, я не делаю ничего плохого. Что мне не хватает?
Вот мой запрос на оплату:
$gateway = GatewayFactory::create('Pin');
$gateway->setSecretKey('MY_SECRET_KEY');
$response = $gateway->purchase([
'email' => '[email protected]',
'description' => 'Package',
'amount' => '99',
'currency' => 'AUD',
'card_token' => Input::get('card_token'),
'ip_address' => Input::get('ip_address')
])->send();
Наконец, это не должно иметь большого значения, но если вы хотите знать, я использую Laravel 4.