- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在我的应用中,我需要实现从我的应用到 Google 电子钱包的储蓄优惠。我找到了这个教程:Developer Documentation- wallet ,但是当我尝试实现它时,我遇到了一个问题。页面中有代码:
OfferWalletObject wob = OfferWalletObject
.newBuilder()...
但是我的环境说那个类没有这个方法。此页面中没有任何关于此方法的说明:Developer Reference Document
有人可以帮忙解决这个问题,或者说一下在谷歌钱包中保存优惠的其他方法。
最佳答案
通过此视频,我已成功集成 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) {
}
}
希望这对你有用。
关于android - 将优惠保存到 Google 电子钱包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467437/
我编写了一个 C++ 函数,用于将 markdown 格式的字符串转换为 html 格式的字符串,并在 linux 上封装了 C 库 libmarkdown2(折扣): string markdown
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PHP生成唯一的促销/优惠/折扣码(附源码)由作者收集整理,如果你对这篇
我需要按分组工作时间选择通话、接听、交易、费率、通话时间。 这是我的选择: SELECT users.username as username, DATE_FORMAT(users_w
我是一位 msdn 订阅者,我正在将 Azure 视为一个新网站的可能平台,该网站将测试新服务。该网站预计在启动时的流量会很低到非常低。我听说这种流量级别对于 Azure 来说非常昂贵,但由于他们提供
我是一位 msdn 订阅者,我正在将 Azure 视为一个新网站的可能平台,该网站将测试新服务。该网站预计在启动时的流量会很低到非常低。我听说这种流量级别对于 Azure 来说非常昂贵,但由于他们提供
我是一名优秀的程序员,十分优秀!