используйте пробную версию с gem paypal-sdk-rest

#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

Приведен пример с пробным периодом.