#node.js #paypal #paypal-subscriptions
#node.js #paypal #paypal-подписки
Вопрос:
Я создал веб-сайт с услугой, за которую я беру плату. Я хочу создать подписку PayPal. Мне нужно, чтобы эта подписка была подключена к моему бэкэнду (функции firebase — node.js ) таким образом, я могу изменить некоторые данные в базе данных, чтобы предоставлять моим пользователям различный контент в зависимости от того, платят они или нет. Я хотел использовать кнопки PayPal для своей подписки, но я не могу найти способ подключить эту кнопку к моему бэкэнду, поэтому, похоже, кнопки PayPal не являются оптимальными для моей проблемы. Я не могу использовать Stripe, потому что он не поддерживается в моей стране. Можете ли вы предложить мне другое решение для моих платежей по подписке или показать, как я могу использовать PayPal?
Ответ №1:
Вы можете использовать Paypal Node SDK для вашего варианта использования вместо того, чтобы полагаться на встроенную кнопку подписки Paypal. SDK обеспечит вам лучшую интеграцию с NodeJS.
Для этого, в основном, нужно выполнить 2 шага: 1.) Определить объект плана выставления счетов Объект плана выставления счетов определяет план подписки, включая количество циклов, частоту платежей, любые сборы за настройку и так далее.
var billingPlanAttribs = {
name: 'Food of the World Club Membership: Standard',
description: 'Monthly plan for getting the t-shirt of the month.',
type: 'fixed',
payment_definitions: [{
name: 'Standard Plan',
type: 'REGULAR',
frequency_interval: '1',
frequency: 'MONTH',
cycles: '11',
amount: {
currency: 'USD',
value: '19.99'
}
}],
merchant_preferences: {
setup_fee: {
currency: 'USD',
value: '1'
},
cancel_url: 'http://localhost:3000/cancel',
return_url: 'http://localhost:3000/processagreement',
max_fail_attempts: '0',
auto_bill_amount: 'YES',
initial_fail_amount_action: 'CONTINUE'
}
};
Конечно, вам нужно будет изменить cancel_url и return_url на ваши фактические конечные точки функций Firebase (или localhost, если вы запускаете свои функции в localhost для целей разработки)
2.) Создайте и активируйте тарифный план, поэтому, как только вы создали или определили свой биллинг, вам нужно будет создать этот объект и активировать тарифный план следующим образом:
paypal.billingPlan.create(billingPlanAttribs, function (error, billingPlan){
var billingPlanUpdateAttributes;
if (error){
console.error(JSON.stringify(error));
throw error;
} else {
// Create billing plan patch object
billingPlanUpdateAttributes = [{
op: 'replace',
path: '/',
value: {
state: 'ACTIVE'
}
}];
// Activate the plan by changing status to active
paypal.billingPlan.update(billingPlan.id, billingPlanUpdateAttributes, function(error, response){
if (error){
console.error(JSON.stringify(error));
throw error;
} else {
console.log('Billing plan created under ID: ' billingPlan.id);
}
});
}
});
Опять же, все это описано в разделе для разработчиков Paypal.
Вот также ссылка на их пример github с использованием NodeJS (который является тем же базовым бэкэндом, что и функция Firebase)
Комментарии:
1. Что, если у меня нет предопределенного количества циклов, я просто хочу, чтобы оно было бесконечным, на какое значение следует установить ‘cycles’? @Raven
2. Почему архивируется репозиторий PayPal-node-SDK? Это настолько старое и ненадежное?
3. А также как я могу подключить своих пользователей firebase к платежам? Как я могу теперь определить, какой платеж / подписка от каких пользователей?
4. @PyFran циклы — это то, как часто принимается платеж, пока пользователь подписан. Пакет SDK для узла PayPal может быть заархивирован, поскольку он был заменен более новым пакетом SDK. Наконец, как отметил Рейвен, на веб-сайте PayPal есть документация по всему; У вас есть возможность регистрировать и сохранять любые данные, которые вам нужны, с помощью событий, которые вызываются из подписки PayPal.