Я использую функцию «Сохранить в Google Pay» в своем приложении для Android.Поскольку я не работал над этим раньше, я следую этому руководству для реализации этой функциональности.Но я всегда получаю 'resultCode' значение 1 в методе onActivityResult () .Ниже приведен мой пример кода -
public class GooglePayActivity extends AppCompatActivity
{
static final int SAVE_TO_ANDROID = 8888;
TextView tvGooglePayStatus;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google_pay);
Button btnGPay = (Button) findViewById(R.id.btnGPay);
tvGooglePayStatus = (TextView) findViewById(R.id.tvGooglePayStatus);
btnGPay.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
tvGooglePayStatus.setText("");
// Define Text Module Data
List textModulesData = new ArrayList();
TextModuleData textModuleData = new TextModuleData("Details", "20% off one coffee beverage." +
"Offer valid 30 days from date of issue. Not applicable with other offers. Offer" +
" must be presented at time of purchase. Offer not valid on non coffee based beverages");
textModulesData.add(textModuleData);
// Define Links Module Data
List uris = new ArrayList();
UriData uri1 = new UriData("http://www.baconrista.com/myaccount?id=1234567890","My Baconrista account");
uris.add(uri1);
List imageUris = new ArrayList();
UriData uri2 = new UriData("http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg", "Image Description");
imageUris.add(uri2);
// Define Info Module
List row0cols = new ArrayList();
LabelValue row0col0 = new LabelValue("Next Reward in","2 coffees");
LabelValue row0col1 = new LabelValue("Member Since", "01/15/2013");
row0cols.add(row0col0);
row0cols.add(row0col1);
List row1cols = new ArrayList();
LabelValue row1col0 = new LabelValue("Local Store", "Mountain View");
row1cols.add(row1col0);
List rows = new ArrayList();
LabelValueRow row0 = LabelValueRow.newBuilder().addColumns(row0cols).build();
LabelValueRow row1 = LabelValueRow.newBuilder().addColumns(row1cols).build();
rows.add(row0);
rows.add(row1);
// Define general messages
List messages = new ArrayList();
WalletObjectMessage message = WalletObjectMessage.newBuilder()
.setHeader("Hi Jane!")
.setBody("Thanks for being a great customer.")
.build();
messages.add(message);
// Define Geolocations
LatLng location = new LatLng(37.422601, -122.085286);
List locations = new ArrayList();
locations.add(location);
Date time = new Date();
OfferWalletObject wob = OfferWalletObject
.newBuilder()
/*.setClassId("3002594094318918306.aba41620-9c78-11e8-94fd-d1d5993cb4ff8.OfferClass")
.setId("3002594094318918306.aba41620-9c78-11e8-94fd-d1d5993cb4ff8.OfferObject")*/
.setClassId("2951238800106304306.OfferClassMonster3")
.setId("2951238800106304306.OfferTestObject1")
.setState(WalletObjectsConstants.State.ACTIVE)
.setIssuerName("Baconrista")
.setTitle("20% off coffee")
.setValidTimeInterval(new TimeInterval(time.getTime(), time.getTime() + 144000000L))
.setBarcodeType("qrCode")
.setBarcodeValue("28343E3")
.setBarcodeAlternateText("12345")
.addTextModulesData(textModulesData)
.addLinksModuleDataUris(uris)
.addInfoModuleDataLabelValueRows(rows)
.addImageModuleDataMainImageUris(imageUris)
.addMessages(messages)
.addLocations(locations)
.build();
CreateWalletObjectsRequest request = new CreateWalletObjectsRequest(wob);
Wallet.WalletOptions walletOptions = new Wallet.WalletOptions.Builder()
.setTheme(WalletConstants.THEME_LIGHT)
.setEnvironment(WalletConstants.ENVIRONMENT_PRODUCTION)
.build();
WalletObjectsClient walletObjectsClient = Wallet.getWalletObjectsClient(GooglePayActivity.this, walletOptions);
Task task = walletObjectsClient.createWalletObjects(request);
AutoResolveHelper.resolveTask(task, GooglePayActivity.this, SAVE_TO_ANDROID);
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch (requestCode)
{
case SAVE_TO_ANDROID:
switch (resultCode) // Here I'm always getting "resultCode=1"
{
case Activity.RESULT_OK:
tvGooglePayStatus.setText("saved");
break;
case Activity.RESULT_CANCELED:
tvGooglePayStatus.setText("canceled");
break;
default:
int errorCode =
data.getIntExtra(
WalletConstants.EXTRA_ERROR_CODE, -1);
tvGooglePayStatus.setText("failed error code: " + errorCode);
break;
}
}
}
}
Надеюсь, вы понимаете мою проблему.Также, пожалуйста, дайте мне знать, если я могу предоставить более подробную информацию о том же.Спасибо.