3.3.7
0,59,8
Android
когда я запрашиваю покупку, я проверяю квитанцию на моем сервере, если проверка не удалась, я хочу иметь возможность вручную отменить покупку, вместо того, чтобы запускать функцию PurchaseUpdatedListener каждый раз, если не вызывается подтверждение покупки или потребление.
если я не завершил покупку, я не могу отменить отложенную покупку. На android мне нужно ждать, что он автоматически отменяется.
Настоящее устройство
Совершите покупку и не называйте "подтверждение покупки" или "потребительную покупку".
Даже в случае сбоя вы все равно должны вызывать acknowledgePurchase
и consumePurchase
для завершения транзакции. Вы только не выполняете такую логику, как отказ от вознаграждения в собственной базе данных. Также вам следует consmePurchase
чтобы он не остался в вашем приложении.
@hyochan, если я это сделаю, платеж будет одобрен, и с учетной записи пользователя будет
@tmjordan О, я понимаю, что вы имели в виду. Что, если вы продолжите логику, дав награду?
@hyochan, когда пользователь покупает продукт, данная квитанция отправляется на серверы Google, чтобы проверить квитанцию и узнать статус покупки (если платеж был одобрен, ожидает обработки или отменен).
Скажем, у меня есть ошибка во время процесса проверки, не исходящая от сервера Google (например, мой бэкэнд), поэтому я не могу проверить квитанцию и хочу отменить покупку вручную, вместо того, чтобы ждать ее отмены Google ( в течение этого времени я не могу совершить еще одну покупку), если я не называю покупку со знанием или потребляющую покупку.
Не знаю, возможно ли это, возможно, именно так работает процесс покупки в Google.
Было бы хорошо, если бы мы могли вручную отменить покупку, которая еще не подтверждена или не использована. В этом сценарии пользователю будут возвращены деньги, если платеж был одобрен.
Вместо того, чтобы каждый раз запускать одну и ту же покупку, пока она не будет отменена Google.
@tmjordan Спасибо за вашу хорошую точку зрения. Звучит очень разумно, но я не совсем уверен, что покупки в pending
действительно взимаются. Я думаю, что покупки pending
даже не должны взиматься, когда acknowledged
а их лучше удалить. Надеюсь, мы сможем подробнее рассказать о любом другом опыте.
@hyochan , есть ли такая функция на iOS, чтобы отменить покупку, которая не была завершена, путем вызова finishTransactionIOS
и последующего удаления этой покупки из истории покупок. Я не знаю, есть ли другой способ проверить, активна ли подписка, но сейчас я проверяю дату истечения срока действия последней транзакции в истории получения. Поэтому, если покупка не была совершена, я не хочу, чтобы она записывалась в историю покупок. К сожалению, сейчас именно это и происходит. И, в отличие от Android, незавершенная покупка не будет отменена через некоторое время, и она никогда не перестанет инициироваться purchaseUpdateListener
.
У меня такая же проблема на ios и android, мне нужно отменить покупку, которая не была завершена. И, в частности, на ios, когда эта покупка не записывается в истории, если нет более эффективного способа проверить действительность подписки.
Я бы хотел разобраться с подобным сценарием
purchaseUpdateListener
запускается много раз, пока не будет вызвана finishTransactionIOS, однако это нежелательные результаты. На этом этапе транзакцию следует отменить.Есть ли способ отменить транзакцию.
Самый полезный комментарий
@hyochan , есть ли такая функция на iOS, чтобы отменить покупку, которая не была завершена, путем вызова
finishTransactionIOS
и последующего удаления этой покупки из истории покупок. Я не знаю, есть ли другой способ проверить, активна ли подписка, но сейчас я проверяю дату истечения срока действия последней транзакции в истории получения. Поэтому, если покупка не была совершена, я не хочу, чтобы она записывалась в историю покупок. К сожалению, сейчас именно это и происходит. И, в отличие от Android, незавершенная покупка не будет отменена через некоторое время, и она никогда не перестанет инициироватьсяpurchaseUpdateListener
.У меня такая же проблема на ios и android, мне нужно отменить покупку, которая не была завершена. И, в частности, на ios, когда эта покупка не записывается в истории, если нет более эффективного способа проверить действительность подписки.