1- Şu kütüphaneyi uygulamana dahil et. Yazman gereken IAB kodlarını bayağı bir azaltıyor. Benim anlatmam da buna dayanıyor:
https://github.com/anjlab/android-inapp-billing-v3
2-Satın alma işlemini hangi aktivitede yapıyorsan BillingProcessor.IBillingHandler implement et.
BillingProcessor bp;
@Override
protected void onCreate(){
//MARKET_LICENSE_KEY, senin license anahtarın
bp = new BillingProcessor(this, MARKET_LICENSE_KEY, this);
}
@Override
public void onDestroy() {
if (bp != null)
bp.release();
super.onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!bp.handleActivityResult(requestCode, resultCode, data))
super.onActivityResult(requestCode, resultCode, data);
}Satın alma yaparken
bp.purchase(activity, "productId");
@Override
public void onProductPurchased(String productId, TransactionDetails details) {
String sig = details.purchaseInfo.signature;
String response_data = details.purchaseInfo.responseData;
//credit.php'ye iki parametreyi post et, cevap bekle
}3- Php kısmı
credit.php:
<?php
$sig = $_POST["sig"];
$response_data = $_POST["response_data"];
/* marketten lisans anahtarı */
$public_key_base64 = "MIIBIjANBgkqhkiG....";
/**/
$pkey = "-----BEGIN PUBLIC KEY-----\n".chunk_split($public_key_base64, 64,"\n").'-----END PUBLIC KEY-----';
/**/
$pkey = openssl_get_publickey($pkey);
$sig = base64_decode($sig);
/* kontrol işlemi */
$result = openssl_verify(
$response_data,
$sig,
$pkey,
OPENSSL_ALGO_SHA1
);
//
if($result == 1) {
//işlem başarılı
$response_data = json_decode($response_data, true);
$productId = $response_data["productId"]; //markette bizim tarafımızdan oluşturulan product id
//dbye ekle veya kontrol et vs..
echo "OK";
} else {
//işlem başarısız
echo "ERR";
}
?>