in payment-failure/src/main/scala/com/gu/identity/paymentfailure/SqsService.scala [23:30]
def parseMessage[A : Decoder](sqsMessage: SQSMessage): Either[Throwable, A] = {
logger.info(s"attempting to parse message body ${sqsMessage.getBody}")
for {
jsonMessage <- parse(sqsMessage.getBody)
body <- jsonMessage.hcursor.downField("Message").as[String]
data <- decode[A](body)
} yield data
}