Все игры
Запись

Не доходят события app.incomingPayment


Нравится

Вы не можете комментировать, т.к. не авторизованы.


Павел Степанов      10-11-2015 16:20 (ссылка)
Re: Не доходят события app.incomingPayment
Добрый день!
Вопросом сейчас занимаются, как только будут новости мы вам сообщим.
Павел Степанов      10-11-2015 16:57 (ссылка)
Re: Не доходят события app.incomingPayment
Мы пока не можем отловить подобную ситуацию.
Можете указать больше конкретики:
приложение, в котором повторяется ситуация;
действия, которые производите по шагам?
Павел Насонкин      10-11-2015 17:33 (ссылка)
Re: Не доходят события app.incomingPayment
OS Windows 7
Browser Chrome Версия 46.0.2490.80 m,
Firefox 42.0
Игра https://my.mail.ru/apps/734824
На счету 100 мэйликов

Шаги воспроизведения
1) Открыть игру
2) В появившемся попапе акции, или в магазине нажать "Получить"
3) Открывается диалог соцсети в котором сразу говориться что покупка совершена. Через сервер транзакция проходит.
4) Диалог соцсети не закрывается автоматически и не приходит событие incomingPayment

В Safari на маке все работает хорошо.

Павел Насонкин      11-11-2015 14:24 (ссылка)
Re: Не доходят события app.incomingPayment
Решил проблему!

Раньше использовал AS3 прослойку для покупок таким образом:
MailruCall.addEventListener(MailruCallEvent.INCOMING_PAYMENT, onIncomingPayment);
MailruCall.addEventListener(MailruCallEvent.PAYMENT_DIALOG_STATUS, onPaymentStatus);
MailruCall.exec("mailru.app.payments.showDialog", receivedFromJavaScript, params);

Что приводило к вышеописанному багу.
Решил переписать используя JS и все заработало.
JS code:
var statusCallbackID = -1;
var paymentCallbackID = -1;
function requestPayment(params) {

if (statusCallbackID == -1)
{
statusCallbackID = mailru.events.listen(mailru.app.events.paymentDialogStatus, function(e) {
if (e.status === "closed")
{
var element = document.getElementById("flashContent");
if (element.hasOwnProperty("onPaymentCanceled"))
{
document.getElementById("flashContent").onPaymentCanceled();
}
}
});

paymentCallbackID = mailru.events.listen(mailru.app.events.incomingPayment, function(e) {
if (e.status === "success")
{
document.getElementById("flashContent").onPaymentSuccess();
}
else
{
document.getElementById("flashContent").onPaymentCanceled();
}
});
}

mailru.app.payments.showDialog(params);
}

И AS3 code:
//Где-то при инициализации
ExternalInterface.addCallback("onPaymentSuccess", onPaymentProceed);
ExternalInterface.addCallback("onPaymentCanceled", onPaymentCanceled);
//При нажатии на покупку
ExternalInterface.call("requestPayment", params);

PS: Apologies for the poor formatting