سؤال

أنا تعتزم دمج خدمة Google Checkout نظام الدفع على موقع التواصل الاجتماعي.والفكرة هي أنه يمكن للأعضاء شراء "الرموز" من أجل المال الحقيقي (التي هي نوع من الموقع العملة) وبعد ذلك يمكن شراء الحصول على المزيد من المحتوى على الموقع.... الخ

ما أريد القيام به هو إنشاء حساب في Google Checkout أن يأخذ الأعضاء إلى صفحة الخروج حيث كان يدفع له مع بطاقة الائتمان أو الخصم.ما أريده هو الخروج جوجل أن يخطر يخطر الخادم إذا كان الشراء من الرموز الناجحة (إذا كانت بطاقة الائتمان/الخصم اتهم) حتى أتمكن من تحديث قاعدة البيانات المحلية.

الموقع مشفر في PHP/MySQL.

لقد تم تحميل نموذج التعليمات البرمجية PHP من هنا:code.google.com/p/google-checkout-php-sample-code/wiki/Documentation

اعرف كيفية إنشاء زر الخروج جوجل و أنا أيضا وضعت responsehandlerdemo.php الملف على الخادم.هذا هو الملف جوجل الخروج من المفترض أن إرسال استجابة (طبعا أنا تعيين المسار إلى الملف في جوجل حساب التاجر).

الآن في الرد معالج ملف هناك كتلة التبديل مع عدة بيانات حالة.مما يعني أن الدفع تم بنجاح و يمكن إضافة الرموز إلى حساب العضو في قاعدة البيانات ؟

  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;

}

أعتقد أن القضية "مشحونة" هو واحد, هل أنا محق ؟

السؤال الثاني, هل أحتاج إلى شهادة SSL إلى تلقي رد من جوجل الخروج ؟ وفقا لهذا أنا لا:groups.google.com/group/google-checkout-api-php/browse_thread/thread/10ce55177281c2b0

لكني لا أرى أنه مذكور في أي مكان في الوثائق الرسمية.

شكرا لك.

هل كانت مفيدة؟

المحلول

وأنا دمج هذا في موقعي منذ أكثر من 6 أشهر. انها حجم منخفض جدا، ولكن يعمل جيدا حتى الآن.


والشيء الأول الذي يجب أن تقلق هو 'تحميلها. وهذا يعني أن بطاقة الائتمان تمت الموافقة على هذه الصفقة، لكنها لن تهمة في الواقع أموال حتى يتم اتخاذ الإجراءات اللازمة. لإرسال طلب تهمة، ببساطة إلغاء التعليق سطرين تحت تحميلها. يمكنك تغيير الإعدادات لجعله تلقائيا شحن البطاقة في "ضبط"> "تفضيلات"، ولكن قد كذلك مجرد إلغاء التعليق خطوط 2 وترك الخيارات مفتوحة.

ملحوظة التي قد ترغب في الانتظار ل"مخاطر المعلومات إخطار 'وتحديد ما إذا كان الاختيار خطر مرت قبل الموافقة على تهمة ($ البيانات [$ الجذر] [' خطر المعلومات '] [' مؤهلة-ل- حماية '] [' VALUE ']). وعلى الرغم من يبدو أنك تتحدث عن السلع الرقمية إمكانية رد المبالغ المدفوعة قد لا يهم لك.

وعند نقطة ما، وأنا متأكد من أنك يجب أن تحقق أيضا أن الطلب ومعلومات كافية بالنسبة لك لربط الأموال لبعض الاعتبار قبل توجيه الاتهام لها، ولكن ربما هذا هو مجرد بلدي جنون العظمة.


والدولة الأخرى التي يمكنني استخدامها هو 'المسؤول عن كمية-الإخطار. فمن الممكن تماما أن هناك طريقة لاستخدام "مشحونة"، ولكن أنا لا أن "الاتهام" يوفر المبلغ الذي اتهم في الواقع. (البيانات $ amount_charged = $ [$ الجذر] [ 'الكلي، المسؤول عن كمية'] [ 'VALUE']؛)


وأما بالنسبة للSSL، إذا قمت بالتدقيق في الموقع حيث تقوم بإدخال URL رد عليه تنص على ما يلي: "تحديد URL لجوجل لإعلامك من أوامر والتغييرات الجديدة في الدولة النظام. يجب توفير URL من خادم يقوم بتشغيل 128 بت أنظمة SSLv3 أو TLS"


والإجابة على تعليقك: أفعل ذلك تحت عنوان "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
}

نصائح أخرى

نعم "إتهام" هو أول شيء كنت بحاجة إلى أن ننظر في Google Checkout النظام.عند النقر فوق "تحميلها" نافذة منبثقة لك في الواقع المسؤول عن النظام ولكن تأكد من أن "مؤهلة للحصول على الحماية" صحيح قبل فعلا شحن النظام.هذا يضمن لك أن الدفع يتم تغطيتها من قبل جوجل ضمان الدفع.في الحقيقة يمكنك أن ترى ذلك في "المشتري التحقق من الائتمان" القسم في Google Checkout.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top