Как активировать подписку PayPal? - PullRequest
1 голос
/ 30 апреля 2020

Я внедрил систему регулярных платежей, используя PayPal и SmartButtons. Клиент может создать подписку через мою систему, и в конце оформления заказа я создаю подписку:

{
    "orderID": "3JR7411152833961C",
    "subscriptionID": "I-J8CHJ9UKB8JU",
    "facilitatorAccessToken": "A21AAElq71jrRrKHzaxxOeA4o7cOie83F_N-LKMZoAe2mhmaANy-a784yj9DUbSlQPIxtu_O-7XyzHWab23gKVgwhqK9Hjaow"
} 

, чтобы активировать подписку и получить платеж, необходимый для ее выполнения, поэтому Я написал этот метод:

let executeAgreement = (paymentToken) => {

    paypal.billingAgreement.execute(paymentToken, {}, function (error, billingAgreement) {
        if (error) {
            console.log(error);
            throw error;
        }
        else {
            console.log('Billing Agreement Execute Response');
            console.log(JSON.stringify(billingAgreement));
        }
    });
}

проблема, которую я получил:

ответ: {имя: 'BUSINESS_VALIDATION_ERROR', debug_id: '82426af46aee4', сообщение: 'Ошибка проверки. ', информационная ссылка:' https://developer.paypal.com/docs/api/payments.billing-agreements#errors ', подробности: [[Object]], httpStatusCode: 400}, httpStatusCode: 400}

Я отправляю executeAgreement идентификатор подписки , но я думаю, проблема в том, что в созданной подписке я только повторно получаю идентификатор подписки, а не paymentToken, как я могу это исправить?

По существу: как я могу выполнить / активировать подписку, если У меня есть только идентификатор подписки, возвращенный следующим методом:

 opts.createSubscription = function (data, actions) {
     that.step = that.steps.PAYPAL_EXTERNAL_WINDOW;
          return actions.subscription.create({
              plan_id: that.paymentData.plan.id,
              application_context: {
              user_action: "CONTINUE",
              shipping_preference: 'NO_SHIPPING'
          }
     });
}

, описанный выше метод возвращает orderId - subscriptionId - facilitatorAccessToken, кажется, я не могу активировать идентификатор подписки после того, как пользователь подтвердил повторение оплата с помощью умных кнопок оплаты.

1 Ответ

1 голос
/ 30 апреля 2020

На самом деле, I-J8CHJ9UKB8JU - это уже созданная и активная подписка, и вам не нужно ничего выполнять.

Идея исполнения соглашения о выставлении счетов - это нечто из старой документации, предшествующей API подписок.

В текущем API Sbscription вы просто создадите и активируете подписку:

https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_create

С последующим перенаправлением на URL подтверждения или использование кнопки Smart Payment (что гораздо лучше, поскольку она открывает утверждение «в контексте» - никакого перенаправления не требуется)

Так или иначе, у вас есть активный идентификатор подписки: I-J8CHJ9UKB8JU

Теперь просто сохраните этот объект и свяжите его с вашим объектом клиента.

...