国外braintree支付手段配置以及使用

TC风之翼 TC风之翼     2022-12-09     537

关键词:

第三方国外支付手段配置以及使用

1 交互逻辑介绍

1.1 app或web前端请求令牌从你的服务器来初始化客户端SDK。
1.2 服务器生成和发送端令牌回您的客户机与服务器SDK。
1.3 一旦初始化客户端SDK和客户提交支付信息,布伦特里SDK传达这一信息,返回一个临时的付款方法。
1.4 然后你发送临时的支付到你的服务器。
1.5 你的服务器程序接收临时的支付方式从客户端,然后使用SDK创建一个事务或执行详细指南的其他Braintree 函数。

图1.1
逻辑交互

2 客户端配置以及相关执行操作的代码如下

2.1 build.gradle的配置

dependencies 
  compile 'com.braintreepayments.api:braintree:2.+'
  compile 'com.braintreepayments.api:drop-in:2.+'

2.2 获取客户端的token
服务器负责生成客户端令牌,它包含授权和配置细节,你的客户端需要初始化客户端SDK。
从服务器请求客户端令牌,然后初始化Braintree 和现在drop-in UI(这个示例使用Android异步Http客户端从服务器请求客户端令牌-适应您自己的设置)。

AsyncHttpClient client = new AsyncHttpClient();
client.get("https://your-server/client_token", new TextHttpResponseHandler() 
    @Override
    public void onSuccess(int statusCode, Header[] headers, String clientToken) 
        this.clientToken = clientToken;
    
);

2.3 尝试执行令牌demo

你应该常获得一个新客户经令牌,至少经常重启应用程序。最好的经验,你应该在阻止用户交互之前开始这个网络操作。您必须每个用户每次结账会话(checkout session)生成一个客户端令牌在服务器上。你应该常获得一个新客户经令牌,至少经常重启应用程序。最好的经验,你应该在阻止用户交互之前开始这个网络操作。您必须每个用户每次结账会话(checkout session)生成一个客户端令牌在服务器上。我们提供的端点在本例中仅用于演示目的。

public void onBraintreeSubmit(View v) 
  PaymentRequest paymentRequest = new PaymentRequest()
      .clientToken(eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiIyODQxYzU0MjRmZTQ4YTYzMGYxMjJjYzBhMTAyYzQyMWVlMjViN2YzYWZiYzAxYzlkZmE4MDg3OTFhY2FkODRjfGNyZWF0ZWRfYXQ9MjAxNS0xMS0yM1QwNjo1MDozNS44NzAzODAwNDUrMDAwMFx1MDAyNm1lcmNoYW50X2lkPTM0OHBrOWNnZjNiZ3l3MmJcdTAwMjZwdWJsaWNfa2V5PTJuMjQ3ZHY4OWJxOXZtcHIiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvMzQ4cGs5Y2dmM2JneXcyYi9jbGllbnRfYXBpL3YxL2NvbmZpZ3VyYXRpb24iLCJjaGFsbGVuZ2VzIjpbXSwiZW52aXJvbm1lbnQiOiJzYW5kYm94IiwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzLzM0OHBrOWNnZjNiZ3l3MmIvY2xpZW50X2FwaSIsImFzc2V0c1VybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXV0aFVybCI6Imh0dHBzOi8vYXV0aC52ZW5tby5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIiwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vY2xpZW50LWFuYWx5dGljcy5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIn0sInRocmVlRFNlY3VyZUVuYWJsZWQiOnRydWUsInRocmVlRFNlY3VyZSI6eyJsb29rdXBVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvMzQ4cGs5Y2dmM2JneXcyYi90aHJlZV9kX3NlY3VyZS9sb29rdXAifSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiQWNtZSBXaWRnZXRzLCBMdGQuIChTYW5kYm94KSIsImNsaWVudElkIjpudWxsLCJwcml2YWN5VXJsIjoiaHR0cDovL2V4YW1wbGUuY29tL3BwIiwidXNlckFncmVlbWVudFVybCI6Imh0dHA6Ly9leGFtcGxlLmNvbS90b3MiLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjp0cnVlLCJlbnZpcm9ubWVudCI6Im9mZmxpbmUiLCJ1bnZldHRlZE1lcmNoYW50IjpmYWxzZSwiYnJhaW50cmVlQ2xpZW50SWQiOiJtYXN0ZXJjbGllbnQzIiwiYmlsbGluZ0FncmVlbWVudHNFbmFibGVkIjp0cnVlLCJtZXJjaGFudEFjY291bnRJZCI6ImFjbWV3aWRnZXRzbHRkc2FuZGJveCIsImN1cnJlbmN5SXNvQ29kZSI6IlVTRCJ9LCJjb2luYmFzZUVuYWJsZWQiOmZhbHNlLCJtZXJjaGFudElkIjoiMzQ4cGs5Y2dmM2JneXcyYiIsInZlbm1vIjoib2ZmIn0=);
  startActivityForResult(paymentRequest.getIntent(this), REQUEST_CODE);

