#ruby-on-rails #ruby #ruby-on-rails-4 #paypal #paypal-rest-sdk
#ruby-на-рельсах #рубин #ruby-on-rails-4 #paypal — платежная система #paypal-rest-sdk #ruby-on-rails #ruby #paypal
Вопрос:
У меня есть свой сайт на ruby on rails, и для оплаты подписки я использую paypal paypal-sdk-rest gem. Но мне нужно, чтобы первый платеж имел меньшую стоимость, а затем следующий платеж имел обычную стоимость, чтобы пользователи могли подписаться и протестировать подписку. Я читал в api paypal, и может быть применена пробная версия с меньшим значением. Можно ли применить пробную версию к paypal gem paypal-sdk-rest? это мой код того, как я создаю планы:
def creacion_planes
plan = Plan.new({
:name => 'Monthly $20',
:description => '$20 plan (monthly charge)',
:type => 'infinite',
:payment_definitions => [{
:name => 'Plan monthly $20',
:type => 'REGULAR',
:frequency_interval => '1',
:frequency => 'MONTH', #WEEK, DAY, YEAR, MONTH.
:cycles => '0',
:amount => {
:currency => 'USD',
:value => '20.00'
}
}],
:merchant_preferences => {
:return_url => complete_paypal_checkouts_planes_url,
:cancel_url => update_plan_url,
:max_fail_attempts => '0',
:auto_bill_amount => 'YES',
:initial_fail_amount_action => 'CONTINUE'
}
})
# Create plan
if plan.create
# Plan update activation object
plan_update = {
:op => 'replace',
:path => '/',
:value => {
:state => 'ACTIVE'
}
}
# Activate plan
if plan.update(plan_update)
puts("Billing plan activated with ID [#{plan.id}]")
redirect_to success_payment_path(:plan_id => plan.id, :plan => "plan_mensual20")
else
logger.error payment.error.inspect
end
else
logger.error payment.error.inspect
end
end
И это мой код того, как я создаю соглашение:
def create
agreement = Agreement.new({
:name => params[:name],
:description => params[:description],
:start_date => (Time.now 20*60).utc.iso8601, #'2020-04-26T23:00:04Z' (Time.now 1.days).utc.iso8601
:plan => {
:id => params[:plan_id]
},
:payer => {
:payment_method => 'paypal'
}
})
if agreement.create
redirect = agreement.links.find{|v| v.rel == "approval_url" }.href
redirect_to redirect
else
logger.error agreement.error.inspect
end
end
Ответ №1:
Не используйте этот старый paypal-ruby-sdk. Она устарела и использует старую версию тарифных планов, которая несовместима с текущим API подписок.
Вместо этого интегрируйте API подписок с помощью прямых вызовов HTTPS. Вот руководство:https://developer.paypal.com/docs/subscriptions
Приведен пример с пробным периодом.