Im using Stripe Connect Автономный для моего приложения. Пока пользователи могут успешно подключать свою учетную запись stripe, а платежи поступают в мою учетную запись stripe. Проблема в том, что мне нужно, чтобы пользователи могли оплачивать друг друга, и я сохраняю плату за подачу заявки.неинициализированная константа ChargesController :: CONNECTED_STRIPE_ACCOUNT_ID
На данный момент все платежи просто входят в мою учетную запись (платформ), плата за аннулирование не взимается, и конечный пользователь не получает никаких денег. после того, как я искал решения, я добавил заголовок полосы в мой контроллер зарядов и использовал метод заряда, как показано в документах Stripes. После того, как я отправить форму кредитной карты, я получаю эту ошибку:
uninitialized constant ChargesController::CONNECTED_STRIPE_ACCOUNT_ID
это в ответ на эту строку в моем контроллере зарядов:
Stripe::Account.retrieve(CONNECTED_STRIPE_ACCOUNT_ID)
Вот мой charges_controller.rb:
class ChargesController < ApplicationController
def new
end
def create
Stripe.api_key = "sk_test_1q2w3e4r5t6y...."
Stripe::Account.retrieve(CONNECTED_STRIPE_ACCOUNT_ID)
token = params[:stripeToken]
# Create a customer
Stripe::Customer.create(
{:description => "[email protected]"},
{:stripe_account => CONNECTED_STRIPE_ACCOUNT_ID}
)
# Create a Charge:
charge = Stripe::Charge.create({
:amount => 1000,
:currency => "cad",
:source => token,
:application_fee => 200 # amount in cents
}, :stripe_account => "{CONNECTED_STRIPE_ACCOUNT_ID}")
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_charge_path
end
end
инициализаторы/stripe.rb
Rails.configuration.stripe = {
:publishable_key => ENV['PUBLISHABLE_KEY'],
:secret_key => ENV['STRIPE_SECRET_KEY'],
:stripe_account => ENV['CONNECTED_STRIPE_ACCOUNT_ID']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
application.yml
development:
PUBLISHABLE_KEY: pk_test_###########
STRIPE_SECRET_KEY: sk_test_##########
STRIPE_CLIENT_ID: ca_###########
сборы/new.html.erb
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<script type="text/javascript">
Stripe.setPublishableKey('pk_test_###############');
$(function() {
var $form = $('#payment-form');
$form.submit(function(event) {
// Disable the submit button to prevent repeated clicks:
$form.find('.submit').prop('disabled', true);
// Request a token from Stripe:
Stripe.card.createToken($form, stripeResponseHandler);
// Prevent the form from being submitted:
return false;
});
});
function stripeResponseHandler(status, response) {
// Grab the form:
var $form = $('#payment-form');
if (response.error) { // Problem!
// Show the errors on the form:
$form.find('.payment-errors').text(response.error.message);
$form.find('.submit').prop('disabled', false); // Re-enable submission
} else { // Token was created!
// Get the token ID:
var token = response.id;
// Insert the token ID into the form so it gets submitted to the server:
$form.append($('<input type="hidden" name="stripeToken">').val(token));
// Submit the form:
$form.get(0).submit();
}
};
</script>
<%= form_tag charges_path, :id => 'payment-form' do %>
<article>
<% if flash[:error].present? %>
<div id="error_explanation">
<p><%= flash[:error] %></p>
</div>
<% end %>
<label class="amount">
<span>Amount: $10.00</span>
</label>
</article>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
data-description="A month's subscription"
data-amount="1000"
data-locale="auto"></script>
<% end %>
Я новичок в полоской Connect, и застрял в этой части на некоторое время. Сводит меня с ума. У меня есть кнопка «Оплатить сейчас» в профилях пользователей, которые должны позволять «Пользователь А» оплачивать «Пользовательский B», при этом присылая мне плату за заявку. Как исправить эту ошибку? Является ли это основной проблемой в моем платежном потоке (позволяя пользователям платить друг другу через кнопку в своем профиле)?
UPDATE:
CONNECTED_STRIPE_ACCOUNT_ID не был инициализирован, потому что он должен быть заменен с подключенными пользователями stripe_user_id. В моей базе данных это сохраняется как «uid». Итак, теперь проблема вызывает это в моем приложении.
UPDATE 2:
Когда пользователь подключает их опубликованию ключ, и Id пользователя полоса (UID в моей БД) сохраняются в моей базе данных. выглядит следующим образом:
name: "Testguy", publishable_key: "pk_test_6IgEWlj4y##########", provider: "stripe_connect", uid: "acct_19l9#########", access_code: "sk_test_vldP#########">]>
сейчас, как я могу назвать их ID пользователя в своем приложении?
Stripe::Account.retrieve(UID)
получает неинициализированную ошибку
uninitialized constant ChargesController::UID
'CONNECTED_STRIPE_ACCOUNT_ID' не определен .. вы можете инициализировать это при инициализации файла или на вашем контроллере (плохая идея), другим способом использовать файл среды и вызвать с помощью команды' ENV ['CONNECTED_STRIPE_ACCOUNT_ID'] ' –
Спасибо за ваш ответ. Я также немного новичок в рубинах/рельсах и легко запутался. Так, например, я бы включил инициализаторы/stripe.rb и добавил ... что? CONNECTED_STRIPE_ACCOUNT_ID принадлежит пользователю, правильно получающему средства в транзакции? или я не прав? В моем замешательстве я был убежден, что CONNECTED_STRIPE .... происходит только тогда, когда пользователь получает деньги, так как я могу определить это в инициализаторе? – ChrisJC2017
Вы можете прочитать это [с использованием файла среды в ruby on rails] (http://railsapps.github.io/rails-environment-variables.html) –