Я пытаюсь использовать API платежного сервиса в своем приложении и следую документации, представленной на сайте.Согласно документации, тело POST должно выглядеть следующим образом:
api_hash=38be425a-63d0-4c46-8733-3e9ff662d62d
&hash=ac0945d82b8589959b5f4ffafcc1a6c5983e82b8b4094c377a7b9c43d4a432bc
&order_id=2845
&amount=15
¤cy=EUR
&email=stefan@my-test-store.com
&url_failure=http://my-test-store.com/order/fail
&url_ok=http://my-test-store.com/order/success
&items=[{"sku":"450","name":"Test Item","amount":"15","type":"item_type","qty":"1","price":15,"id":"5619","url":"http://example.com/products/item/example-item-name-5619"}]
Мне удалось успешно сделать запрос на публикацию с почтальоном, однако я не совсем понимаю, что такое "items" в теле сообщения, так какмассив объектов.Моя HTML-форма выглядит следующим образом:
<form method="post" action="@ViewBag.G2AConfig.PostUrl" id="g2apaymentform">
<!--PayPal Settings-->
<input type="hidden" name="api_hash" value="@ViewBag.G2AConfig.ApiHash" />
<input type="hidden" name="hash" value="@ViewBag.Hash" />
<input type="hidden" name="order_id" value="@ViewBag.OrderId" />
<input type="hidden" name="amount" value="@Model.Total" />
<input type="hidden" name="currency" value="USD" />
<input type="hidden" name="email" value="@ViewBag.G2AConfig.MerchantEmail" />
<input type="hidden" name="url_failure" value="@ViewBag.UrlFailure" />
<input type="hidden" name="url_ok" value="@ViewBag.G2AConfig.ReturnUrl" />
@foreach (var item in Model.Items)
{
<input type="hidden" name="items[@index][sku]" value="@item.Product.GameAccountId" />
<input type="hidden" name="items[@index][name]" value="@item.Product.Rank.Name" />
<input type="hidden" name="items[@index][amount]" value="@item.Product.MarketPrice" />
<input type="hidden" name="items[@index][qty]" value="1" />
index = index + 1;
}
</form>
Я использую сообщение Ajax для выполнения запроса, который выглядит следующим образом:
event.preventDefault(); //prevent default action
var post_url = $(this).attr("action"); //get form action url
var request_method = $(this).attr("method"); //get form GET/POST method
var form_data = $(this).serialize(); //Encode form elements for submission
$.ajax({
url: post_url,
type: request_method,
data: form_data
}).done(function (response) { //
$("#server-results").html(response);
});
Это не работает, и я получаю неверный ответ об ошибкес сервера.Как правильно отправить форму с массивом объектов?