Frage

Ich plane, ein Google Checkout-Zahlungssystem auf einer Social-Networking-Website zu integrieren. Die Idee ist, dass die Mitglieder „Token“ für echtes Geld kaufen kann (die Art der Website Währung sind) und dann können sie den Zugriff auf einige zusätzliche Inhalte auf der Website usw. kaufen.

Was ich tun möchte, ist eine Google Checkout-Schaltfläche erstellen, die ein Mitglied zur Kasse Seite nimmt, wo er mit seinem Kredit- oder Debitkarte bezahlt. Was ich will, ist die Google Checkout zu benachrichtigen benachrichtigen meinen Server, ob der Kauf von Token erfolgreich war (wenn die Kredit- / Debitkarte belastet wurde), so kann ich die lokale Datenbank aktualisieren.

Die Website in PHP / MySQL codiert.

ich die Probe PHP-Code von hier heruntergeladen haben: code.google.com/p/google-checkout-php-sample-code/wiki/Documentation

Ich weiß, wie eine Google Checkout-Schaltfläche erstellen, und ich habe auch die responsehandlerdemo.php Datei auf meinem Server abgelegt. Dies ist die Datei die Google Checkout soll senden Antwort auf (natürlich habe ich den Pfad zur Datei in Google Händler-Konto).

Jetzt in der Antwort-Handler-Datei gibt es einen Schalterblock mit mehreren case-Anweisungen. Welches bedeutet, dass die Zahlung erfolgreich war, und ich kann Token zu dem Mitgliedskonto in der lokalen Datenbank hinzufügen?

  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;

}

Ich denke, dass case ‚RECHNETE‘ ist derjenige, habe ich recht?

Die zweite Frage, brauche ich ein SSL-Zertifikat-Antwort von Google Checkout zu erhalten? Nach diesem ich tun: groups.google.com/group/google-checkout-api-php/browse_thread/thread/10ce55177281c2b0

Aber ich nicht sehen, es überall in der offiziellen Dokumentation erwähnt.

Danke.

War es hilfreich?

Lösung

I integriert diese in meine Seite mehr als 6 Monaten. Es ist sehr geringes Volumen, funktioniert aber gut so weit.


Das erste, was Sie kümmern sollten, ist ‚Steuer‘. Dies bedeutet, dass die Kreditkarte für die Transaktion genehmigt wurde, aber es wird nicht wirklich die Mittel aufladen, bis Sie Maßnahmen ergreifen. Um die Gebührenanfrage, einfach un-Kommentar die beiden Linien unter LASTEN zu senden. Sie können Ihre Einstellungen ändern, um es die Karte automatisch in ‚Einstellungen‘> ‚Voreinstellungen‘ laden zu machen, aber man könnte genauso gut nur un-Kommentar die 2 Zeilen und lassen Sie Ihre Optionen offen.

Beachten Sie, dass für die "Risiko-Informationen-Mitteilung und festzustellen, ob die Risikoprüfung bestanden warten mögen, bevor die Ladung ($ data [$ root] [‚Risiko-Informationen‘] [ 'förderfähig-for- Genehmigung Schutz '] [' VALUE ']). Obwohl scheint, Sie sprechen von digitalen Waren die Möglichkeit, Chargebacks vielleicht nicht für Sie.

An einem gewissen Punkt, ich bin sicher, Sie sollten auch prüfen, ob der Antrag genügend Informationen hat für Sie die Mittel zu einem gewissen Konto zu verknüpfen, bevor Sie es aufladen, aber vielleicht ist das nur meine Paranoia.


Der andere Zustand, die ich benutze ist "Ladungs-Menge-Mitteilung. Es ist durchaus möglich, dass es ein Weg gibt ‚RECHNETE‘ zu verwenden, aber ich weiß nicht, dass ‚RECHNETE‘ bietet eine Menge, die tatsächlich geladen wurden. ($ Amount_charged = $ data [$ root] [ 'Gesamt-Ladungs-Menge'] [ 'Wert'];)


Wie für die SSL, wenn Sie den Speicherort überprüfen, wo Sie die Rückruf-URL eingeben es besagt Folgendes: „Geben Sie eine URL für Google Sie von neuen Aufträgen und Änderungen, um Zustand zu informieren. Sie müssen die URL eines Servers bereitstellen läuft 128-Bit-SSLv3 oder TLS“


Antwort auf Ihren Kommentar: Ich tue dies unter ‚new_order_notification‘, nicht sicher, ob Sie es an anderer Stelle tun können.

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

Andere Tipps

Ja, „steuerpflichtige“ ist das erste, was Sie bei der Bestellung in Google Checkout suchen. Wenn Sie „steuerpflichtiges“ klicken, öffnet sich ein Fenster für Sie die Bestellung Pop-up tatsächlich aufladen ABER sicher sein, dass die „Eligible for Protection“ True , bevor Sie die Bestellung tatsächlich Lade . Diese stellen Sie sicher, dass die Zahlung von Google Zahlungsgarantie abgedeckt ist. Sie können sehen, es tatsächlich in der „Käuferkredit Verification“ in Google Checkout.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top