Ошибка создания тарифного плана с помощью Malformed_Request
Я пытаюсь создать тарифный план с запросом ниже. (Это действительно JSON), и я проверил запрос и, кажется, правильно, основываясь на примерах запросов, данных в PayPal (независимо от этого, я попытался использовать стандартный пример, и он не будет работать.
POST https://api.sandbox.paypal.com/v1/payments/billing-plans HTTP/1.1
Content-Type: application/json
Authorization: Bearer A015Ocv2vKmHg2NY2PNSbGEIN5jWHsZFKr.63kJzvtNaeII
Host: api.sandbox.paypal.com
Content-Length: 775
Expect: 100-continue
{
"name": "Membership Fee",
"description": "Monthly Fee with Trial Month",
"type": "INFINITE",
"payment_definitions": [
{
"name": "Plan",
"type": "REGULAR",
"frequency": "MONTH",
"frequency_interval": "1",
"amount": {
"value": "15",
"currency": "GBP"
},
"cycles": "12"
},
{
"name": "First Month Free Trial",
"type": "TRIAL",
"frequency": "MONTH",
"frequency_interval": "1",
"amount": {
"value": "0.01",
"currency": "GBP"
},
"cycles": "1"
}
],
"merchant_preferences": {
"setup_fee": {
"value": "0",
"currency": "GBP"
},
"return_url": "http://app.URLREMOVED.co.uk/complete",
"cancel_url": "http://app.URLREMOVED.co.uk/cancel",
"auto_bill_amount": "YES",
"initial_fail_amount_action": "CONTINUE",
"max_fail_attempts": "12"
}
}
Ответ получаю:
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
PROXY_SERVER_INFO: host=slcsbjava4.slc.paypal.com;threadId=35463
Paypal-Debug-Id: 8437249fdc6d1
SERVER_INFO: paymentsplatformserv:v1.payments.billing- plans&CalThreadId=127&TopLevelTxnStartTime=147d9bc0282&Host=slcsbjm3.slc.paypal.com&pid=25126
Content-Language: *
Date: Fri, 15 Aug 2014 12:54:42 GMT
Connection: close
Content-Type: application/json
Content-Length: 213
Connection: close
{"name":"MALFORMED_REQUEST","message":"Incoming JSON request does not map to API request","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST","debug_id":"8437249fdc6d1"}
Насколько я вижу, запрос правильный, я проверяю, у меня есть правильный URL, кто-нибудь обнаружит, в чем проблема?
2 ответа
У тебя есть autobill_amount
и это должно быть auto_bill_amount
, У вас также есть initial_amount_fail_action
и это должно быть initial_fail_amount_action
,
Правильно, это была моя ошибка, когда я не установил циклы на 0, так как это постоянный платеж, пока кто-то не отменит его, он должен быть 0, а не 12.
Итак, исправил запрос (который работает)
{
"name": "Membership Fee",
"description": "Monthly Fee with Trial Month",
"type": "infinite",
"payment_definitions": [
{
"name": "Free Trial",
"type": "REGULAR",
"frequency": "MONTH",
"frequency_interval": "1",
"amount": {
"value": "15",
"currency": "GBP"
},
"cycles": "0"
},
{
"name": "First Month Free Trial",
"type": "TRIAL",
"frequency": "MONTH",
"frequency_interval": "1",
"amount": {
"value": "0.01",
"currency": "GBP"
},
"cycles": "1"
}
],
"merchant_preferences": {
"setup_fee": {
"value": "1",
"currency": "GBP"
},
"return_url": "http://app.URLREMOVED.co.uk/complete",
"cancel_url": "http://app.URLREMOVED.co.uk/cancel",
"auto_bill_amount": "YES",
"initial_fail_amount_action": "CONTINUE",
"max_fail_attempts": "0"
}
}