若 App 的架構具有後端伺服器,則 IAB 回傳的結果應該由伺服器端來做驗證,底下是以 NodeJS 為例子的驗證程序 :
var crypto =require('crypto');
var verifySignature =function(publicKey, purchaseData, signature)
{
var genPublicKey =function(key)
{
var chunkSize, chunks, str;
str = key;
chunks = [];
chunkSize = 64;
while (str) {
if (str.length < chunkSize) {
chunks.push(str);
break;
} else {
chunks.push(str.substr(0, chunkSize));
str = str.substr(chunkSize);
}
}
str = chunks.join("\n");
str = '-----BEGIN PUBLIC KEY-----\n' + str + '\n-----END PUBLIC KEY-----';
return str;
}
return crypto.createVerify('RSA-SHA1').update(purchaseData).verify(genPublicKey(publicKey), signature, 'base64');
}
回傳若為 true 則資料正確。
參考來源 : https://github.com/nothing2lose/node-InAppBilling
0 意見 :
張貼留言