(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 这样的端点。您还可以在用户稍后提交的表单中设置随机数,然后在提交时从表单中提取随机数。