Ruby を使用して PesaPal API を動作させようとすると、本当に悪夢に見舞われます...
おそらく最も一般的に使用されている API ではないことは承知していますが、OAuth の使用経験が豊富で、PHP の経験が豊富で、新しい視点を提供できる人がここにオンラインでいる場合は、感謝します。
PesaPal 開発者サイトはこちらです: http://developer.pesapal.com 彼らのAPI ドキュメントは、彼らのサイトで OAuth を使用する方法についてあまり多くの手がかりを与えていません。彼らのPHP サンプルを正しく読みました。
これをRubyで実装しようとする私の試みは次のとおりです。
require 'oauth'
require 'uri'
key = '<my sandbox key>'
sec = '<my sandbox secret>'
API_DOMAIN = 'https://demo.pesapal.com'
# An XML string of param data to include with our request
RAW_XML = %{<?xml version=\"1.0\" encoding=\"utf-8\"?><PesapalDirectOrderInfo xmlns:xsi=\"http://www.w3.org/2001/XMLSchemainstance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" Amount=\"12.34\" Description=\"Bob Test 1\" Type=\"MERCHANT\" Reference=\"808\" FirstName=\"Bo\" LastName=\"Tester\" Email=\"bodacious@bodacious.com\" xmlns=\"http://www.pesapal.com\" />}
# Escape the XML
@post_xml = URI.escape(RAW_XML)
# Create a new OAuth Consumer
@consumer = OAuth::Consumer.new(key, sec, {
site: API_DOMAIN,
scheme: :query_string
})
# The signed request object
@signed_request = @consumer.create_signed_request('get', "#{API_DOMAIN}/API/PostPesapalDirectOrderV4")
# Join the pesapal_request_data and oauth_callback with '&' for valid URL params
@params = {
oauth_callback: URI.escape('http://localhost:3000'),
pesapal_request_data: @post_xml,
}.map { |k,v| "#{k}=#{v}" }.join('&')
# This is the URL we should redirect to
puts redirect_url = "#{@signed_request.path}&#{@params}"
このコードによって返された URL にアクセスしようとするとProblem: signature_invalid | Advice: > |
、API から返されます。
ここで私が間違っていることを誰かが考えることができますか?
ありがとう