Авторизация уведомлений Qiwi Wallet в Kotlin.
Возможно это кому-нибудь подскажет как реализовать авторизацию на PHP.
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
...
private fun checkSignature(req: HttpServletRequest): Boolean {
val signature: String = req.getHeader("Signature") ?: return false
val parameters = paymentId + "|" + createdDateTime + "|" + amount.value
val hmacSha256: Mac = Mac.getInstance("HmacSHA256")
hmacSha256.init(SecretKeySpec(apiKeyToken.toByteArray(), "HmacSHA256"))
val result = Hex.encodeHexString(hmacSha256.doFinal(parameters.toByteArray()))
return signature == result
}
Параметры: paymentId, createdDateTime, amount.value, берутся из параметров уведомления.
apiKeyToken - тот же токен, который используется и при авторизации запросов.