PayPal создает соглашение о выставлении счетов JSON и возвращает INTERNAL_SERVICE_ERROR в SandBox - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь создать соглашение PayPal Biling, сделав простой запрос на основе приведенного здесь примера https://developer.paypal.com/docs/subscriptions/integrate/integrate-steps/#3-create-an-agreement. Ответ сервера всегда таков: "INTERNAL_SERVICE_ERROR", "Произошла внутренняя ошибка обслуживания."

Я использую классический ASP-код:

sRequest  =  " {""name"": ""Magazine Subscription"", ""description"": ""Monthly agreement with a regular monthly payment definition"", ""start_date"": ""2019-01-09T07:41:38Z"", ""plan"": {""id"": ""P-7S816327W1048253XEAEXK6I""}, ""payer"": {""payment_method"": ""paypal""}} "

var_json = GetPayPal(PAYPAL_API_ENDPOINT() & "v1/payments/billing-agreements/", "POST", "", sHttpStatus)    

Итак, результат JSON-запроса:

{"name": "Magazine Subscription", "description": "Monthly agreement with a regular monthly payment definition", "start_date": "2019-01-08T07:41:38Z", "plan": {"id": "P-7S816327W1048253XEAEXK6I"}, "payer": {"payment_method": "paypal"}}

Запрос Windows curl возвращает ту же ошибку до тех пор, пока я не покажу такие кавычки:

curl -v -X POST https://api.sandbox.paypal.com/v1/payments/billing-agreements/ -H "Content-Type: application/json" -H "Authorization: Bearer AccessToken" -d "{\"name\": \"Magazine Subscription\", \"description\": \"Monthly agreement with a regular monthly payment definition\", \"start_date\": \"2019-01-07T17:41:38Z\", \"plan\": {\"id\": \"P-7S816327W1048253XEAEXK6I\"}, \"payer\": {\"payment_method\": \"paypal\"}}"

Я понятия не имею, как создать правильный запрос REST для создания биллингового соглашения PayPal для классического ASP в песочнице.


Я создал запрос на получение токена доступа, затем использовал его для создания тарифного плана и переключения его состояния в ACTIVE. Все запросы успешно завершились. Единственное отличие состоит в том, что для получения результата не было необходимости проверять кавычки в предыдущих тестовых запросах curl с помощью JSON. Например, обновить тарифный план curl:

curl -v -X PATCH https://api.sandbox.paypal.com/v1/payments/billing-plans/P-5S2563434M1564209CROHHLY -H "Content-Type: application/json" -H "Authorization: Bearer A21AAFF3tgbustGBIsrje-lmJHXYJOBUVhi4QmU6ZP21i8YKHBfaECpgUkNMujGCG629RSO3d9G3sM3pq9eOTIo44Yd575w2g" -d '[{"op": "replace","path": "/","value":{"state": "ACTIVE"}}]'

и классический ASP-код для него:

strRequest =  " [{""op"": ""replace"",""path"": ""/"",""value"":{""state"":""" & sState & """}}] "
var_json = GetPayPal(PAYPAL_API_ENDPOINT() & "v1/payments/billing-plans/" & sBillingPlanID & "/", "PATCH", strRequest, sHttpStatus)
...