Невозможно обновить учетные записи Stripe с ошибкой URI - PullRequest
0 голосов
/ 04 апреля 2019

При попытке обновить учетные записи Stripe Connect появляется следующая ошибка:

bad URI(is not URI?): /v1/accounts/{ "id": "acct_xxxxxxxxxxxxxxxxxx", "object": "account", "business_profile": { "mcc": null, "name": null, "product_description": 
....
....

Я могу создавать учетные записи, но их обновление не работает. Я использую ту же форму и аналогичный код в контроллере. Это мой метод обновления в контроллере:

def update

    unless (current_user || current_affiliate).stripe_account
      redirect_to new_user_stripe_account_path and return
    end

  begin
    @stripe_account_retrieve = Stripe::Account.retrieve((current_user || current_affiliate).stripe_account.acct_id)

    stripe_account_params.each do |key, value|
      if value.empty?
        flash.now[:alert] = "Please complete all fields."
        render 'edit' and return
      end
    end

    if @stripe_account.account_type == "individual"
       Stripe::Account.update(
        @stripe_account_retrieve,
        {
      :country => stripe_account_params[:country],
      :type => "custom",
      :business_type => stripe_account_params[:account_type],
      requested_capabilities: ['platform_payments'],
        individual: {
          address: stripe_account_params[:address_line1],
          first_name: stripe_account_params[:first_name],
          last_name: stripe_account_params[:last_name],
          ssn_last_4: stripe_account_params[:ssn_last_4],
          # phone: stripe_account_params[:business_tax_id],
            dob: {
              day: stripe_account_params[:dob_day],
              month: stripe_account_params[:dob_month],
              year: stripe_account_params[:dob_year]
            },
            address: {
              line1: stripe_account_params[:address_line1],
              city: stripe_account_params[:address_city],
              state: stripe_account_params[:address_state],
              postal_code: stripe_account_params[:address_postal]
            },
          },
        tos_acceptance: {
          date: Time.now.to_i,
          ip: request.remote_ip
        }

    })
....
....
respond_to do |format|
      @stripe_account = StripeAccount.find(params[:id])
      if @stripe_account.update(stripe_account_params)
        format.html { redirect_to @stripe_account, notice: 'Stripe account was successfully updated.' }
        format.json { render :show, status: :ok, location: @stripe_account }
      else
        format.html { render :edit }
        format.json { render json: @stripe_account.errors, status: :unprocessable_entity }
      end
    end
  end 
end

Согласно документам, я не вижу ничего, что я делаю неправильно ... https://stripe.com/docs/api/accounts/update

Моя правка в контроллере:

def edit
    @stripe_account_retrieve = Stripe::Account.retrieve((current_user || current_affiliate).stripe_account.acct_id)
    @stripe_account = StripeAccount.find(params[:id])
end

Когда я отправляю форму обновления (это впереди ошибки:)

Started PATCH "/stripe_accounts/27" for 127.0.0.1 at 2019-04-03 20:16:38 -0400
Processing by StripeAccountsController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"3//b+Exxxf9xxxtagFbsdzMxxxW+wxxxx899FDLfMb/RxxxxQA==", "stripe_account"=>{"first_name"=>"seller21114", "last_name"=>"last2124", "ssn_last_4"=>"2222", "dob_month"=>"1", "dob_day"=>"10", "dob_year"=>"1912", "address_line1"=>"111 st", "address_city"=>"san fran", "country"=>"US", "address_state"=>"IL", "address_postal"=>"90210", "tos"=>"1"}, "2"=>"", "button"=>"", "id"=>"27"}

Есть ли что-то, что я делаю не так с моим кодом?

1 Ответ

1 голос
/ 04 апреля 2019
Stripe::Account.update(
        @stripe_account_retrieve,... )

это должно быть

Stripe::Account.update(
        @stripe_account_retrieve[:id], ...)

т.е. передайте идентификатор полученного вами объекта Account, а не самого объекта.

Или просто передайте значение (current_user || current_affiliate).stripe_account.acct_id непосредственно Stripe::Account.update, поскольку вы, похоже, в настоящее время не используете восстановленную учетную запись для чего-либо еще, поэтому вы также можете сохранить себе запрос GET :)

...