PHP: Отмена/Удаление подписки Не работает в MTN DEP

#php

Вопрос:

Мы используем MTN PHP-SDK из приведенного ниже URL

https://github.com/digitalmaterial/dep.api.auth.php

Код:

 $path = '/subscription/' . $subscription_id;
$depClient = new MTNDEPDEPClient($accessKey, $accessSecret, $apiKey, $baseUrl);
$requestBody = [];
$response = $depClient->createRequest(MTNDEPDEPClient::DELETE, $path, null, $requestBody)->send();
$responseArray = json_decode((string) $response->getBody(), true);
 

Ответ:

 Client error: `DELETE https://api.dep.mtn.co.za/subscription/` resulted in a `404 Not Found` response:
{"message":"No method found matching route subscription/ for http method DELETE."}
 

Мы не можем найти какой-либо PHP-код отмены подписки MTN-DEP. Пожалуйста, помогите нам и дайте нам знать, как мы можем удалить подписку с MTN end?

Комментарии:

1. Над какой документацией по API вы работаете? И то и другое developers.mtn.com/products/mtn-subscription-api-v1 и аналог v2 предполагает, что идентификатор клиента также должен быть указан в пути. (Если это то, чего вы пытаетесь достичь, откажитесь от подписки на конкретного клиента?)

Ответ №1:

я заметил 2 вещи :
1 — в упомянутой документации запрос отправлен следующим образом
$depClient->createRequest('POST' '/subscription');
поэтому я думаю , что вам нужно использовать это, пожалуйста, постарайтесь придерживаться всех шагов

 $depClient->createRequest('DELETE',$path); // Returns DEPClient object for chaining, see below
$depClient->getRequest(); // Will return the GuzzleHttpPsr7Request object with signed auth details for DEP API requests 
$response       = $depClient->send();
$statusCode     = $response->getStatusCode(); // returns the http status code
$rawResponse    = (string) $response->getBody(); // body, you will need to cast to string or echo to get the body data.
$responseArray  = json_decode($rawResponse, true); // return json decode array.
 

2 — убедитесь, что параметр $subscription_id установлен и имеет значение, прежде чем отправлять запрос.

Ответ №2:

Согласно документации, вам необходимо указать идентификатор клиента и идентификатор подписки.

Вы должны отправить запрос на удаление в конечную /customers/{id}/subscriptions/{subscriptionId} точку .

Возможно, путь, указанный в вашем коде, должен выглядеть следующим образом:

 $path = '/customers/' . $customer_id . '/subscriptions/' . $subscription_id;

$depClient = new MTNDEPDEPClient($accessKey, $accessSecret, $apiKey, $baseUrl);
$requestBody = [];
$response = $depClient->createRequest(MTNDEPDEPClient::DELETE, $path, null, $requestBody)->send();
$responseArray = json_decode((string) $response->getBody(), true);
 

Комментарии:

1. У нас нет никакого удостоверения личности клиента. Где мы это возьмем?

2. Привет, Дэн, В соответствии с вашей инструкцией я добавил идентификатор клиента и получил ошибку ниже. Client error: DELETE https://api.dep.mtn.co.za/customers/123456789/subscription/1234567890 resulted in a 404 Not Found response: {"message":"No method found matching route customers/123456789/subscription/1234567890 for http method DELETE."}