• Как правильно принять http уведомление от qiwi на php?

    alexrnov
    @alexrnov
    Авторизация уведомлений 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 - тот же токен, который используется и при авторизации запросов.
    Ответ написан
    Комментировать