与gem paypal-sdk-rest一起使用试用版

问题描述

我的网站在红宝石上,我使用的是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/

提供了一个具有试用期的示例。