Saving offer to Google Wallet

前端 未结 1 1181
生来不讨喜
生来不讨喜 2021-02-01 14:20

In my app, I need to implement a saving offer from my app to Google Wallet. I found this tutorial: Developer Documentation- wallet , but when I tried to implement it, I encoun

1条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-02-01 14:59

    I have integrated Google Wallet successfully, from this 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) {
    
    }
    }
    

    Hope this is useful for you.

    0 讨论(0)
提交回复
热议问题