Описание
Сервис (уже был кейс) позволяет купить промокод в качестве подарка и активировать его, получив контент.
В процессе оплаты происходит graphql-запрос:
https://site/api/graphql
Само тело запроса содержит мутацию - GenerateUnpaidGiftCode (судя по названию промокод должен был неоплачен):
{
"query": "\n mutation GenerateUnpaidGiftCode($contentId: String!)
{\n generateUnpaidGiftCode(contentId: $contentId)\n}\n ",
"variables": {
"contentId": "823"
}
}
И ответ - сам промод “K1mVbcFv” :
{
"data": {
"generateUnpaidGiftCode": "K1mVbcFv"
}
}
Однако, при попытке активировать промокод - мы получаем ответ с успешной оплате (paid)
{
"data": {
"result": "paid",
"content": [
{
"contentId": "823",
"play": true
}
]
}
}
Решение
Необходимо проверять не только промокод но и status “paid” от платежной системы.