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

Posted TC风之翼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了国外braintree支付手段配置以及使用相关的知识,希望对你有一定的参考价值。

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

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 付款中搜索客户的有效订阅

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

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

PayPal 自适应支付与 Braintree 商家

Braintree 支付转账

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