2.4 UI界面环节的使用
此时,您已经准备好从你的客户那里收集付款细节。
Drop-in是最简单的方法开始。它提供了一个完全成熟的开箱即用的支付体验。你也可以选择创建一个自定义用户界面,然后标记直接支付方式的细节。
如何开始使用Drop-in:当你的用户提供的付款信息, 你需要重载onActivityResult去获得这个响应,您的应用程序代码调用将在此收到临时的支付方式,:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
  if (requestCode == REQUEST_CODE) 
    if (resultCode == Activity.RESULT_OK) 
      PaymentMethodNonce paymentMethodNonce = data.getParcelableExtra(
        BraintreePaymentActivity.EXTRA_PAYMENT_METHOD_NONCE
      );
      String nonce = paymentMethodNonce.getNonce();
      // Send the nonce to your server.
    
  

2.5 发送支付方式到你的服务端
发送临时产生的支付方式 到服务器(再一次,这个示例使用Android异步Http客户端-适应您自己的设置):

void postNonceToServer(String nonce) 
  AsyncHttpClient client = new AsyncHttpClient();
  RequestParams params = new RequestParams();
  params.put("payment_method_nonce", nonce);
client.post("http://your-server/payment-methods", params,
    new AsyncHttpResponseHandler() 
      // Your implementation here
    
  );

2.6 最后一点
你应该有一个工作中的客户端(client-side)检验流程工作。当你的用户提供支付细节,你收到临时的付款方法和发送给你的服务器。
接下来,您的服务器通过使用临时的支付方式创建一个事务来关闭循环。
3 创建服务端:
服务端的配置需要一个沙箱账号,以及java lib库或者使用maven引用等等。此外,客户端的token由服务端生成。服务器负责生成客户端令牌,其中包含客户端用来初始化客户端SDK和Braintree交互所需要的所有授权和配置信息。

Ps:如果混淆了代码请输入下面规则:

-keep class com.braintree.** *; 
-keep class com.braintreegateway.** *; 
-dontwarn com.google.android.gms.**
-dontwarn com.devicecollector.**

android demo部分代码示例
http://download.csdn.net/detail/u010716109/9588697

IOS部分示例:

[self createOrder:^(NSString *orderNo) 
            Log(@"ordorNo = %@",orderNo);
            self.orderNo=orderNo;
            self.dataCollector = [[BTDataCollector alloc]
                                  initWithEnvironment:BTDataCollectorEnvironmentProduction];
            BTDropInViewController *dropInViewController = [[BTDropInViewController alloc]
                                                            initWithAPIClient:self.braintreeClient];
            BTUI *btUI = [BTUI braintreeTheme];
            dropInViewController.theme=btUI;

            dropInViewController.delegate = self;

            dropInViewController.paymentRequest.summaryTitle=self.address.name;
            dropInViewController.paymentRequest.summaryDescription=self.address.addr;
            dropInViewController.paymentRequest.displayAmount=[NSString stringWithFormat:@"%@ %.2f",XFLOCALIZATION(@"TOTAL:"),self.orderGroups.allPrice];
            dropInViewController.paymentRequest.currencyCode=[TTSettingTool getSaveCurrencyId];

            [self.navigationController pushViewController:dropInViewController animated:YES];
        ];

如何使用 Braintree 沙箱测试贝宝支付

】如何使用Braintree沙箱测试贝宝支付【英文标题】:Howtotestpaypalpaymentusingbraintreesandbox【发布时间】:2017-05-0618:38:00【问题描述】:我在我的应用程序中使用Braintree进行付款(信用卡和Paypal)。我正在使用自定义用户界面。当点... 查看详情

在 Braintree 付款中搜索客户的有效订阅

】在Braintree付款中搜索客户的有效订阅【英文标题】:searchforactivesubscriptionforacustomerinBraintreepayments【发布时间】:2018-08-1023:41:36【问题描述】:在我的网站中,我使用Braintree支付网关进行卡支付和PayPal交易以及自动续订订阅。... 查看详情

Braintree 支付转账

】Braintree支付转账【英文标题】:BraintreePaymentTransfer【发布时间】:2018-10-2609:46:35【问题描述】:我正在开发一个C2C门户网站,卖家将发布他们的产品,其他人可以购买。我计划使用Braintree进行付款流程。现在一旦付款完成,系... 查看详情

PayPal 自适应支付与 Braintree 商家

】PayPal自适应支付与Braintree商家【英文标题】:PayPalAdaptivePaymentsvsBraintreeMerchants【发布时间】:2017-08-0910:54:36【问题描述】:考虑到这种情况,哪个更好-使用PayPal自适应支付进行并行支付处理和集成,或者使用Braintree商家帐户... 查看详情

Braintree 支付集成:使用客户端授权令牌化密钥

】Braintree支付集成:使用客户端授权令牌化密钥【英文标题】:Braintreepaymentintegration:UsingClientAuthorizationTokenizationKeys【发布时间】:2019-12-2512:11:51【问题描述】:我在我的应用中使用Braintree付款。使用服务器的随机数方法,this方... 查看详情

