У меня есть веб-приложение rails 5, которое пытается отправить заказ обратно на веб-сайт WordPress, используя API woo commerce .
Я использую обертку для драгоценных камней:
gem "woocommerce_api"
Я могу идеально создать заказ, если жестко закодировать одну позицию. Однако я не знаю, как добавить несколько позиций. Ниже приведен первый «рабочий пример», а затем - моя попытка перебрать позиции.
Ответ об ошибке, который я получаю:
{"code"=>"woocommerce_rest_required_product_reference", "message"=>"Product ID or SKU is required.", "data"=>{"status"=>400}}
Очевидно, я не должен помещать в запрос цикл .each ... Но я не знаю другого способа?
ЗАПРОС РАБОЧЕЙ ПОЧТЫ
@cart_items = Cart.where(user_id: @user.id).all
data = {
status: "processing",
currency: "AUD",
set_paid: true,
billing: {
first_name: "#{@user.first_name}",
last_name: "#{@user.last_name}",
address_1: "#{@user.address}",
address_2: "",
city: "#{@user.suburb}",
state: "#{@user.state}",
postcode: "#{@user.postcode}",
country: "Australia",
email: "#{@user.email}",
phone: "#{@user.phone}"
},
shipping: {
first_name: "#{@user.first_name}",
last_name: "#{@user.last_name}",
address_1: "#{@user.address}",
address_2: "",
city: "#{@user.suburb}",
state: "#{@user.state}",
postcode: "#{@user.postcode}",
country: "Australia",
},
line_items: [
{
:product_id => 123,
:variation_id => 1,
:quantity => 2
:subtotal => "10.00",
:total => "20.00"
}
],
shipping_lines: [
{
method_id: "flat_rate",
method_title: "Flat Rate",
total: "0"
}
]
}
НЕПРАВИЛЬНАЯ ЗАПРОС ПУНКТА НЕСКОЛЬКИХ ЛИНЕЙ
@cart_items = Cart.where(user_id: @user.id).all
data = {
status: "processing",
currency: "AUD",
set_paid: true,
billing: {
first_name: "#{@user.first_name}",
last_name: "#{@user.last_name}",
address_1: "#{@user.address}",
address_2: "",
city: "#{@user.suburb}",
state: "#{@user.state}",
postcode: "#{@user.postcode}",
country: "Australia",
email: "#{@user.email}",
phone: "#{@user.phone}"
},
shipping: {
first_name: "#{@user.first_name}",
last_name: "#{@user.last_name}",
address_1: "#{@user.address}",
address_2: "",
city: "#{@user.suburb}",
state: "#{@user.state}",
postcode: "#{@user.postcode}",
country: "Australia",
},
line_items: [
@cart_items.each do |ci|
{
:product_id => ci.product.woo_id.to_i,
:variation_id => 0,
:subtotal => ci.product.price.to_s,
:total => ((ci.product.price.to_d * ci.quantity.to_i).round(2)).to_s
}
end
],
shipping_lines: [
{
method_id: "flat_rate",
method_title: "Flat Rate",
total: "0"
}
]
}