Я использую кнопку PayPal, чтобы установить план регулярных платежей, но я хотел бы получать информацию о подписке, такую как адрес электронной почты и имена пользователей, когда пользователь заканчивает платить. Я попытался использовать приведенный ниже код для получения сведений из PayPal, но в итоге получил эту ошибку, как показано после
var_dump => "object(stdClass)#1 (5) { ["name"]=> string(16) "VALIDATION_ERROR" ["debug_id"]=> string(12) "f1579954da9c" ["message"]=> string (29) "Неверный запрос. См. подробности." ["information_link"]=> string(67) "https://developer.paypal.com/docs/api/payments.billing-plans#errors" ["details"]=> array(1) { [0]=> object(stdClass)#2 (2) { ["field"]=> string(22) "id шаблона недействителен" ["issue"]=> string(18) "Incorrect Plan Id." } } }"
КОД: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api-m.sandbox.paypal.com/v1/payments/billing-plans/'.$plan_id); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: Bearer '.rawurlencode($token);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
$response=json_decode($result);
var_dump($response);
Обновлено: на самом деле основная проблема здесь заключалась в использовании API устарело v1/payments/billing-plans
. Вместо этого используйте API v1/billing/plans
для управления текущими планами подписки, хотя этот вопрос больше касается самих подписок, а не планов.
Судя по ошибке, вы указываете недопустимый plan_id; Идентификатор плана должен начинаться с «P-». Поскольку ваша постановка задачи состоит в том, чтобы получить статус фактического подписка пользователя (а не плана), не используйте ни plan_id, ни этот вызов API.
Идентификатор подписки начинается с «I-» и возвращается в данных onApprove кнопки «Подписка», если вы используете такую кнопку JS. Затем вы можете использовать идентификатор подписки на получить статус с вызовом API.
Самый надежный способ (поскольку он не зависит от какого-либо кода на стороне клиента) для заполнения идентификаторов подписки в вашем бэкэнде — создать прослушиватель событий веб-перехватчика, который будет уведомлен всякий раз, когда новые события подписки имеет место для этого REST app/client_id . Самое полезное такое событие для прослушивания — это PAYMENT_SALE_COMPLETED
, так как оно происходит каждый раз, когда подписка оплачивается, и может использоваться, чтобы пометить ее как действительную в течение 1 месяца (обычная логика/деловая потребность), но есть также BILLING.SUBSCRIPTION.ACTIVATED
, когда она начинается.
Для согласования вы можете включить произвольный custom_id
при создании подписки (внутри createSubscription при использовании кнопки или при создании API при ее использовании). Этот custom_id
будет возвращаться во всех веб-перехватчиках, связанных с этой подпиской, поэтому вы можете определить, для какого пользователя/профиля он предназначен.
Правильно, это используется при создании новой подписки (в плане есть информация billing_cycles), но не используется после подписки пользователя.
О, и вы вызываете старый API «планов выставления счетов», который устарел и не используется для текущих подписок. Текущий API — developer.paypal.com/docs/api/subscriptions/v1/#plans_get.
Мужчины! Спасибо. Я прошел через этот API и нашел простой API для вызова, который возвращает все детали подписки, которые я хотел. Спасибо за сотрудничество. Вот ссылка developer.paypal.com/docs/api/subscriptions/v1/…
Спасибо @Preston PHX за сотрудничество, вот идентификатор плана, который я использовал при тестировании P-18E22255LU413640YMJITNOY.