是与Braintrree进行的每笔交易所需的付款随机数?

时间:2015-08-20 22:34:31

标签: paypal transactions payment stripe-payments braintree

我正在开发一个类似市场的应用程序,它支持通过Braintree进行支付处理。但是,我的大部分交易都很小,而且考虑到Braintree的收费率,每次用户购买时我都不可能处理交易。

因此,我希望汇总后端的付款,并在累计支出达到$ X或Y天过后,向用户收费。

鉴于每个Braintree交易似乎都需要付款时间,这种方法是否可以实施?如果没有,有人可以提出替代解决方案吗?

非常感谢。

2 个答案:

答案 0 :(得分:5)

用一句话回答你的标题中的问题:否,每次使用Braintree的交易都不需要支付现金。

理论上,可以通过存储将买方的付款方式信息导入您的Braintree帐户,然后使用拱形付款方式收费。支付方法在Braintree中使用令牌进行存储。然后,付款方式令牌可用于付款而无需买方出席。

但是,买方必须向您支付付款方式。这通常由买方通过dropin表单或自定义表单向您提供他/她的付款方式信息来完成,该表单会向您返回一个nonce和信息。这要求买方在场。

我建议按照以下Braintree参考部分(https://developers.braintreepayments.com

的步骤进行操作
  • 交易(如何进行基本的一次性交易)
  • 客户
  • 信用卡
  • 交易(如何在没有买方存在的情况下进行交易)

PS,我说"理论上"在一开始,因为如果你能够/不能用跳马来做,取决于你的购买流程,以及你的买家是否愿意这样做。

PS再次,拱形支付方法令牌可以这种方式使用(在PHP中):

Braintree_Transaction::sale(array(
        'amount' => '10.00',
        'paymentMethodToken' => $the_payment_method_token,
        'options' => array(
                'submitForSettlement' => true
        )
));

答案 1 :(得分:1)

对于每个Braintree交易付款方式,不需要nonce。买方通过dropin表单或自定义表单提供他/她的信息,返回付款nonce方法,我们将信息发送给braintree并获取payment_method_token。写在python中。

@login_required
def clienttoken(request):
    result = braintree.Customer.create({
        "first_name": "XXXX",
        "last_name": "XXX",
        "company": "XXX",
        "email": "XXXX",
        "phone": "312.555.1234",
        "fax": "614.555.5678",
        "website": "www.example.com",
        "credit_card": {
            "cardholder_name": "XXX",
            "number": "XXXX",
            "expiration_date": "XXX",
            "options": {
                "verify_card": True,
            },
        },
    })
    client_token = braintree.ClientToken.generate({"customer_id": result.customer.id})
    request.session['customer_id'] = result.customer.id
    return render(request, "braintree/checkout.html", {"client_token": client_token})

@csrf_exempt
def checkout(request):    
    customer_id = request.session['customer_id']
    nonce = request.POST['payment_method_nonce']
    result = braintree.PaymentMethod.create({
        "customer_id": customer_id,
        "payment_method_nonce": nonce,
        "options": {
            "verify_card": True,
        }
    })
    return HttpResponse(result.payment_method.token)

我们对braintree的每笔交易使用payment_method_token。

result = braintree.Transaction.sale({
    "amount": "400",
    "payment_method_token": "token",
    "options": {
        "submit_for_settlement": "true",
     }
})