Покупки успешны несколько раз с покупками в приложении на Android - PullRequest
1 голос
/ 18 октября 2019

Я разработал игру с внутриигровой валютой. Когда я тестирую игру (в настоящее время она работает на Alpha и закрывается внутри в Google Play) и пытается купить мои монеты, нажав кнопку только один раз, я получаю «Успешная покупка» несколько раз. В результате вместо покупки 100 монет я получаю иногда 200, иногда 500 монет, иногда 300 и т. Д. В электронном письме с подтверждением, которое я получаю из Google Play, произошла только одна транзакция. Вот код события покупки успешно:

public function _customEvent_100gold():Void
	{
		if((_adding100gold == false))
		{
			_adding100gold = true;
			_byinggold = true;
			_secondsbeforeclose = 0;
			Engine.engine.setGameAttribute("gold", ((Engine.engine.getGameAttribute("gold") : Float) + 100));
			trace("adding 100 gold");
			_coinicon.setX((actor.getX() + (((((actor.getWidth()) - getFont(660).font.getTextWidth(("" + (Engine.engine.getGameAttribute("gold") : Float)), getFont(660).letterSpacing)/Engine.SCALE) / 2) + 20) - 45)));
			purchasesUse("100gold");
			purchasesGoogleConsume("100gold");
			playSound(getSound(795));
			saveGame("mySave", function(success:Bool):Void
			{
				runLater(1000 * 0.6, function(timeTask:TimedTask):Void
				{
					_pressedonce = false;
					_adding100gold = false;
				}, actor);
				_coinicon.growTo(145/100, 145/100, 0.3, Easing.elasticOut);
				runLater(1000 * 0.3, function(timeTask:TimedTask):Void
				{
					_secondsbeforeclose = 0;
					_100gold.growTo(100/100, 100/100, 0.3, Easing.elasticOut);
					_coinicon.growTo(100/100, 100/100, 0.6, Easing.elasticOut);
					runLater(1000 * 0.3, function(timeTask:TimedTask):Void
					{
						_byinggold = false;
					}, actor);
				}, actor);
			});
		}
	}

Так что, насколько я понимаю, мой логический «add100gold» должен препятствовать запуску этого кода более одного раза, только через 0,6 секунды после успешной покупки. Из моего журнала отладки я вижу, что этот код выполняется несколько раз почти одновременно. Странно то, что у меня есть другой продукт в приложении, который всегда посылает мне сообщение «Покупка не удалась», и я также получаю его на своем тестовом устройстве несколько раз подряд. Что также показывает, что он запускает сбойные события также несколько раз, а не один раз, как следует. Так как это исправить?

обновление: Я создал совершенно новую учетную запись Google и создал новый идентификатор продукта для своих 1000 монет в игре. Поэтому, когда я тестировал на своем устройстве, когда я нажимал кнопку, я купил 1000 монет, когда я нажал второй раз, я прошел через процесс покупки, но получил не 1000, а 2000 монет. Когда я нажал кнопку 3 раза, я получил 3000 монет. Кажется, проблема не в коде, а где-то между моим устройством и Google Play. Я могу что-нибудь проверить? Как будто я уже проверил способ оплаты и открытый ключ. Что еще?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...