2

Below is my code-

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
*/

// @codingStandardsIgnoreFile

?>
<?php /** @var $block \Magento\Checkout\Block\Onepage\Success */ ?>
<div class="checkout-success">
<?php if ($block->getOrderId()):?>
    <?php if ($block->getCanViewOrder()) :?>
        <p><?= __('Your order number is: %1.', sprintf('<a href="%s" class="order-number"><strong>%s</strong></a>', $block->escapeHtml($block->getViewOrderUrl()), $block->escapeHtml($block->getOrderId()))) ?></p>
    <?php  else :?>
        <p><?= __('Your order # is: <span>%1</span>.', $block->escapeHtml($block->getOrderId())) ?></p>
    <?php endif;?>
        <p><?= /* @escapeNotVerified */ __('We\'ll email you an order confirmation with details and tracking info.') ?></p>
<?php endif;?>
<?= $block->getAdditionalInfoHtml() ?>
<div class="actions-toolbar">
    <div class="primary">
        <a class="action primary continue" href="<?= /* @escapeNotVerified */ $block->getContinueUrl() ?>"><span><?= /* @escapeNotVerified */ __('Continue Shopping') ?></span></a>
    </div>
</div>
</div>
<script src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script>

<script>
window.renderOptIn = function() {
    window.gapi.load('surveyoptin', function() {
        window.gapi.surveyoptin.render(
            {
                // REQUIRED FIELDS
                "merchant_id": xxxxxx,
                "order_id": "<?= $data['orderid']; ?>",
                "email": "<?= $data['email']; ?>",
                "delivery_country": "<?= $data['country_id']; ?>",
                "estimated_delivery_date": "<?= $data['delivery_date']; ?>",

                // OPTIONAL FIELDS
                "products": [{"gtin":"GTIN1"}, {"gtin":"GTIN2"}]
            });
    });
}

I based it off of Cross-origin problem: Google Customer Reviews is not displaying on success page

And I get this error- Exception #0 (Exception): Notice: Undefined variable: data in /chroot/home/html/app/design/frontend/Magento_Checkout/templates/success.phtml on line 36

At the bottom I changed it out to this-

         "merchant_id": xxxxx,
         "order_id": "<?php echo $order->getIncrementId() ?>",
         "email": "<?php echo $order->getCustomerEmail() ?>",
         "delivery_country": "<?php echo $order->getShippingAddress()->getCountryId() ?>",
          "estimated_delivery_date": "YYYY-MM-DD"

Based on Magento 2 : Google Customer Reviews

I get the same error. What is the proper code?

  • Please add before script <?= $data = $block->getOrderId(); ?> and try. – Pawan Feb 8 at 17:31
  • @Pawan Should I use the first or second example? – tjjen Feb 8 at 18:14
1

You can refer below Magento 2 Google Customer Reviews extension.

https://github.com/aleksandar-babic/magento2-GCR

  • 1
    That worked for me. – tjjen Feb 12 at 22:01
0

Add below code after default code of phtml.

<?php
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $data = $objectManager->create('Magento\Sales\Model\Order')->loadByIncrementId($block->getOrderId());
    $billinAdress = $data->getBillingAddress(); //you can also use shipping address

?>

<script src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script>

<script>
window.renderOptIn = function() {
    window.gapi.load('surveyoptin', function() {
        window.gapi.surveyoptin.render(
            {
                // REQUIRED FIELDS
                "merchant_id": xxxxxx,
                "order_id": "<?php echo $data->getId(); ?>",
                "email": "<?php echo $data->getCustomerEmail();?>",
                "delivery_country": "<?php echo $billinAdress->getCountryId();?>",
                "estimated_delivery_date": "<?php echo $data->getCreatedAt(); ?>",

                // OPTIONAL FIELDS
                "products": [{"gtin":"GTIN1"}, {"gtin":"GTIN2"}]
            });
    });
}

on front you will get result something like in console:

enter image description here

Notes:

  1. You can also use increment Id in above code

  2. You can also use Shipping address for country Id

  3. For estimated delivery date, I used order created date. You need to change it.

  4. Most Important I have used objectManager in above code, once yo got working code as per your requirement, Please use Dependency instead of objectManager

  • I tried multiple times with this and could never get it going. There were a few spelling errors that I fixed but even after that I couldn't get it. – tjjen Feb 12 at 22:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.