0
很多人問如何編寫服務器端代碼 進行應用內結算驗證。 任何人都可以發佈這樣的代碼?或者知道這些代碼在哪裏。 如何安裝在服務器上? 有similar subjects應用內結算驗證。服務器端代碼示例是否存在?
我無法理解它。 我不知道PHP。 這是我必須學習的下一個噩夢嗎?
感謝您的幫助和建議。
很多人問如何編寫服務器端代碼 進行應用內結算驗證。 任何人都可以發佈這樣的代碼?或者知道這些代碼在哪裏。 如何安裝在服務器上? 有similar subjects應用內結算驗證。服務器端代碼示例是否存在?
我無法理解它。 我不知道PHP。 這是我必須學習的下一個噩夢嗎?
感謝您的幫助和建議。
這裏是(未完成)Python的例子:
from M2Crypto import BIO, RSA, EVP
ANDROID_PK = """-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgmZW0GxWr0v1ndLfxHbV2ruWcmQ
<some lines skipped>
cwWjx5sWSahVp0M5aYRysSkGGjSxe1wIDAQAB
-----END PUBLIC KEY-----"""
def validate_google_play_signature(signed_data, signature_base64, public_key):
# http://stackoverflow.com/a/546476/227024
bio = BIO.MemoryBuffer(public_key)
rsa = RSA.load_pub_key_bio(bio)
pubkey = EVP.PKey()
pubkey.assign_rsa(rsa)
pubkey.reset_context(md="sha1")
pubkey.verify_init()
pubkey.verify_update(signed_data)
signature = base64.b64decode(signature_base64)
return bool(pubkey.verify_final(signature))
其實這是很容易,你只需要像這樣的小功能在PHP中:
function checkPayment($data, $signature)
{
$base64EncodedPublicKey = "yourBase64PublicKey";
$openSslFriendlyKey = "-----BEGIN PUBLIC KEY-----\n" . chunk_split($base64EncodedPublicKey, 64, "\n") . "-----END PUBLIC KEY-----";
$publicKeyId = openssl_get_publickey($openSslFriendlyKey);
$result = openssl_verify ($data, base64_decode($signature), $publicKeyId, OPENSSL_ALGO_SHA1);
/*
if ($result == 1) {
echo "Success";
} elseif ($result == 0) {
echo "Verification Failed";
}
*/
return $result;
}
這$數據和$簽名做我送到服務器?並且你有任何改變也有MPL(PayPal)的功能(我不想使用IPN) – Diego