2009-08-02 13 views
1

質問します。会員は実際のお金(ウェブ通貨の一種)の「トークン」を購入でき、ウェブサイトなどで余分なコンテンツへのアクセスを購入することができるということです。ほとんどの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

しかし、私は公式文書のどこにでも言及していません。

ありがとうございます。

答えて

5

私は6ヶ月以上前に私のサイトにこれを統合。それは非常に少量ですが、これまでのところうまくいきます。


最初に気にするべきことは「充電可能」です。これは、クレジットカードが取引のために承認されたことを意味しますが、行動を起こすまでは実際には資金を請求しません。料金請求を送信するには、CHARGEABLEの2行をコメント解除するだけです。 '設定'> '設定'でカードを自動的に充電するように設定を変更できますが、2行のコメントを外してオプションを開いたままにしておくこともできます。

「リスク情報通知」を待機し、請求を承認する前にリスクチェックが成功したかどうかを判断することができます($ data [$ root] ['risk-information'] ['eligible-for -protection '] [' VALUE '])。デジタル商品について話しているようですが、チャージバックの可能性はあなたにとって重要ではないかもしれません。いくつかの時点で

は、私はあなたにも、あなたがそれを充電する前に、要求があなたには、いくつかの口座に資金をリンクするための十分な情報を持っていることを確認する必要がありますが、多分これは単なる私の妄想であると確信しています。


私が使用している他の状態は「請求額通知」です。「CHARGED」を使用する方法は完全に可能ですが、実際に請求された金額は「CHARGED」ではありません。 ($ amount_charged = $データ[$ルート] [ '総電荷量'] [ 'VALUE'];)SSLについて


、あなたは、コールバックURLを入力して場所を確認した場合状態次の: あなたのコメントに「Googleは新規受注と注文状態の変化を通知するためのURLを指定してくださいあなたは、128ビットのSSLv3またはTLSを実行しているサーバーのURLを提供しなければならない。」


回答: 私はあなたが他の場所でそれを行うことができますかどうかわからない、「new_order_notification」の下にこれを行います。

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

、もう一つ、ありがとうございました。販売者アイテムID($ item-> SetMerchantItemId($ id)メソッドを使用してアイテムに手動で設定したID)にアクセスするにはどうすればよいですか。これは使えますか? $ order_id = $ data [$ root] ['merchant-item-id'] ['VALUE']; –

+0

更新するローカルデータベースのどの行を知る必要があります。 –

+0

回答は、「回答」に追加:)私は可能性がある場合 – therealsix

1

「チャージ可能」は、Google Checkoutの注文書で最初に確認する必要があります。あなたは「有料」をクリックすると、ウィンドウが表示され、実際にオーダーを充電実際の順序を充電する前に、「保護のための適格」真であることを確認してくださいするためにポップアップ表示されます。これにより、支払いがGoogleの支払い保証の対象となることが保証されます。実際にGoogle Checkoutの[購入者のクレジット確認]セクションで確認できます。

関連する問題