使用 Braintree DropUI 将 PayPal 帐户链接到保险库的正确方法

Posted

技术标签:

【中文标题】使用 Braintree DropUI 将 PayPal 帐户链接到保险库的正确方法【英文标题】:Correct way to link PayPal Accounts to vault with Braintree DropUI 【发布时间】:2015-09-13 19:09:07 【问题描述】:

我有以下控制器:

class PaymentsController < ApplicationController
    before_action :authenticate_user!, only: [:new]

    def new
        gon.client_token = generate_client_token
    end

    def create
        @result = Braintree::Transaction.sale(
                            amount: 60,
                            payment_method_nonce: params[:payment_method_nonce])
        if @result.success?
            puts @result.transaction.payment_instrument_type
            flash[:notice] = 'Yes, transaction completed'
        else
            flash[:alert] = "Something went wrong while processing your transaction. Please try again!"
      gon.client_token = generate_client_token
            render :new
        end
    end

    private

    def generate_client_token
        Braintree::ClientToken.generate(customer_id: current_user.braintree_customer_id)
    end
end

使用上面的代码,我正在测试将一个 paypal 帐户链接到特定客户的保险库。但是它不会链接。我检查了文档参考,在我看来它不应该是任何额外的调整。

有什么提示吗?

【问题讨论】:

嘿克里斯;我在 Braintree 的 Pay with PayPal 团队工作。您介意发布您用于初始化 Dropin UI 的代码以及您使用的 Braintree.js 版本吗?我可以帮你解决问题。 【参考方案1】:

我在 Braintree 上使用 python/javascript 进行 api 开发。您需要为交易创建braintree token。如果您有customer_id,您可以生成braintree 令牌。您可以按照以下代码创建令牌:

def checkout(request):
    api_token = request.session['token']
    nonce = request.POST['payment_method_nonce']
    customer = Customer.objects.get(user=request.user)
    # With this the PaymentMethod will be associated with the Customer
    result = braintree.PaymentMethod.create(
        "customer_id": customer.customer_id,
        "payment_method_nonce": nonce
    )
    token = result.payment_method.token
    print token
    # you the BT token to charge the user
    result = braintree.Transaction.sale(
        "amount": 10,
        "payment_method_token": token,
        "options": 'submit_for_settlement': True
    )
    print result.transaction.id

【讨论】:

以上是关于使用 Braintree DropUI 将 PayPal 帐户链接到保险库的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

Braintree - 插入式 UI - Apple Pay - Swift 3

Braintree Google Pay 沙盒打开实时域

Braintree Apple Sandbox Pay 扫描指纹 iOS 后显示付款未完成错误

Braintree v.Zero Drop In UI 是不是支持 Apple Pay?

Apple Pay - 获取完整的送货地址(包含“addressLines”)

在 Heroku 中使用 Braintree 和 Django 应用程序