私のアプリケーションにStripe Connectスタンドアロンを使用しています。これまでのところ、ユーザーはストライプアカウントを正常に接続でき、支払いはストライプアカウントに届きます。問題は、私はお互いにお金を支払うことができるようにユーザーが必要であり、私は申請料を保持しています。未初期化定数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 %>
私はストライプの接続に新たなんだ、としばらくの間、この部分に貼付されています。私を狂わせる私は「ユーザーA」が「ユーザーB」を支払うことを許可するはずのユーザープロファイルに「今支払う」ボタンを持っていますが、私に申請料金を送ってください。このエラーを修正するにはどうすればよいですか?これは私の支払いフローの主な問題ですか(ユーザーが自分のプロフィールのボタンを使ってお互いにお金を払うことを許可していますか?
UPDATE:それは接続しているユーザに置き換えるstripe_user_idしなければならないため
CONNECTED_STRIPE_ACCOUNT_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'] ' –
でお返事ありがとうございます。私はまた、Ruby/Railに若干新しくて、簡単に混乱します。例えば、私はinitializers/stripe.rbに行き、add..what? CONNECTED_STRIPE_ACCOUNT_IDは、取引で資金を受け取ったユーザーに属していますか?または私は間違っていますか?私の混乱の中で私はCONNECTED_STRIPE ....はユーザーがお金を受け取っているときにのみ発生すると信じられているので、どうすれば初期化子で定義できますか? – ChrisJC2017
あなたはこれを読むことができます[ruby on railsの環境ファイルを使用して](http://railsapps.github.io/rails-environment-variables.html) –