2017-02-24 13 views
0

레일 앱으로 Payfort 지불 게이트웨이를 구현하려고합니다. 하지만 다음 응답 메시지는 무엇입니까 : 어떤 도움을 이해할 수있을 것이다Ruby On Rails 앱과 Payfort 지불 통합하기

params = {command: "AUTHORIZATION", 
      currency: "USD", 
      access_code: "z7TfXF2xxxxxxxxxxxx", 
      merchant_identifier: "xoNbjDoq", 
      merchant_reference: "405", 
      language: "en", 
      amount: 250, 
      token_name: "token_is_here", 
      expiry_date: "07/2023", 
      card_number: "5200421234563432", 
      card_security_code: "417", 
      card_holder_name: "Abc Xyz", 
      remember_me: "YES", 
      return_url: "http://lvh.me:3000/payments/test"} 
params = params.except(:card_security_code, :card_number, :expiry_date, :card_holder_name, :remember_me) 

    params = params.sort.to_h 
    string = params.to_query(nil) 
    string = string.gsub! '&', '' 
    string = @@sha_request + string + @@sha_request 
    string = Digest::SHA256.hexdigest string 
uri = URI.parse("https://sbpaymentservices.payfort.com/FortAPI/paymentApi") 

    header = {'Content-Type': 'application/json'} 

    http = Net::HTTP.new(uri.host, uri.port) 
    http.use_ssl = true 
    request = Net::HTTP::Post.new(uri.request_uri, header) 
    request.body = params.to_json 

    response = http.request(request) 

:

"response_message":"Signature mismatch" 

다음은 내 시도이다. 미리 감사드립니다. :)

답변

0

서명을 생성하는 동안 매개 변수 순서를 확인하십시오. 서명을 다른

또는를 생성하는 동안 자신의 보석

를 사용해보십시오 u는 계정에 설정을 가지고있는 알고리즘을 확인하고 동일한 알고리즘을 사용 https://github.com/payfort/start-ruby

+0

답장을 보내 주셔서 감사합니다. 하지만 매개 변수의 예를 들어 주시겠습니까? 감사 :) – Vishal

0

그 중 하나는 레일 형태 등의 문제에 대한 여러 가지 이유가있을 수 있습니다 params 및 해시 알고리즘, 여기에 대한 내 구현이

def sign_with_key(params, key) 
    string_to_digest = params.sort { |a, b| a[0].upcase <=> b[0].upcase }.map { |k, v| "#{k}=#{v}" }.join() 
    string_to_digest.prepend(key) 
    string_to_digest << key 
    "Digest::#{@options[:sha].upcase}".constantize.hexdigest(string_to_digest) 
    end