2014-10-20 13 views
26

Nella mia app, ho bisogno di implementare un'offerta di risparmio dalla mia app a Google Wallet. Ho trovato questo tutorial: https://developers.google.com/wallet/objects/savetowalletnative#4_create_an_object, ma quando ho provato a implementarlo, ho riscontrato un problema. C'è il codice della pagina:Salvataggio dell'offerta a Google Wallet

OfferWalletObject wob = OfferWalletObject 
     .newBuilder()... 

Ma il mio ambiente dice che la classe non ha questo metodo. Non c'è niente di scritto su questo metodo in questa pagina: https://developer.android.com/reference/com/google/android/gms/wallet/OfferWalletObject.html

Qualcuno può aiutare a risolvere questo problema o dire altro metodo per salvare l'offerta nel portafoglio Google.

+2

Hai trovato la soluzione a questo problema? Sto avendo lo stesso problema – JpCrow

+0

@JpCrow, no, scusa – Dima

+0

Qualcuno ha importato con successo CreateWalletObjectsRequest? –

risposta

-1

Ho integrato Google Wallet con successo, da questo video. Link

public class MainActivity extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks, 
GoogleApiClient.OnConnectionFailedListener{ 


private GoogleApiClient mGoogleApiClient; 
private SupportWalletFragment mWalletFregment; 
private SupportWalletFragment mXmlWalletFregment; 

private MaskedWallet mMaskedWallet; 
private FullWallet mFullWallet; 

public static final int MASKED_WALLET_REQUEST_CODE=888; 
public static final int FULL_WALLET_REQUEST_CODE=889; 
public static final String WALLET_FRAGMENT_ID="wallet_fragment"; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    mWalletFregment=(SupportWalletFragment) getSupportFragmentManager() 
      .findFragmentByTag(WALLET_FRAGMENT_ID); 

    WalletFragmentInitParams startParams; 
    WalletFragmentInitParams.Builder startParamsBuilder=WalletFragmentInitParams.newBuilder() 
      .setMaskedWalletRequest(generateMaskedwalletRequest()) 
      .setMaskedWalletRequestCode(MASKED_WALLET_REQUEST_CODE); 

    startParams=startParamsBuilder.build(); 

    Log.e("FREGMENT",""+mWalletFregment); 
    if(mWalletFregment==null){ 
     WalletFragmentStyle walletFragmentStyle=new WalletFragmentStyle() 
       .setBuyButtonText(BuyButtonText.BUY_WITH_GOOGLE) 
       .setBuyButtonWidth(Dimension.MATCH_PARENT); 

     WalletFragmentOptions walletFragmentOptions=WalletFragmentOptions.newBuilder() 
       .setEnvironment(WalletConstants.ENVIRONMENT_SANDBOX) 
       .setFragmentStyle(walletFragmentStyle) 
       .setTheme(WalletConstants.THEME_HOLO_LIGHT) 
       .setMode(WalletFragmentMode.BUY_BUTTON) 
       .build(); 

     mWalletFregment=SupportWalletFragment.newInstance(walletFragmentOptions); 
     mWalletFregment.initialize(startParams); 

    } 
    Log.e("FREGMENT",""+mWalletFregment); 
    getSupportFragmentManager().beginTransaction() 
      .replace(R.id.wallet_button_holder,mWalletFregment,WALLET_FRAGMENT_ID) 
      .commit(); 

    mGoogleApiClient=new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Wallet.API,new Wallet.WalletOptions.Builder() 
         .setEnvironment(WalletConstants.ENVIRONMENT_SANDBOX) 
         .setTheme(WalletConstants.THEME_HOLO_LIGHT) 
         .build()) 
      .build(); 

    setContentView(R.layout.activity_main); 
} 


@Override 
protected void onStart() { 
    mGoogleApiClient.connect(); 
    super.onStart(); 
} 

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

    switch (requestCode){ 
     case MASKED_WALLET_REQUEST_CODE : 
      switch (resultCode){ 
       case Activity.RESULT_OK : 
        mMaskedWallet=data.getParcelableExtra(WalletConstants.EXTRA_MASKED_WALLET); 
        break; 
       case Activity.RESULT_CANCELED : 
        break; 
       default: 
        Toast.makeText(this,"An Error Occured",Toast.LENGTH_LONG).show(); 
        break; 
      } 
      break; 
     case FULL_WALLET_REQUEST_CODE : 
      switch (resultCode){ 
       case Activity.RESULT_OK : 
        mFullWallet= data.getParcelableExtra(WalletConstants.EXTRA_FULL_WALLET); 
        Toast.makeText(this,mFullWallet.getProxyCard().getPan().toString(),Toast.LENGTH_LONG).show(); 
        Wallet.Payments.notifyTransactionStatus(mGoogleApiClient, 
          generateNotifyTransactionStatusrequest(mFullWallet.getGoogleTransactionId(), 
            NotifyTransactionStatusRequest.Status.SUCCESS)); 
        break; 
       default: 
        Toast.makeText(this,"An Error Occured",Toast.LENGTH_LONG).show(); 
        break; 

      } 
      break; 
     case WalletConstants.RESULT_ERROR: 
      Toast.makeText(this,"An Error Occured",Toast.LENGTH_LONG).show(); 
      break; 
    } 

} 


public static NotifyTransactionStatusRequest generateNotifyTransactionStatusrequest(
     String googleTransactionId,int status){ 

    return NotifyTransactionStatusRequest.newBuilder() 
      .setGoogleTransactionId(googleTransactionId) 
      .setStatus(status) 
      .build(); 
} 

private MaskedWalletRequest generateMaskedwalletRequest(){ 
    MaskedWalletRequest maskWalletRequest=MaskedWalletRequest.newBuilder() 
      .setMerchantName("Google I/O CoadeLab") 
      .setPhoneNumberRequired(true) 
      .setShippingAddressRequired(true) 
      .setCurrencyCode("INR") 
      .setEstimatedTotalPrice("10.00") 
      .setCart(Cart.newBuilder() 
         .setCurrencyCode("INR") 
         .setTotalPrice("10.00") 
         .addLineItem(LineItem.newBuilder().setCurrencyCode("INR") 
             .setQuantity("1") 
             .setUnitPrice("10.00") 
             .setTotalPrice("10.00") 
             .build()) 
         .build()) 
      .build(); 
    return maskWalletRequest; 
} 


private FullWalletRequest generateFullWalletRequest(String googleTransactionId){ 
    FullWalletRequest fullWalletRequest=FullWalletRequest.newBuilder() 
      .setCart(Cart.newBuilder() 
         .setCurrencyCode("INR") 
         .setTotalPrice("10.10") 
         .addLineItem(LineItem.newBuilder() 
           .setCurrencyCode("INR") 
           .setQuantity("1") 
           .setUnitPrice("10.00") 
           .setTotalPrice("10.00") 
           .build()) 
        .addLineItem(LineItem.newBuilder() 
          .setCurrencyCode("INR") 
          .setDescription("Tax") 
          .setRole(LineItem.Role.TAX) 
          .setTotalPrice(".10") 
          .build()) 
        .build()) 
      .build(); 
    return fullWalletRequest; 
} 


public void requestFullWallet(View view){ 
     if(mGoogleApiClient.isConnected()){ 
      Wallet.Payments.loadFullWallet(mGoogleApiClient, 
        generateFullWalletRequest(mMaskedWallet.getGoogleTransactionId()), 
        FULL_WALLET_REQUEST_CODE); 
     } 
} 

@Override 
public void onConnected(Bundle bundle) { 

} 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 

} 
} 

Spero che questo è utile per voi.