2012-07-22 4 views
0

설정 값이 있고 지금 Google 서버로 보내는 버튼을 설정하고 지금 지불 페이지 등을 표시합니다. merchant-private-data를 사용하여 추가 매개 변수를 보내고 있습니다. 또는 그것이 무엇이든간에.Google Checkout IPN

내가하는 모든 일은 cURL을 통해 이루어 지므로 사용자가 알아 내고 중단하지 않으면 더 낮은 요금을 적용 할 방법이 없습니다. (모든 입력에 대한 검증 등).

그래서 모든 데이터를 전달하고 있습니다. 모든 것을 다시 가져올 방법이 필요합니다. 현재 어떻게해야할지 확신 할 수 없습니다.

나는 이미 문서를 읽었으므로 나는 혼란스러워했다.

나는 그것이 청구 가능한지 여부를 알아야하며, 자동으로 청구가 처리되는지 여부를 알아야합니다. 그러나 그렇게 할 수있는 방법이 있습니까? 그렇다면 돈을 받으면 나는 그들에게 보낸 추가 데이터로 데이터베이스를 업데이트 할 수 있습니까? 그렇다면 어떻게해야합니까?

이 내 현재 코드입니다 :

$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); 
    } 

아이디어가 있으십니까?

답변

0

콜백 URL로 전송 된 알림을 청취하는 데 필요한 주문 상태 정보 및 판매자 개인 정보를 얻으려면 Checkout Notifications API와 통합하는 방법은 아래의 문서를 참조하십시오. https://developers.google.com/checkout/developer/Google_Checkout_XML_API_Notification_API

당신은 통지를 돌아 http://support.google.com/checkout/sell/bin/answer.py?hl=en-GB&answer=134463

http://support.google.com/checkout/sell/bin/answer.py?hl=en&answer=70647

는 상인 - 개인 데이터 필드에서 사용자 정의 데이터를 읽습니다.

비슷한 문제에 대한 해결책은 answer을 참조하십시오.

또한 다양한 언어에 대한 체크 아웃 샘플 코드 라이브러리를 살펴 있어야 할 수 있습니다 :

https://developers.google.com/checkout/samplecode

+0

감사합니다 you.Thats 매우 도움이 되었기를하지만 지금은 통합 콘솔에서 오류 메시지가 표시됨 내부 서버 오류입니다. – Bowersbros

+0

편집 된 게시물을 참조하십시오. – Bowersbros

+0

문제가있는 곳을 알려주기가 어렵습니다. PHP 샘플 라이브러리를 사용해 보셨습니까? 디지털 상품을 판매하는 경우 (예 : 배송비 불필요) 인앱 결제 API를 사용하면 훨씬 간단하게 구현할 수 있습니다 (developers.google.com/in-app-payments). –