Я пытаюсь создать новый платежный шлюз для моего магазина веселья.Я использую https://payfull.com API для приема платежей.До сих пор я добавил новую модель, которая представляет мой метод оплаты.
class Spree::Gateway::Payfull< Spree::Gateway
preference :apiKey, :string
preference :apiSecret, :string
def auto_capture?
true
end
def provider_class
Spree::Gateway::Payfull
end
def payment_source_class
Spree::CreditCard
end
def method_type
'payfull'
end
def purchase(amount, transaction_details, options = {})
api_url = 'https://demo13.payfull.com/integration/api/v1';
merchantPassword = 'PASSWORD';
params = {
'merchant' => 'MERCHANTNAME',
'type' => 'Sale',
'total' => '1.01',
'cc_name' => 'Mohammad',
'cc_number' => '5259222233334444',
'cc_month' => '12',
'cc_year' => '2030',
'cc_cvc' => '000',
'currency' => 'TRY',
'installments' => '1',
'language' => 'tr',
'client_ip' => '192.168.1.1',
'payment_title' => 'test payment title',
'use3d' => '1',
'return_url' => 'https://your_Application/return3D',
'customer_firstname' => 'ALI',
'customer_lastname' => 'MUHAMAD',
'customer_email' => 'alitestemail@gmail.com',
'customer_phone' => '5394659832',
'dealerCode' => '1722',
'Username' => 'PayfullTest',
'Password' => 'payfullpasa',
}
hashString = ""
params.sort.each do |key, value|
length = value.length
if length >0
hashString+= "#{length}" +value
end
end
digest = OpenSSL::Digest.new('sha1')
hash = OpenSSL::HMAC.hexdigest(digest, merchantPassword, hashString)
params['hash']= hash
res = RestClient.post api_url,params
puts res.body
ActiveMerchant::Billing::Response.new(true, 'success', {}, {})
end
end
это работает почти нормально и дает мне правильный ответ, если я установил use3d
в 0. Но мне нужно использовать 3d secure.когда я установлю use3d
на 1 вызов API, мне ответит страница подтверждения 3dsecure, на которой я должен как-то показать ее пользователю и прочитать данные, отправленные на return_url
.Я знаю, что должен отправить res.body
от моего вызова API представлению через контроллер, но не знаю, как это сделать.Любая помощь и подсказка приветствуется.