2011-06-16 134 views
10

在试图遵循一些安全准则应用内 这里购买: http://developer.android.com/guide/market/billing/billing_best_practices.html 我试图做的 应用程序的服务器上,而不是签名验证iteself 。我非常喜欢使用PHP OpenSSL库和 它看起来像这样的代码下面应该工作:在应用程序内购买签名验证与PHP的OpenSSL

$public_key_str = file_get_contents("./pubKey/out"); 
$public_key_str = trim($public_key_str); 
$key = openssl_get_publickey($public_key_str); 
if(!$key) 
{ 
echo 'Can\'t get public key'; 
} 
$signature = base64_decode($signature); 
$ok = openssl_verify($data, $signature, $key); 
var_dump($ok); 

我知道我的签名和公共密钥都是正确的,但$确定为0!我尝试使用的签名是应用购买包中的字符串。猜猜我的密钥是否正确,问题出在签名上。当我尝试用base64解码它时:openssl enc -base64 -d -in signature -A> signature.bin,我的字符串与base64_decode()相同。有任何想法吗 ?

UPD:我还没有真正明白我应该通过openssl_verify()作为$ data吗?我的数据是这样的:

$data = '{"nonce":5550262978898439313,"orders":[{"notificationId":"android.test.purchased","orderId":"transactionId.android.test.purchased","packageName":"com.ads.testbilling","productId":"android.test.purchased","purchaseTime":1308224646237,"purchaseState":0}]}'; 
+0

请正确格式化您的代码,即不使用反引号每行缩进将其与4个空格(或只需选择该线,然后按CTRL + K) – ThiefMaster 2011-06-16 13:54:34

+0

对不起为 – user801255 2011-06-16 14:00:54

+0

这里的一些技巧:HTTP: //crazyviraj.blogspot.com/2011/06/some-notes-on-implementing-in-app.html – psychotik 2011-06-21 16:56:13

回答