1

請求額通知から次のような返答があります。(サンドボックス環境内)。私がやろうとしているのは、支払いが決済されたと確信したときに顧客に電子メールアラートを送信することです。現在、新規注文通知を使用していますが、顧客の支払いが失敗することがあります。お金を受け取ったときにデジタルダウンロードを配信していることを確認したいと思います。

array (
  'charge-amount-notification' => 
  array (
    'xmlns' => 'http://checkout.google.com/schema/2',
    'serial-number' => '962015304346298-00013-2',
    'timestamp' => 
    array (
      'VALUE' => '2012-09-01T13:25:18.732Z',
    ),
    'latest-charge-amount' => 
    array (
      'currency' => 'USD',
      'VALUE' => '99.0',
    ),
    'total-charge-amount' => 
    array (
      'currency' => 'USD',
      'VALUE' => '99.0',
    ),
    'google-order-number' => 
    array (
      'VALUE' => '962015304346298',
    ),
  ),

)。

ドキュメントに記載されているように、顧客情報を含む注文概要キーを期待していました。

https://developers.google.com/checkout/developer/Google_Checkout_XML_API_Notification_API#charge_amount_notification

これが私のコードです:

if (isset($_POST['serial-number']))
    {
        require_once('lib/google_checkout/googleresponse.php');
        require_once('lib/google_checkout/googlerequest.php');
        require_once('lib/google_checkout/googlenotificationhistory.php');      
        $response = new GoogleResponse(GOOGLE_MERCHANT_ID, GOOGLE_MERCHANT_KEY);
        $google_notification_history = new GoogleNotificationHistoryRequest(GOOGLE_MERCHANT_ID, GOOGLE_MERCHANT_KEY, GOOGLE_SANDBOX ? 'sandbox' : 'production');
        $raw_xml_array = $google_notification_history->SendNotificationHistoryRequest($_POST['serial-number']);
        $raw_xml = $raw_xml_array[1];
        $response->SendAck($_POST['serial-number'], false);
        list($root, $order_data) = $response->GetParsedXML($raw_xml);

        if (isset($order_data['charge-amount-notification']))
        {
            $data = array();
            file_put_contents("google.txt", var_export($order_data, true));
            $data['name'] = $order_data['charge-amount-notification']['order-summary']['buyer-billing-address']['contact-name']['VALUE'];
            $data['email'] = $order_data['charge-amount-notification']['order-summary']['buyer-billing-address']['email']['VALUE'];
            $data['txn_id'] = $order_data['charge-amount-notification']['google-order-number']['VALUE'];
            $data['payment_status'] = 'Completed';
            $res = save_payment($data);
            if ($res) {
                $data = payment_details(array('txn_id' => $data['txn_id']));
                mail_notification($data);
            }            
        }
    }
4

1 に答える 1

0

この<order-summary>要素は、2.5APIバージョンでのみ通知に含まれます。Google CheckoutHTMLAPI通知API
は次 のように述べています。

Webサービスを確立したら、Merchant Centerアカウントにログインし、[設定]タブをクリックして、ページの左側にあるメニューの[統合]リンクをクリックします。[APIコールバックURL]フィールドにWebサービスのURLを入力します。(サンドボックスアカウントと本番アカウントの両方にAPIコールバックURLを入力する必要があります。)通知を受信する形式とAPIバージョンも指定する必要があります。このドキュメントでは、「シリアル番号としての通知」とAPIバージョン2.5について説明します。

ここに画像の説明を入力してください

于 2012-09-08T14:32:00.660 に答える