问题描述
我的网站在红宝石上,我使用的是paypal paypal-sdk-rest gem。但是我需要第一笔付款具有较低的值,然后第二笔付款具有正常值,以便用户可以订阅和测试订阅。我一直在阅读Paypal API,可以应用较低价值的试用版。是否可以对贝宝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
解决方法
请勿使用该旧的paypal-ruby-sdk。它已过时,并使用了旧版的计费方案,该方案与当前的订阅API不兼容。
相反,可通过直接HTTPS调用集成订阅API。这是指南:https://developer.paypal.com/docs/subscriptions/
提供了一个具有试用期的示例。