Есть ли способ добавить информацию отслеживания от имени клиентов? - PullRequest
1 голос
/ 22 января 2020

Есть ли способ добавить поля отслеживания информации от имени других клиентов, используя новый REST API? Если нет, могу ли я по-прежнему создавать приложения PayPal, которые используют старый API или любым другим способом?

Есть старый Вопрос , который демонстрирует, что я пытаюсь сделать.

Следуя этой странице документации Мне удалось обновить информацию в моей учетной записи в песочнице, используя следующий код C# ...

private static string SendRequest()
{
    var client = new HttpClient();
    var end_point = "https://api.sandbox.paypal.com/v1/shipping/trackers-batch";
    try
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
        var requestMessage = new HttpRequestMessage
        {
            RequestUri = new Uri(end_point),
            Method = HttpMethod.Post,

        };
        string clientId = "";
        string secret = "";

        requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Basic",
            Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes($"{clientId}:{secret}")));

        string body = File.ReadAllText("data.json");
        requestMessage.Content = new StringContent(body, Encoding.UTF8, "application/json");
        var x = client.SendAsync(requestMessage).Result;
        string responseStr = x.Content.ReadAsStringAsync().Result;

        return responseStr;
    }
    catch (Exception exp)
    {
        Debug.Print(exp.Message);
        return null;
    }
    finally
    {
        client.Dispose();
    }
}

. json

{
  "trackers": [
    {
      "transaction_id": "04YE27.....",
      "tracking_number": "443844....",
      "status": "SHIPPED",
      "carrier": "FEDEX"
    }
  ]
}

Но не удается обновить данные другой учетной записи SandBox, даже если я предоставил разрешения для этой учетной записи в приложении. Это ответ сервера:

{
   "tracker_identifiers":[

   ],
   "errors":[
      {
         "name":"NOT_AUTHORIZED",
         "message":"Authorization failed due to insufficient permissions",
         "details":[
            {
               "field":"/trackers/1/transaction_id",
               "value":"04YE27.....",
               "location":"body",
               "issue":"USER_NOT_AUTHORIZED",
               "description":"You are not authorized to add or modify tracking number for this transaction"
            }
         ],
         "links":[

         ]
      }
   ],
   "links":[
      {
         "href":"https://api.sandbox.paypal.com/v1/shipping/trackers-batch",
         "rel":"self",
         "method":"POST",
         "encType":"application/json"
      }
   ]
}

Я могу попросить пользователей предоставить необходимые разрешения моему приложению. но я не могу попросить всех создать приложение и дать мне свой идентификатор клиента и секрет.

1 Ответ

0 голосов
/ 22 января 2020

Я не могу попросить всех создать приложение и дать мне свой идентификатор клиента и секрет.

Это именно то, что вам нужно сделать, чтобы иметь этот уровень детального контроля над информация на уровне транзакции в их учетной записи PayPal.

Помимо создания приложения для вас и обмена его учетными данными, у них нет механизма для предоставления разрешения.

Если нет Могу ли я по-прежнему создавать приложения PayPal, которые используют старый API, или каким-либо другим способом?

Старые API и приложения не предлагают способ обновления информации отслеживания. Они также не поддерживаются для новых интеграций и больше не должны использоваться (только обратная совместимость / обслуживание)

...