2014-10-20 53 views
26

在我的應用中,我需要從我的應用向Google電子錢包實施保存優惠。我發現這個教程:https://developers.google.com/wallet/objects/savetowalletnative#4_create_an_object,但是當我試圖實現它時,我遇到了一個問題。有代碼從頁:將優惠存入Google電子錢包

OfferWalletObject wob = OfferWalletObject 
     .newBuilder()... 

但我的環境說,類沒有這種方法。在此頁面中沒有關於此方法的任何信息:https://developer.android.com/reference/com/google/android/gms/wallet/OfferWalletObject.html

有人可以幫助解決這個問題,或者談談其他方法以在Google電子錢包中保存優惠。

+2

您是否找到解決此問題的解決方案?我有同樣的問題 – JpCrow 2014-12-19 20:03:21

+0

@JpCrow,不,對不起 – Dima 2014-12-21 20:23:05

+0

有沒有人成功導入CreateWalletObjectsRequest? – 2015-03-30 12:32:32

回答

-1

本視頻已成功集成Google電子錢包。 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) { 

} 
} 

希望這是對你有用。

相關問題