我已成立布倫特裏支付與託管領域如下:布倫特裏託管領域新增CC
在JS文件:試圖建立新的客戶時
braintree.setup(client_token, "custom", {
id: "my-sample-form",
paypal: {
container: "paypal-container"
},
hostedFields: {
number: {
selector: '#my-credit-card-field',
},
cvv: {
selector: '#my-security-code-field',
},
expirationDate: {
selector: '#my-expiration-field',
},
postalCode: {
selector: '#my-postal-code-field',
}
},
});
我沒有問題,當他們需要以填補他們的CC細節,但是,當我嘗試建立現有客戶,JS文件失敗,原因是不存在的#my-credit-card-field
等。
在我new.html.erb,我有這樣的事情:
<% unless current_user.has_payment_info? %>
<div id="my-credit-card" readonly>**** **** **** <%= @last_4_number %></div>
<% else %>
<div id="my-credit-card-field"></div>
<div id="my-security-code-field"></div>
<div id="my-expiration-field"></div>
<div id="my-postal-code-field"></div>
<% end %>
因此,我會詢問cc客戶的詳細信息,現有客戶可以保存他們的付款方式信息。我在我的控制器是這樣的:
def create
@amount = params[:slider]
@token = Braintree::Customer.find(current_user.braintree_customer_id).credit_cards.first.token
unless current_user.has_payment_info?
@result = Braintree::Transaction.sale(
amount: @amount,
payment_method_nonce: params[:payment_method_nonce],
options: {
store_in_vault: true
})
else
@result = Braintree::Transaction.sale(
customer_id: current_user.braintree_customer_id,
amount: @amount,
payment_method_token: @token)
end
if @result.success?
#Some codes here
end
end
我的問題:
如果我把我的ID來my-credit-card-field
對現有客戶的形式,那麼他們將需要填寫的細節,由於hostedfields選擇JS。如果我沒有設置任何選擇器,那麼JS文件中存在錯誤。那麼是否有更好的方式爲已經設置付款方式的現有客戶創建表格?
感謝和任何幫助,將不勝感激!
謝謝,最後一件事 - 如何使用JavaScript的partials? – pyfl88
坦率地說,有很多方法,但對於這個簡單的東西,我會有一個只包含javascript的局部視圖(是的,存儲在app/views目錄中)。在該視圖中,您可以使用'javascript_tag'來執行此操作(http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-javascript_tag)。還有其他方法,比如在你的視圖中使用'content_for'或者使用替代佈局,但可能矯枉過正(除非你特別需要頭標籤中的JS(可疑),那麼你就需要'content_for')。 – GoGoCarl