(Rails) 使用 Braintree v.zero SDK 进行贝宝支付
(Rails) PayPal payment with Braintree v.zero SDK
我正在开发一个 Rails 应用程序,它将有一个可修改的购物车,一个可选择的运费,完成一个简单的 PayPal 付款。根据 PayPal 开发者文档,Express Checkout 似乎是合适的,Rails 的简单方法可能是 Braintree 的 v.zero SDK.
根据 PayPal client-side implementation (JS v2 SDK) 的 Braintree 文档,我将有一个用于 PayPal 按钮的容器和一个包含所有选项的 javascript 以及提供的客户端令牌:
<div id="paypal-container"></div>
<script type="text/javascript">
braintree.setup("CLIENT-TOKEN-FROM-SERVER", "custom", {
paypal: {
container: "paypal-container",
},
onPaymentMethodReceived: function (obj) {
doSomethingWithTheNonce(obj.nonce);
}
});
</script>
提交这个按钮应该让我从braintree得到一个payment_method_nonce,调用一个服务器端方法来填写必要的支付信息(payment_method_nonce、金额等),最后完成交易.比如在 server-side implementation docs for ruby:
def checkout
result = Braintree::Transaction.sale(
:amount => "10.00",
:payment_method_nonce => params[:payment_method_nonce],
:order_id => "Mapped to PayPal Invoice Number",
:options => {
:paypal => {
:custom_field => "PayPal custom field",
:description => "Description for PayPal email receipt",
},
}
)
if result.success?
"Success ID: #{result.transaction.id}"
else
result.message
end
end
我想,我基本上理解这个过程,但我不明白 javascript 将如何路由到我的服务器端方法。有了信用卡表格,我可以将 post 的目标定义为 /checkout
,并让 /checkout
路由到我的结帐方法。但仅使用 PayPal,如何从我的 PayPal 按钮路由到我的结账方式?
谢谢
完全披露:我在 Braintree 工作。如果您有任何其他问题,请随时联系 support.
Braintree 的 javascript SDK 会生成一个新的 payment_method_nonce
,但它不会自动将其发送到您的服务器。该过程的这一部分由您决定。您可以通过实施 onPaymentMethodReceived
callback`:
来访问和使用新的随机数
<script type="text/javascript">
braintree.setup("CLIENT-TOKEN-FROM-SERVER", "custom", {
paypal: {
container: "paypal-container",
},
onPaymentMethodReceived: function (obj) {
// you may submit the nonce to your server here
doSomethingWithTheNonce(obj.nonce);
}
});
</script>
那个函数 doSomethingWithTheNonce
是一个占位符,表示这是您处理随机数的地方。您可以像您所想的那样,将 post 设置到 /checkout
这样的端点。您还可以在用户稍后提交的表单中设置随机数,然后在提交时从表单中提取随机数。
我正在开发一个 Rails 应用程序,它将有一个可修改的购物车,一个可选择的运费,完成一个简单的 PayPal 付款。根据 PayPal 开发者文档,Express Checkout 似乎是合适的,Rails 的简单方法可能是 Braintree 的 v.zero SDK.
根据 PayPal client-side implementation (JS v2 SDK) 的 Braintree 文档,我将有一个用于 PayPal 按钮的容器和一个包含所有选项的 javascript 以及提供的客户端令牌:
<div id="paypal-container"></div>
<script type="text/javascript">
braintree.setup("CLIENT-TOKEN-FROM-SERVER", "custom", {
paypal: {
container: "paypal-container",
},
onPaymentMethodReceived: function (obj) {
doSomethingWithTheNonce(obj.nonce);
}
});
</script>
提交这个按钮应该让我从braintree得到一个payment_method_nonce,调用一个服务器端方法来填写必要的支付信息(payment_method_nonce、金额等),最后完成交易.比如在 server-side implementation docs for ruby:
def checkout
result = Braintree::Transaction.sale(
:amount => "10.00",
:payment_method_nonce => params[:payment_method_nonce],
:order_id => "Mapped to PayPal Invoice Number",
:options => {
:paypal => {
:custom_field => "PayPal custom field",
:description => "Description for PayPal email receipt",
},
}
)
if result.success?
"Success ID: #{result.transaction.id}"
else
result.message
end
end
我想,我基本上理解这个过程,但我不明白 javascript 将如何路由到我的服务器端方法。有了信用卡表格,我可以将 post 的目标定义为 /checkout
,并让 /checkout
路由到我的结帐方法。但仅使用 PayPal,如何从我的 PayPal 按钮路由到我的结账方式?
谢谢
完全披露:我在 Braintree 工作。如果您有任何其他问题,请随时联系 support.
Braintree 的 javascript SDK 会生成一个新的 payment_method_nonce
,但它不会自动将其发送到您的服务器。该过程的这一部分由您决定。您可以通过实施 onPaymentMethodReceived
callback`:
<script type="text/javascript">
braintree.setup("CLIENT-TOKEN-FROM-SERVER", "custom", {
paypal: {
container: "paypal-container",
},
onPaymentMethodReceived: function (obj) {
// you may submit the nonce to your server here
doSomethingWithTheNonce(obj.nonce);
}
});
</script>
那个函数 doSomethingWithTheNonce
是一个占位符,表示这是您处理随机数的地方。您可以像您所想的那样,将 post 设置到 /checkout
这样的端点。您还可以在用户稍后提交的表单中设置随机数,然后在提交时从表单中提取随机数。