2016-01-04 2 views
7

Я получаю клиентский токен с сервера, но при настройке вызова BraintreeFramgent будет указано: Ключ токенизации или клиентский токен недействительны..braintree Проблемы, связанные с интеграцией Android

после этого, если я нажму кнопку, тогда OnActivityResult рассмотрит RESULT_CANCELED и отобразит диалог.

Ниже кодекса

compile 'com.braintreepayments.api:braintree:2.+' 

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

Java файл

String clientToken; 
private BraintreeFragment mBraintreeFragment; 
private String mNonce; 

OnCreate

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // Warning, signature verification is disabled for this demo only, you should never 
     // do this as it opens a security hole 
     PayPalSignatureVerification.disableAppSwitchSignatureVerification(); 


     clienttoken(); 
    } 

clienttoken()

public void clienttoken() { 
     AsyncHttpClient client = new AsyncHttpClient(); 
     client.get("http://......&action=clientToken", new TextHttpResponseHandler() { 
      @Override 
      public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { 
      } 

      @Override 
      public void onSuccess(int statusCode, Header[] headers, String responseString) { 
       clientToken = responseString; 
       setup(); 
       //Toast.makeText(MainActivity.this, clientToken, Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 

установки()

private void setup() { 
     try { 

      mBraintreeFragment = BraintreeFragment.newInstance(this, clientToken); 

     } catch (InvalidArgumentException e) { 
      showDialog(e.getMessage()); 
     } 
    } 

Нажатие кнопки

public void launchDropIn(View v) { 
     startActivityForResult(onBraintreeSubmit().getIntent(this), DROP_IN_REQUEST); 
    } 

onBraintreeSubmit()

public PaymentRequest onBraintreeSubmit() { 
     PaymentRequest paymentRequest = new PaymentRequest() 
       .clientToken(clientToken) 
       .primaryDescription(getString(R.string.cart)) 
       .secondaryDescription("1 Item") 
       .amount("$1.00") 
       .submitButtonText(getString(R.string.buy)); 

     return paymentRequest; 
    } 

onActivityResult

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 



     if (resultCode == Activity.RESULT_OK) { 
      PaymentMethodNonce paymentMethodNonce = 
        data.getParcelableExtra(BraintreePaymentActivity.EXTRA_PAYMENT_METHOD_NONCE); 

      if (Settings.isThreeDSecureEnabled(this)) { 
       mLoading = ProgressDialog.show(this, getString(R.string.loading), 
         getString(R.string.loading), true, false); 
       ThreeDSecure.performVerification(mBraintreeFragment, mNonce, "1"); 
      } else { 
       mCreateTransactionButton.setEnabled(true); 
      } 
     } else if (resultCode != RESULT_CANCELED) { 
      safelyCloseLoadingView(); 
      showDialog(data.getStringExtra(BraintreePaymentActivity.EXTRA_ERROR_MESSAGE)); 
     } 
    } 

я совершенно новый с интеграцией Braintree в андроиде. В чем проблема. есть ли я где-то не так? или что еще просьба предложить.

ответ

2

Полное раскрытие информации: Я работаю в Braintree.

Предупреждение, которое вы получаете, указывает на то, что созданный вами токен клиента может быть неправильным. Проверьте свою интеграцию с образцом действительного токена клиента, данным here. Если это работает, пожалуйста, проверьте, чтобы ваши API-ключи для используемого вами шлюза Braintree (песочница или производство) были правильно настроены в вашем проекте. Вы можете найти свои ключи API с панели управления Braintree, выбрав Account> My User> View API Keys. Не размещайте ключи API на переполнение стека. Если у вас все еще есть проблемы с интеграцией или у вас возникнут дополнительные вопросы, свяжитесь с Braintree support.

Смежные вопросы