Интеграция 3d secure в платежный шлюз spree - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь создать новый платежный шлюз для моего магазина веселья.Я использую 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 представлению через контроллер, но не знаю, как это сделать.Любая помощь и подсказка приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...