ich in der Lage bin das Token zu erhalten mit Ihrer eigenen Kreditkarte Form bauen zu erstellen und Karten Detail zu validieren und erhält Token folgenden Code verwenden,Wie man Zahlung Gateway mit Stripe in Android Pay erstellen?
Card card=new Card(cardno,expmon,expyer,cvv);
card.validateNumber();
card.validateCVC();
new Stripe().createToken(card,PUBLISHABLE_KEY,
new TokenCallback() {
public void onSuccess(Token token) {
// Send token to your own web service
}
public void onError(Exception error) {
Toast.makeText(MainActivity.this, error.getLocalizedMessage(),
Toast.LENGTH_LONG).show();
}
}
);
, aber ich weiß nicht, wie Android Pay verwenden, um Ihre zugreifen gespeicherten Karteninformationen im android Pay Kunden Streifen verwenden, verwende ich folgenden Code, aber ich bin nicht Token
Class Androidpay extends FragmentActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
// You will need to use your live API key even while testing
public static final String PUBLISHABLE_KEY = "pk_test_zbtcr8iFQrLNU3zu1";
// Unique identifiers for asynchronous requests:
private static final int LOAD_MASKED_WALLET_REQUEST_CODE = 1000;
private static final int LOAD_FULL_WALLET_REQUEST_CODE = 1001;
private GoogleApiClient googleApiClient;
private SupportWalletFragment walletFragment;
public static final int mEnvironment = WalletConstants.ENVIRONMENT_TEST;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.androidpay);
googleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Wallet.API, new Wallet.WalletOptions.Builder()
.setEnvironment(WalletConstants.ENVIRONMENT_TEST)
.setTheme(WalletConstants.THEME_LIGHT)
.build())
.build();
Wallet.Payments.isReadyToPay(googleApiClient).setResultCallback(
new ResultCallback<BooleanResult>() {
@Override
public void onResult(@NonNull BooleanResult booleanResult) {
if (booleanResult.getStatus().isSuccess()) {
if (booleanResult.getValue()) {
showAndroidPay();
} else {
// Hide Android Pay buttons, show a message that Android Pay
// cannot be used yet, and display a traditional checkout button
}
} else {
// Error making isReadyToPay call
// Log.e(TAG, "isReadyToPay:" + booleanResult.getStatus());
}
}
});
}
public void showAndroidPay()
{
setContentView(R.layout.activity_main);
walletFragment =
(SupportWalletFragment) getSupportFragmentManager().findFragmentById(R.id.wallet_fragment);
MaskedWalletRequest maskedWalletRequest = MaskedWalletRequest.newBuilder()
// Request credit card tokenization with Stripe by specifying tokenization parameters:
.setPaymentMethodTokenizationParameters(PaymentMethodTokenizationParameters.newBuilder()
.setPaymentMethodTokenizationType(PaymentMethodTokenizationType.PAYMENT_GATEWAY)
.addParameter("gateway", "stripe")
.addParameter("stripe:publishableKey", PUBLISHABLE_KEY)
.addParameter("stripe:version", com.stripe.Stripe.VERSION)
.build())
// You want the shipping address:
.setShippingAddressRequired(true)
// Price set as a decimal:
.setEstimatedTotalPrice("20.00")
.setCurrencyCode("USD")
.build();
// Set the parameters:
WalletFragmentInitParams initParams = WalletFragmentInitParams.newBuilder()
.setMaskedWalletRequest(maskedWalletRequest)
.setMaskedWalletRequestCode(LOAD_MASKED_WALLET_REQUEST_CODE)
.build();
// Initialize the fragment:
walletFragment.initialize(initParams);
}
public void onStart() {
super.onStart();
googleApiClient.connect();
}
public void onStop() {
super.onStop();
googleApiClient.disconnect();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == LOAD_MASKED_WALLET_REQUEST_CODE) { // Unique, identifying constant
if (resultCode == Activity.RESULT_OK) {
MaskedWallet maskedWallet = data.getParcelableExtra(WalletConstants.EXTRA_MASKED_WALLET);
FullWalletRequest fullWalletRequest = FullWalletRequest.newBuilder()
.setCart(Cart.newBuilder()
.setCurrencyCode("USD")
.setTotalPrice("20.00")
.addLineItem(LineItem.newBuilder() // Identify item being purchased
.setCurrencyCode("USD")
.setQuantity("1")
.setDescription("Premium Llama Food")
.setTotalPrice("20.00")
.setUnitPrice("20.00")
.build())
.build())
.setGoogleTransactionId(maskedWallet.getGoogleTransactionId())
.build();
Wallet.Payments.loadFullWallet(googleApiClient, fullWalletRequest, LOAD_FULL_WALLET_REQUEST_CODE);
}
} else if (requestCode == LOAD_FULL_WALLET_REQUEST_CODE)
{
if (resultCode == Activity.RESULT_OK) {
FullWallet fullWallet = data.getParcelableExtra(WalletConstants.EXTRA_FULL_WALLET);
String tokenJSON = fullWallet.getPaymentMethodToken().getToken();
//A token will only be returned in production mode,
//i.e. WalletConstants.ENVIRONMENT_PRODUCTION
if (mEnvironment == WalletConstants.ENVIRONMENT_PRODUCTION)
{
com.stripe.model.Token token = com.stripe.model.Token.GSON.fromJson(
tokenJSON, com.stripe.model.Token.class);
// TODO: send token to your server
Toast.makeText(Androidpay.this,"ready to send token"+token.getId()+token.getAmount(),Toast.LENGTH_SHORT).show();
}
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {}
@Override
public void onConnected(Bundle bundle) {}
@Override
public void onConnectionSuspended(int i) {}
}
Haben Sie eine Lösung bekommen? Ich benutze den gleichen Code, aber ich habe die Kontrolle in folgenden Zustand // Hide Android Pay-Tasten, zeigen Sie eine Nachricht, dass Android Pay // kann noch nicht verwendet werden, und zeigen Sie eine traditionelle Checkout-Taste –