2016-01-04 15 views
7

Ich erhalte Client-Token vom Server, aber wenn Anruf Setup BraintreeFramgent es sagt Tokenization Key oder Client-Token war ungültig..braintree Integration verursacht Probleme Android

nach, wenn ich dann auf Button klicken OnActivityResult Betrachten RESULT_CANCELED und zeigen Dialog.

Below-Code

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

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

Java-Datei

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(); 
      } 
     }); 
    } 

Setup()

private void setup() { 
     try { 

      mBraintreeFragment = BraintreeFragment.newInstance(this, clientToken); 

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

Knopf klicken

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)); 
     } 
    } 

Ich bin total neu mit Braintree Integration in Android. was ist das Problem. Gibt es da irgendwas falsch? oder was sonst bitte vorschlagen.

Antwort

2

Volle Offenlegung: Ich arbeite in Braintree.

Die Warnung, die Sie erhalten, weist darauf hin, dass das von Ihnen generierte Client-Token möglicherweise falsch ist. Testen Sie Ihre Integration mit dem gültigen Beispiel-Client-Token here. Wenn das funktioniert, überprüfen Sie bitte, ob Ihre API-Schlüssel für das Braintree-Gateway, das Sie verwenden (Sandbox oder Produktion), in Ihrem Projekt korrekt eingerichtet sind. Sie können Ihre API-Schlüssel im Braintree-Steuerungsfeld finden, indem Sie Konto> Mein Benutzer> API-Schlüssel anzeigen wählen. Veröffentlichen Sie Ihre API-Schlüssel nicht in Stack Overflow. Wenn Sie immer noch Probleme mit Ihrer Integration haben oder weitere Fragen haben, wenden Sie sich bitte an Braintree support.