Описание

Сервис (уже был кейс) позволяет купить промокод в качестве подарка и активировать его, получив контент.

В процессе оплаты происходит 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” от платежной системы.