如何在 iOS 中使用 Braintree 实现支付应用

】如何在iOS中使用Braintree实现支付应用【英文标题】:HowtoimplementapaymentappwithBraintreeiniOS【发布时间】:2017-04-2118:19:16【问题描述】:我的问题是:我创建了一个应该接受信用卡/借记卡的应用程序。我在iOS中使用Braintree4SDK和swift... 查看详情

Braintree 支付网关 - 与 Classic ASP 集成

】Braintree支付网关-与ClassicASP集成【英文标题】:BraintreePaymentGateway-integratewithClassicASP【发布时间】:2016-05-0117:22:43【问题描述】:我有一个想要使用PaypalBraintree支付网关(目前使用BarclaysePDQ)的旧版ClassicASP网站。我注意到没有... 查看详情

如何在flutter中获得braintree支付网关的nonce?

】如何在flutter中获得braintree支付网关的nonce?【英文标题】:Howtogetnonceforbraintreepaymentgatewayinflutter?【发布时间】:2020-12-1601:36:39【问题描述】:我在我的Flutter应用中使用BrainTree支付网关,并使用这个库https://pub.dev/packages/braintree... 查看详情

在 iOS 应用中使用 Braintree 支付 api

】在iOS应用中使用Braintree支付api【英文标题】:UseBraintreepaymentapiiniOSapp【发布时间】:2013-12-2319:22:18【问题描述】:我想在我的iOS应用中使用BraintreeAPI。我的应用用于出租目的,即请求者用户必须向他想要出租的资产的所有者付... 查看详情

Braintree 支付网关 - 获取客户的订阅详情

】Braintree支付网关-获取客户的订阅详情【英文标题】:Braintreepaymentgateway-Getcustomer\'ssubscriptionsdetails【发布时间】:2018-01-0910:05:54【问题描述】:我在我的Rails应用程序中使用Braintree支付网关。我想知道是否可以从中检索客户的... 查看详情

Braintree 支付网关 - 获取客户信息

】Braintree支付网关-获取客户信息【英文标题】:Braintreepaymentgateway-Getcustomerinformation【发布时间】:2013-05-1217:19:11【问题描述】:我在我的Web应用程序中使用Braintree支付网关。我想知道我是否可以从中获取用户信息。我无法保存... 查看详情

Braintree 拆分支付贝宝

】Braintree拆分支付贝宝【英文标题】:Braintreesplitpaymentpaypal【发布时间】:2017-09-2508:07:38【问题描述】:我需要验证是否有任何选项可以在Braintree中使用贝宝将付款拆分到两个不同的帐户,例如如果客户付款,它将发送到两个不... 查看详情

使用 Braintree SDK 在 Android 中支付 PayPal

】使用BraintreeSDK在Android中支付PayPal【英文标题】:PayPalpaymentsinAndroidusingBraintreeSDK【发布时间】:2021-02-1016:02:23【问题描述】:我正在我的Android应用程序中集成PayPal付款。不能使用PayPalAndroidSDK,因为它已被弃用。Docs根据文档,B... 查看详情

在braintree付款中搜索客户的有效订阅(代码片段)

在我的网站上,我使用Braintree支付网关进行卡支付和PayPal交易以及自动续订订阅。我正在创建客户并将卡存储在Braintree保险库中以进行自动续订..也使用与该客户PayPal交易相同的客户ID(如果发生)在进行付款之前,只需要检查... 查看详情

(Rails) 使用 Braintree v.zero SDK 进行 PayPal 支付

】(Rails)使用Braintreev.zeroSDK进行PayPal支付【英文标题】:(Rails)PayPalpaymentwithBraintreev.zeroSDK【发布时间】:2017-02-2412:34:10【问题描述】:我正在开发一款Rails应用程序,该应用程序将具有可修改的购物车、可选择的运费,并通过简单... 查看详情

管理支付与订单

...付网关有很多可供选择,我们将要集成的是叫做"Braintree"的支付网关。Braintree使用较为广泛,是Uber和Airbnb的支付服务提供商。Braintree提供了一套API用于支持信用卡,PayPal,AndroidPay和ApplePay等支付方式,官... 查看详情

管理支付与订单

...付网关有很多可供选择,我们将要集成的是叫做"Braintree"的支付网关。Braintree使用较为广泛,是Uber和Airbnb的支付服务提供商。Braintree提供了一套API用于支持信用卡,PayPal,AndroidPay和ApplePay等支付方式,官... 查看详情

如何获取 Braintree 支付客户端令牌?

】如何获取Braintree支付客户端令牌?【英文标题】:HowtogetBraintreepaymentclienttoken?【发布时间】:2019-03-2614:31:42【问题描述】:我创建沙盒账户登录成功,但找不到客户端令牌。enterimagedescriptionhere【问题讨论】:【参考方案1】:... 查看详情