Birkaç Google Checkout Sorular

2 Cevap php

Ben bir sosyal ağ web sitesi bir Google Checkout ödeme sistemi entegre planlıyorum. Fikir üyeleri gerçek para için "jeton" satın alabilirsiniz (web sitesi para çeşit olan) ve daha sonra onlar gibi web sitesinde bazı ekstra içeriğe erişimi satın olabilir

Ne yapmak istiyorum onun kredi kartı veya banka kartı ile öder ödeme sayfasına üye götüren bir Google Checkout düğmesini oluşturmaktır. Ne istediğiniz jeton satın (kredi / banka kartı suçlandı eğer) bu yüzden yerel veritabanını güncellemek başarılı olup olmadığını benim sunucu bildirmek bildirmek için Google Checkout olduğunu.

Web sitesi PHP / MySQL kodlanmıştır.

Ben buradan örnek PHP kodu indirdiler: code.google.com / p / çıkış-php-örnek-kod google-/ wiki / Dokümantasyon

Ben bir Google Checkout düğme oluşturmak için biliyorum ve ben de benim sunucuda responsehandlerdemo.php dosyayı yerleştirdik. Bu Google Checkout (tabii ki Google tüccar hesabı dosyasının yolunu ayarlamak) yanıtı göndermek gerekiyordu dosyasıdır.

Şimdi yanıt işleyicisi dosya içinde birkaç vaka deyimleri ile bir anahtar bloğu vardır. Hangisi ödeme başarılı oldu ve ben yerel veritabanında üye hesabına belirteçleri ekleyebileceğiniz anlamına gelir?

  switch ($root) {
case "request-received": {
  break;
}
case "error": {
  break;
}
case "diagnosis": {
  break;
}
case "checkout-redirect": {
  break;
}
case "merchant-calculation-callback": {
  // Create the results and send it
  $merchant_calc = new GoogleMerchantCalculations($currency);

  // Loop through the list of address ids from the callback
  $addresses = get_arr_result($data[$root]['calculate']['addresses']['anonymous-address']);
  foreach($addresses as $curr_address) {
    $curr_id = $curr_address['id'];
    $country = $curr_address['country-code']['VALUE'];
    $city = $curr_address['city']['VALUE'];
    $region = $curr_address['region']['VALUE'];
    $postal_code = $curr_address['postal-code']['VALUE'];

    // Loop through each shipping method if merchant-calculated shipping
    // support is to be provided
    if(isset($data[$root]['calculate']['shipping'])) {
      $shipping = get_arr_result($data[$root]['calculate']['shipping']['method']);
      foreach($shipping as $curr_ship) {
        $name = $curr_ship['name'];
        //Compute the price for this shipping method and address id
        $price = 12; // Modify this to get the actual price
        $shippable = "true"; // Modify this as required
        $merchant_result = new GoogleResult($curr_id);
        $merchant_result->SetShippingDetails($name, $price, $shippable);

        if($data[$root]['calculate']['tax']['VALUE'] == "true") {
          //Compute tax for this address id and shipping type
          $amount = 15; // Modify this to the actual tax value
          $merchant_result->SetTaxDetails($amount);
        }

        if(isset($data[$root]['calculate']['merchant-code-strings']
            ['merchant-code-string'])) {
          $codes = get_arr_result($data[$root]['calculate']['merchant-code-strings']
              ['merchant-code-string']);
          foreach($codes as $curr_code) {
            //Update this data as required to set whether the coupon is valid, the code and the amount
            $coupons = new GoogleCoupons("true", $curr_code['code'], 5, "test2");
            $merchant_result->AddCoupons($coupons);
          }
         }
         $merchant_calc->AddResult($merchant_result);
      }
    } else {
      $merchant_result = new GoogleResult($curr_id);
      if($data[$root]['calculate']['tax']['VALUE'] == "true") {
        //Compute tax for this address id and shipping type
        $amount = 15; // Modify this to the actual tax value
        $merchant_result->SetTaxDetails($amount);
      }
      $codes = get_arr_result($data[$root]['calculate']['merchant-code-strings']
          ['merchant-code-string']);
      foreach($codes as $curr_code) {
        //Update this data as required to set whether the coupon is valid, the code and the amount
        $coupons = new GoogleCoupons("true", $curr_code['code'], 5, "test2");
        $merchant_result->AddCoupons($coupons);
      }
      $merchant_calc->AddResult($merchant_result);
    }
  }
  $Gresponse->ProcessMerchantCalculations($merchant_calc);
  break;
}
case "new-order-notification": {
  $Gresponse->SendAck();
  break;
}
case "order-state-change-notification": {
  $Gresponse->SendAck();
  $new_financial_state = $data[$root]['new-financial-order-state']['VALUE'];
  $new_fulfillment_order = $data[$root]['new-fulfillment-order-state']['VALUE'];

  switch($new_financial_state) {
    case 'REVIEWING': {
      break;
    }
    case 'CHARGEABLE': {
      //$Grequest->SendProcessOrder($data[$root]['google-order-number']['VALUE']);
      //$Grequest->SendChargeOrder($data[$root]['google-order-number']['VALUE'],'');
      break;
    }
    case 'CHARGING': {
      break;
    }
    case 'CHARGED': {
      break;
    }
    case 'PAYMENT_DECLINED': {
      break;
    }
    case 'CANCELLED': {
      break;
    }
    case 'CANCELLED_BY_GOOGLE': {
      //$Grequest->SendBuyerMessage($data[$root]['google-order-number']['VALUE'],
      //    "Sorry, your order is cancelled by Google", true);
      break;
    }
    default:
      break;
  }

  switch($new_fulfillment_order) {
    case 'NEW': {
      break;
    }
    case 'PROCESSING': {
      break;
    }
    case 'DELIVERED': {
      break;
    }
    case 'WILL_NOT_DELIVER': {
      break;
    }
    default:
      break;
  }
  break;
}
case "charge-amount-notification": {
  //$Grequest->SendDeliverOrder($data[$root]['google-order-number']['VALUE'],
  //    <carrier>, <tracking-number>, <send-email>);
  //$Grequest->SendArchiveOrder($data[$root]['google-order-number']['VALUE'] );
  $Gresponse->SendAck();
  break;
}
case "chargeback-amount-notification": {
  $Gresponse->SendAck();
  break;
}
case "refund-amount-notification": {
  $Gresponse->SendAck();
  break;
}
case "risk-information-notification": {
  $Gresponse->SendAck();
  break;
}
default:
  $Gresponse->SendBadRequestStatus("Invalid or not supported Message");
  break;

}

