Я работаю над интеграцией Postmates с моим приложением электронной коммерции rails для доставки по требованию. Я создал контроллер и представление для целей тестирования и настроил его в своем файле маршрутов (построенном в моей среде разработки). Для справки, вот документация от Postmates: docs и технический блог: блог
Файл маршрутов:
resources :postmates do
member do
post 'get_delivery'
end
end
Контроллер:
require 'httparty'
require 'json'
class PostmatesController < ApplicationController
def get_delivery
api_key = **hidden**
@customer = 'cus_K8mRn4ovuNyNKV'
@urlstring_to_post = 'https://api.postmates.com/v1/customers/' + @customer + '/delivery_quotes'
@result = HTTParty.post(@urlstring_to_post.to_str,
:body => { :dropoff_address => "205 E 95th Street, New York, NY 10128",
:pickup_address => "619 W 54th St, New York, NY 10019"
}.to_json,
:basic_auth => { :username => api_key },
:headers => { 'Content-Type' => 'application/json' })
end
end
Вид:
<div class="container">
<%= form_tag url_for(:controller => 'postmates', :action => 'get_delivery'), :method => 'post' do %>
<%= submit_tag "Get Delivery", :action => 'get_delivery', :controller => 'postmates'%>
<% end %>
</div>
<p>Result: <%= @result %></p>
Вот ответ от API:
{"kind"=>"error", "code"=>"invalid_params", "params"=>{"dropoff_address"=>"This field is required.", "pickup_address"=>"This field is required."}, "message"=>"The parameters of your request were invalid."}
Мне кажется, что адрес высадки и получения не передается в HTTP-запросе. Может ли кто-нибудь сказать мне, делаю ли я небольшую синтаксическую ошибку или что-то в этом роде? Тот факт, что я получаю этот ответ, означает, что моя аутентификация в порядке, как и URL-адрес. Есть идеи?
Спасибо.