質問します。会員は実際のお金(ウェブ通貨の一種)の「トークン」を購入でき、ウェブサイトなどで余分なコンテンツへのアクセスを購入することができるということです。ほとんどのGoogle Checkoutは、私は、ソーシャルネットワーキングのウェブサイトにGoogle Checkoutの決済システムを統合することを計画しています
私がしたいことは、チェックアウトボタンをクリックすると、チェックアウトページに移動し、クレジットカードまたはデビットカードで支払いを行います。私が望むのは、ローカルのデータベースを更新できるように、トークンの購入が成功したかどうか(クレジットカード/デビットカードの請求があった場合)サーバーに通知することです。
ウェブサイトはPHP/MySQLのでコーディングされています。
私はここからのサンプルPHPコードをダウンロードしている:私は、Googleのチェックアウトボタンを作成する方法を知っているcode.google.com/p/google-checkout-php-sample-code/wiki/Documentation
をし、I私のサーバー上にresponsehandlerdemo.phpファイルも置いています。これは、Google Checkoutが応答を送信するファイルです(もちろんGoogleの販売者アカウントのファイルへのパスを設定します)。
は今、応答ハンドラーファイルに複数のcase文とスイッチブロックがあります。どれが支払いが成功し、ローカルデータベースのメンバーアカウントにトークンを追加できるのでしょうか?
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;
}
私は '荷電' というケースを推測私は右だ、一つですか?
2番目の質問、私はGoogle Checkoutでからの応答を受信するためにSSL証明書が必要なのでしょうか?これには次のように対応しています:groups.google.com/group/google-checkout-api-php/browse_thread/thread/10ce55177281c2b0
しかし、私は公式文書のどこにでも言及していません。
ありがとうございます。
、もう一つ、ありがとうございました。販売者アイテムID($ item-> SetMerchantItemId($ id)メソッドを使用してアイテムに手動で設定したID)にアクセスするにはどうすればよいですか。これは使えますか? $ order_id = $ data [$ root] ['merchant-item-id'] ['VALUE']; –
更新するローカルデータベースのどの行を知る必要があります。 –
回答は、「回答」に追加:)私は可能性がある場合 – therealsix