Ben haklıyım, bu durumda 'TAHSİL' biridir sanırım?

İkinci soru, Google Checkout ile yanıt almak için bir SSL sertifikası gerekiyor? Buna göre yapmam: groups.google.com/group/google-checkout-api-php/browse_thread/thread/10ce55177281c2b0

Ama en bu resmi belgelerinde belirtilen yerde göremiyorum.

Teşekkür ederim.

2 Cevap

Ben 6 ay önce siteme içine bu entegre. Bu çok düşük hacimli, ama şimdiye kadar iyi çalışıyor.


Eğer endişe gereken ilk şey, 'ÜCRETLİ' dir. Bu kredi kartı işlem için onaylandı, ancak eylemde kadar aslında fon ücret anlamına gelir. Şarj isteği göndermek için, sadece ücretli altında iki satır un-comment. Bunu otomatik 'ayarları'> 'tercihleri' olarak kartı ücret, ama siz de sadece 2 satır un-yorum olabilir ve seçeneklerini açık bırakmak için ayarlarınızı değiştirebilirsiniz.

Eğer risk-bilgi-bildirim 'BEKLE ve risk kontrol ücreti ($ veri [$ root] [' risk-bilgi '] [' hak-için-koruma '] onaylamadan önce geçti olmadığını belirlemek isteyebilirsiniz unutmayın ['DEĞER']). Rağmen, ibraz olasılığı sizin için önemli olmayabilir dijital mal bahsediyoruz görünüyor.

Bir noktada, ben de isteği şarj etmeden önce bazı hesabına para bağlamak için, ama belki bu sadece benim paranoya için yeterli bilgiye sahip olduğunu kontrol etmelisiniz eminim.


Kullandığım diğer devlet 'şarj miktarı-bildirim "dir. Bu 'ÜCRETLİ' kullanmak için bir yol olduğunu tamamen mümkündür, ama ben 'TAHSİL' o yok aslında suçlandı bir miktarda sağlar. ($ Amount_charged = $ veri [$ root] ['total-şarj miktarı'] ['DEĞER'] ;)


As for the SSL, if you check the location where you enter the callback URL it states the following: "Specify a URL for Google to notify you of new orders and changes in order state. You must provide the URL of a server running 128-bit SSLv3 or TLS"


Answer to your comment: I do this under 'new_order_notification', not sure if you can do it elsewhere.

$items = get_arr_result( $data[$root]['shopping-cart']['items']['item'] ); 
foreach( $items as $item ) { 
   if( !isset ( $item['merchant-item-id']['VALUE'] ) ) { 
     //error 
     return; 
   } 
   $request_item_id = $item['merchant-item-id']['VALUE']; 
   //save your item id with corresponding google order id for further processing
}

Evet, "Ücretli" Eğer bir Google Checkout sırayla bakmak gerekir ilk şey. Eğer "ÜCRETLİ" tıkladığınızda bir pencere aslında sırasını BUT emin olmak şarj sizin için açılır o "Eligible for Protection" is True aslında sırasını şarj etmeden önce. Bu ödeme Google ödeme garantisi kapsamında olduğunu size sağlayacaktır. Aslında Google Checkout "Alıcı Kredisi Doğrulama" bölümünde görebilirsiniz.