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

第三方国外支付手段配置以及使用 1 交互逻辑介绍 1.1 app或web前端请求令牌从你的服务器来初始化客户端SDK。
1.2 服务器生成和发送端令牌回您的客户机与服务器SDK。
1.3 一旦初始化客户端SDK和客户提交支付信息,布伦特里SDK传达这一信息,返回一个临时的付款方法。
1.4 然后你发送临时的支付到你的服务器。
1.5 你的服务器程序接收临时的支付方式从客户端,然后使用SDK创建一个事务或执行详细指南的其他Braintree 函数。
国外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 } ); }

【国外braintree支付手段配置以及使用】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]; }];

    推荐阅读