我已經設置了一個立即購買按鈕,它具有設置值,並且正確發送到Google服務器並顯示付款頁面等。我還使用商家 - 私人數據發送附加參數或者不管它叫什麼。Google Checkout IPN
我所做的所有這些事情都是通過捲曲來實現的,因此用戶無法在沒有找到並停止它的情況下強制降低費用。 (對所有輸入進行驗證等)。
所以,因爲我通過了所有的數據。我需要一種方法將其全部取回,而我目前還不確定如何去做。
我已經閱讀了文檔,我只是被他們弄糊塗了。
我知道我需要確定它是否需要付費,如果它是自動處理它們的費用。但有沒有辦法讓它發生這種情況,那麼當我收到錢時,我可以用發送給他們的額外數據更新數據庫?如果是這樣,我將如何做到這一點?
這是我當前的代碼:
$fields = array(
'item_name_1'=>urlencode($name),
'item_description_1'=>urlencode($name . ' of [xxx]'),
'item_quantity_1'=>urlencode('1'),
'item_price_1'=>urlencode($value),
'item_currency_1'=>urlencode('GBP'),
'_charset_'=>'utf-8',
'shopping-cart.merchant-private-data' => '[username]',
'shopping-cart.items.item-1.digital-content.description' => 'Your account has been upgraded. 


'shopping-cart.items.item-1.digital-content.email-delivery' => 'true'
);
$fields_string = "";
foreach($fields as $key=>$value)
{
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string,'&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/8048xxx');
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
$result = curl_exec($ch);
curl_close($ch);
用於向谷歌結帳過程中(當他們點擊立即購買按鈕)
,這是爲「處理」,這是目前不是代碼加工。
if(isset($_POST['serial-number'])){
// new order made
$sn = $_POST['serial-number'];
$id = '804xxx';
$key = 'xxxxx';
$fields = array('_type'=>'notification-history-request',
'serial-number'=>urlencode($sn));
$fields_string = "";
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://checkout.google.com/api/checkout/v2/reportsForm/Merchant/8048xxx');
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic ' . base64_encode($id . ':' . $key), 'Content-Type: application/xml;charset=UTF-8', 'Accept: application/xml;charset=UTF-8'));
$result = curl_exec($ch);
if(curn_errno($ch)){
$w = fopen('log.text', 'w+');
fwrite($w, 'Error: ' . curl_error($ch));
fclose($w);
} else {
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$f = fopen('test.txt', 'w+');
fwrite($f, 'Status: ' . $status . ' ' . print_r($result, true));
fclose($f);
}
curl_close($ch);
}
任何想法?
感謝you.Thats已經相當有幫助的,但是現在我在集成控制檯接收錯誤說內部服務器錯誤。 – Bowersbros 2012-07-23 17:42:19
請參閱編輯過的文章:) – Bowersbros 2012-07-23 17:47:22
很難說出問題所在。你嘗試過PHP示例庫嗎?如果您是銷售數字商品(即無需付運),則可以查看應用內支付API,實施起來要簡單得多(developers.google.com/in-app-payments)。 – 2012-07-28 18:52:12