Announcement

Collapse
No announcement yet.

Checkout Problems (PayPal Payflow Pro Gateway, Amazon Pay & Paypal Express Checkout)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Checkout Problems (PayPal Payflow Pro Gateway, Amazon Pay & Paypal Express Checkout)

    I am having issues when I try to place test orders on our developer site.

    PayPal Payflow Pro Gateway issue:

    When i try to complete the test order from the OPAY screen in checkout It gives me this error: "Unable to authorize payment: Under review by Fraud Service". The order does not go through on the backend and it just stays on the OPAY screen.

    Here is the code for the OPAY screen:

    Code:
    <mvt:item name="html_profile" />
    <head>
        <mvt:if expr="NOT ISNULL l.settings:page:title">
            <title>&mvt:page:title;</title>
        <mvt:else>
            <title>&mvt:store:name;: &mvt:page:name;</title>
        </mvt:if>
        <mvt:item name="head" param="head_tag" />
        <mvt:if expr="l.settings:payment:capabilities:split">
            <script type="text/javascript">
                function AmountType_Changed( amounttype ){
                var balance_amount, amount, additional;
    
                    balance_amount    = document.getElementById( 'payment-balance-amount' );
                    amount            = document.getElementById( 'payment-amount' );
                    additional        = document.getElementById( 'payment-additional' );
    
                    if ( amounttype === 'total' )
                    {
                        amount.disabled                = true;
                        additional.style.display    = 'none';
    
                        if ( balance_amount )
                        {
                            balance_amount.disabled    = true;
                        }
                    }
                    else if ( amounttype === 'balance' )
                    {
                        amount.disabled                = true;
                        additional.style.display    = '';
    
                        if ( balance_amount )
                        {
                            balance_amount.disabled    = false;
                        }
                    }
                    else if ( amounttype === 'partial' )
                    {
                        amount.disabled                = false;
                        additional.style.display    = '';
    
                        if ( balance_amount )
                        {
                            balance_amount.disabled    = true;
                        }
                    }
                }
            </script>
        </mvt:if>
    </head>
    <body id="js-&mvte:page:code;" class="<mvt:eval expr="tolower(l.settings:page:code)" /> single-column">
        <mvt:item name="hdft" param="global_header" />
        <mvt:item name="html_profile" />
        <div class="row hdft-header">
            <mvt:item name="hdft" param="header" />
        </div>
        <div class="row main-content-row">
            <div class="column whole cart-contents">
                <form method="post" action="&mvt:payment:url;" id="js-opay-form" class="clearfix">
                    <input type="hidden" name="Action" value="AUTH" />
                    <input type="hidden" name="Screen" value="INVC" />
                    <input type="hidden" name="Store_Code" value="&mvte:global:Store_Code;" />
                    <mvt:item name="payment" />
                    <input type="hidden" name="PaymentMethod" value="&mvte:global:PaymentMethod;" />
                    <input type="hidden" name="SplitPaymentData" value="&mvte:global:SplitPaymentData;" />
                    <input type="hidden" name="PaymentDescription" value="&mvte:payment:desc;" />
                    <div>
                        <p class="column whole h4 fields-heading" style="background:#e8e8e8;margin-bottom:0"><span class="icon-icon_lock"></span> Payment Method: &mvt:payment:desc;</p>
                    </div>
                    <div class="column whole bg-lt-gray ptp1 pbm1 mbm1-25">
                        <div class="column whole medium-half">
                            <mvt:if expr="NOT ISNULL l.settings:payment:desc">
                                <span class="bold"></span>
                            </mvt:if>
                            <mvt:if expr="NOT ISNULL l.settings:payment:message">
                                <p class="column whole">&mvt:payment:message;</p>
                            </mvt:if>
                            <mvt:if expr="l.settings:paymentsettings:mivapay:enabled AND ( l.settings:mivapay:paymentcardtype:id OR l.settings:mivapay:paymentcard:id )">
                                <div class="form-row">
                                    <mvt:item name="mivapay" />
                                </div>
                            <mvt:elseif expr="'brain' CIN g.PaymentMethod">
                                <mvt:foreach array="payment:fields" iterator="field">
                                    <div class="form-row">
                                        <mvt:item name="payment" param="field:code" />
                                    </div>
                                </mvt:foreach>
                            <mvt:else>
                                <mvt:foreach array="payment:fields" iterator="field">
                                    <div id="js-&mvt:field:code;" class="form-row">
                                        <mvt:if expr="l.settings:field:invalid">
                                            <label class="required error">&mvt:field:prompt;</label>
                                        <mvt:else>
                                            <label class="required">&mvt:field:prompt;</label>
                                        </mvt:if>
                                        <div class="&mvt:field:code;"><mvt:item name="payment" param="field:code" /></div>
                                    </div>
                                </mvt:foreach>
                            </mvt:if>
                            <mvt:if expr="l.settings:payment:capabilities:split">
                                <div class="form-row">
                                    <mvt:if expr="g.Amount_Invalid">
                                        <label class="required error">Payment Amount:</label>
                                    <mvt:else>
                                        <label class="required">Payment Amount:</label>
                                    </mvt:if>
                                    <div id="payment-amount-fields">
                                        <mvt:if expr="( NOT l.settings:payment:capabilities:balance ) OR ( l.settings:payment:balance GE l.settings:splitpayment:remaining )">
                                            <mvt:if expr="NOT g.UI_Exception">
                                                <mvt:assign name="g.AmountType" value="'total'" />
                                                <mvt:assign name="g.Amount" value="l.settings:splitpayment:remaining ROUND 2" />
                                            </mvt:if>
                                            <mvt:if expr="g.AmountType EQ 'total'">
                                                <input type="radio" name="AmountType" value="total" onclick="AmountType_Changed( this.value );" checked />
                                            <mvt:else>
                                                <input type="radio" name="AmountType" value="total" onclick="AmountType_Changed( this.value );" />
                                            </mvt:if>
                                            <mvt:if expr="NOT ISNULL l.settings:payment:split_data">
                                                Remaining Order Total (&mvt:payment:formatted_remaining;)<br />
                                            <mvt:else>
                                                Entire Order Total (&mvt:basket:formatted_total;)<br />
                                            </mvt:if>
                                        <mvt:else>
                                            <mvt:if expr="NOT g.UI_Exception">
                                                <mvt:assign name="g.AmountType" value="'balance'" />
                                                <mvt:assign name="g.Amount" value="l.settings:payment:balance ROUND 2" />
                                            </mvt:if>
                                            <mvt:if expr="g.AmountType EQ 'balance'">
                                                <input type="radio" name="AmountType" value="balance" onclick="AmountType_Changed( this.value );" checked />
                                                <input type="hidden" id="payment-balance-amount" name="Amount" value="&mvte:payment:balance;" />
                                            <mvt:else>
                                                <input type="radio" name="AmountType" value="balance" onclick="AmountType_Changed( this.value );" />
                                                <input type="hidden" id="payment-balance-amount" name="Amount" value="&mvte:payment:balance;" disabled />
                                            </mvt:if>
                                            Available Balance (&mvt:payment:formatted_balance;)<br />
                                        </mvt:if>
                                        <mvt:if expr="g.AmountType EQ 'partial'">
                                            <input type="radio" name="AmountType" value="partial" onclick="AmountType_Changed( this.value );" checked />
                                            Partial: <input type="text" id="payment-amount" name="Amount" value="&mvte:global:Amount;" />
                                        <mvt:else>
                                            <input type="radio" name="AmountType" value="partial" onclick="AmountType_Changed( this.value );" />
                                            Partial: <input type="text" id="payment-amount" name="Amount" value="&mvte:global:Amount;" disabled />
                                        </mvt:if>
                                    </div>
                                </div>
                                <mvt:if expr="g.AmountType EQ 'total'">
                                    <mvt:assign name="g.totalPayment" value="'display: none;'" />
                                </mvt:if>
                                <div id="payment-additional" style="&mvt:global:totalPayment;">
                                    <div class="form_row">
                                        <label class="required">Pay Additional Balance With:</label>
                                        <select name="AdditionalPaymentMethod">
                                            <mvt:foreach array="paymentmethods" iterator="method">
                                                <mvt:if expr="(l.settings:method:module NE 'customercredit') OR ((g.PaymentMethod NE 'customercredit:credit') AND  (NOT miva_array_search(l.settings:splitpayment:splits, 1, l.split, 'l.split:module:code EQ l.settings:method:module')))">
                                                    <mvt:if expr="l.settings:method:paymentcard:id">
                                                        <option value="paymentcard:&mvte:method:paymentcard:id;">&mvt:method:name;</option>
                                                    <mvt:elseif expr="l.settings:method:paymentcardtype:id">
                                                        <option value="paymentcardtype:&mvte:method:paymentcardtype:id;">&mvt:method:name;</option>
                                                    <mvt:else>
                                                        <option value="&mvte:method:module;:&mvte:method:code;">&mvt:method:name;</option>
                                                    </mvt:if>
                                                </mvt:if>
                                            </mvt:foreach>
                                        </select>
                                    </div>
                                </div>
                            </mvt:if>
                        </div>
                    </div>
                    <div class="breaker"></div>
                    <div>
                        <div class="column whole align-center np">
                            <mvt:if expr="l.settings:paymentsettings:mivapay:enabled AND ( l.settings:mivapay:paymentcardtype:id OR l.settings:mivapay:paymentcard:id )">
                                <script>
                                    var onclick_submit = function( event ) {
                                        if ( MivaPay && ( typeof MivaPay.Submit === 'function' ) ) {
                                            MivaPay.Submit( function() {
                                                var form;
    
                                                form = document.getElementById( 'js-opay-form' );
                                                form.submit();
                                            } );
                                        }
                                    }
                                </script>
                                <span onclick="onclick_submit(); return false;">
                                    <input class="button button-large-font corners bg-sky" type="submit" value="Complete Order" title="Complete Order">
                                    <p class="ptp1"><span id="siteseal"><script type="text/javascript" src="https://seal.godaddy.com/getSeal&#63;sealID=O77iPdMF08ACXGhM5cEzqTjCiEH72r6dwXCQDC3RAcc0NWC6cK"></script></span></p>
                                    <p><script src="https://sealserver.trustwave.com/seal.js?style=invert&amp;size=65x36&amp;code=f6e634926e664239a5a4daf7f9938bee"></script></span></p>
                                </span>
                            <mvt:elseif expr="'brain' CIN g.PaymentMethod">
                                <input class="button button-large-font corners bg-sky" type="submit" value="Complete Order" title="Complete Order">
                                <p class="ptp1"><span id="siteseal"><script type="text/javascript" src="https://seal.godaddy.com/getSeal&#63;sealID=O77iPdMF08ACXGhM5cEzqTjCiEH72r6dwXCQDC3RAcc0NWC6cK"></script></span></p>
                                <p><script src="https://sealserver.trustwave.com/seal.js?style=invert&amp;size=65x36&amp;code=f6e634926e664239a5a4daf7f9938bee"></script></span></p>
                            <mvt:else>
                                <input class="button button-large-font corners bg-sky" type="submit" value="Complete Order" title="Complete Order">
                                <p class="ptp1"><span id="siteseal"><script type="text/javascript" src="https://seal.godaddy.com/getSeal&#63;sealID=O77iPdMF08ACXGhM5cEzqTjCiEH72r6dwXCQDC3RAcc0NWC6cK"></script></span></p>
                                <p><script src="https://sealserver.trustwave.com/seal.js?style=invert&amp;size=65x36&amp;code=f6e634926e664239a5a4daf7f9938bee"></script></span></p>
                            </mvt:if>
                        </div>
                    </div>
                    <div class="breaker"></div>
                </form>
            </div>
            <div class="column whole cart-summary">
                <div id="js-toggle-cart-summary-contents" class="basket-header-row align-center">Cart Summary <span>▼</span></div>
                <div id="js-cart-summary-contents">
                    <mvt:item name="basket" />
                    <mvt:item name="customer" />
                </div>
            </div>
        </div>
        <div class="row hdft-footer">
            <mvt:item name="hdft" param="footer" />
        </div>
        <mvt:item name="hdft" param="global_footer" />
    </body>
    </html>


    For Amazon Pay, when the complete order button is clicked from the AMAZONPAY_OPAY page, it gives me this error: "Runtime error in mm5/5.00/modules/component/cmp-cssui-breadcrumbs.mvc @ [00000011:00000ee2]: modules/component/cmp-cssui-breadcrumbs.mv: Line 419: (in expression): Array index must be positive integer".

    It does not bring you to the INVC page, although it does process the order and an order number is assigned. No merchant emails or customer invoice emails are sent though which is another issue.

    This is the code for the AMAZONPAY_OPAY page:

    Code:
    <mvt:item name="html_profile" />
    <head>
        <mvt:if expr="NOT ISNULL l.settings:page:title">
            <title>&mvt:page:title;</title>
        <mvt:else>
            <title>&mvt:store:name;: &mvt:page:name;</title>
        </mvt:if>
        <mvt:item name="head" param="head_tag" />
        <mvt:item name="amazonpay" />
    </head>
    <body id="js-&mvte:page:code;" class="<mvt:eval expr="tolower(l.settings:page:code)" /> single-column">
        <mvt:item name="hdft" param="global_header" />
        <mvt:item name="html_profile" />
        <div class="row hdft-header">
            <mvt:item name="hdft" param="header" />
        </div>
        <div class="row main-content-row">
            <div class="whole cart-contents">
                <form method="post" action="&mvt:payment:url;" id="js-opay-form" class="clearfix">
                    <input type="hidden" name="Action" value="AUTH" />
                    <input type="hidden" name="Screen" value="INVC" />
                    <input type="hidden" name="Store_Code" value="&mvte:global:Store_Code;" />
                    <div class="column whole medium-half mbm1-25">
                    <p class="h4 fields-heading"><span class="icon-icon_lock"></span> Select Amazon Payment Method Below</p>
                        <mvt:item name="amazonpay_wallet" />
                    </div>
                    <div class="column whole medium-half mbm1-25">
                    <p class="h4 fields-heading">Amazon Shipping Address</p>
                        <mvt:item name="amazonpay_address" />
                    </div>
                    <input type="hidden" name="PaymentMethod" value="&mvte:global:PaymentMethod;" />
                    <input type="hidden" name="PaymentAuthorizationToken" value="&mvte:global:Basket:auth_token;" />
                    <div class="column whole align-center np">
                        <input class="button button-large-font corners bg-sky" type="submit" value="Complete Order" title="Complete Order">
                        <p class="ptp1"><span id="siteseal"><script type="text/javascript" src="https://seal.godaddy.com/getSeal&#63;sealID=O77iPdMF08ACXGhM5cEzqTjCiEH72r6dwXCQDC3RAcc0NWC6cK"></script></span></p>
                        <p><script src="https://sealserver.trustwave.com/seal.js?style=invert&amp;size=65x36&amp;code=f6e634926e664239a5a4daf7f9938bee"></script></span></p>
                    </div>
                </form>
            </div>
            <div class="column whole cart-summary">
                <div id="js-toggle-cart-summary-contents" class="basket-header-row align-center">Cart Summary <span>▼</span></div>
                <div id="js-cart-summary-contents">
                    <mvt:item name="basket" />
                </div>
            </div>
        </div>
        <div class="row hdft-footer">
            <mvt:item name="hdft" param="footer" />
        </div>
        <mvt:item name="hdft" param="global_footer" />
    </body>
    </html>

    Now for PayPal Express checkout and/or PayPal Payments Pro you click on the paypal button from the BASK screen just like Amazon Pay. You log in and then you're redirected to the OSCT screen with your address information already filled out. You then go to step 2 on the OSEL page where you select the shipping method and the only available payment method is PayPal so all of that appears to be working just fine.

    Once you get to the OPAY screen all you have to do is click Complete Order. When that is clicked we get a similar error and behavior as Amazon Pay.

    The error: "Runtime error in mm5/5.00/modules/component/cmp-cssui-breadcrumbs.mvc @ [00000011:00000ee2]: modules/component/cmp-cssui-breadcrumbs.mv: Line 419: (in expression): Array index must be positive integer"

    It also like Amazon Pay does not bring you to the INVC page, although it does process the order and an order number is assigned. No merchant emails or customer invoice emails are sent though which is another issue.

    The Code for the OPAY screen is above.


    Any Help on these issues would be greatly appreciated.

    Thanks in advance.

    -Nick Harkins




    Nick Harkins
    www.loveisarose.com

    #2
    Hello SidFeyDesigns,

    Regarding the 1st issue with PayPal Payflow Pro, Unable to authorize payment: Under review by Fraud Service. By any chance does that site have any fraud protection modules or services enabled, maxmind or anything like that?

    For the runtime errors you're getting with Amazon Pay and Paypal Express checkout, I'd recommend you send [email protected] an email with these details and include a link to this forum post so we can assist you. We'll need to look at your store settings to troubleshoot those errors.

    Regards,
    Rafael Buelna
    Miva Support Engineer
    800.608.MIVA
    http://www.miva.com
    http://www.miva.com/support

    Comment


      #3
      We have no extra fraud modules. I will have to create a ticket with our host since we do not use miva hosting.
      Nick Harkins
      www.loveisarose.com

      Comment


        #4
        That PayFlow Fraud service sounds like a Fraud control check enabled on the PayPal side not on the Miva side FWIW.
        Thanks,

        Rick Wilson
        CEO
        Miva, Inc.
        [email protected]
        https://www.miva.com

        Comment


          #5
          Thanks Rick. Could it be because we are trying to do a test order on the Dev site? and not the live url associated with payflow pro.
          Nick Harkins
          www.loveisarose.com

          Comment


            #6
            You might try Googling this: Unable to authorize payment: Under review by Fraud Service

            Or asking PayFlow, I'm not familiar with those error codes underlying triggers.
            Thanks,

            Rick Wilson
            CEO
            Miva, Inc.
            [email protected]
            https://www.miva.com

            Comment


              #7
              Disregard Payflow Pro. I have talked to them and have successfully processed a transaction and now I know this:

              For all three payment options (PayPal Payflow Pro Gateway, Amazon Pay & Paypal Express Checkout) that same behavior is happening.

              The transactions do go through but the customer is not brought to the INVC screen and the merchant/customer email confirmations are not sent.

              The error message is the same for all three after clicking the Complete Order button

              Error Message:
              "Runtime error in mm5/5.00/modules/component/cmp-cssui-breadcrumbs.mvc @ [00000011:00000ee2]: modules/component/cmp-cssui-breadcrumbs.mv: Line 419: (in expression): Array index must be positive integer"

              Perhaps there is something I am Missing on the AMAZONPAY_OPAY and OPAY page templates.
              Nick Harkins
              www.loveisarose.com

              Comment


                #8
                Originally posted by SidFeyDesigns View Post
                Disregard Payflow Pro. I have talked to them and have successfully processed a transaction and now I know this:

                For all three payment options (PayPal Payflow Pro Gateway, Amazon Pay & Paypal Express Checkout) that same behavior is happening.

                The transactions do go through but the customer is not brought to the INVC screen and the merchant/customer email confirmations are not sent.

                The error message is the same for all three after clicking the Complete Order button

                Error Message:
                "Runtime error in mm5/5.00/modules/component/cmp-cssui-breadcrumbs.mvc @ [00000011:00000ee2]: modules/component/cmp-cssui-breadcrumbs.mv: Line 419: (in expression): Array index must be positive integer"

                Perhaps there is something I am Missing on the AMAZONPAY_OPAY and OPAY page templates.

                Hello SidFeyDesigns,

                Check your Invoice (INVC) page and see if you have the "breadcrumbs" item assigned to the INVC page, it should not be assigned to that page. The reason the email notifications are not being sent is because the customer and merchant notification emails are triggered when a customer hits the INVC page.

                - Login to your Miva admin
                - Go to Menu > User Interface > Search for INVC and edit the Invoice page
                - once you're in the INVC page click on the Items tab and see if you have "breadcrumbs" assigned to the INVC page, if you do, unassign that item, hit update to save the changes and then test it out again.

                Let me know if that helps.

                Regards
                Rafael Buelna
                Miva Support Engineer
                800.608.MIVA
                http://www.miva.com
                http://www.miva.com/support

                Comment


                  #9
                  Yes!!! That did the trick!!

                  Thank you so much.

                  I knew it was something simple I was missing.

                  Now is there a way to make sure that when they are brought to the INVC page that the URL in the address bar reads https://www.example.com/INVC.html instead of https://www.example.com/mm5/merchant.mvc?

                  We use the Toolkit Shortlinks (Legacy Shortlinks)

                  The code for the OPAY page is at the top of this thread.

                  Thanks!
                  Nick Harkins
                  www.loveisarose.com

                  Comment


                    #10
                    Just want to make sure our google analytics / adwords transactions are being recorded accurately.
                    Nick Harkins
                    www.loveisarose.com

                    Comment


                      #11
                      Originally posted by SidFeyDesigns View Post
                      Yes!!! That did the trick!!

                      Thank you so much.

                      I knew it was something simple I was missing.

                      Now is there a way to make sure that when they are brought to the INVC page that the URL in the address bar reads https://www.example.com/INVC.html instead of https://www.example.com/mm5/merchant.mvc?

                      We use the Toolkit Shortlinks (Legacy Shortlinks)

                      The code for the OPAY page is at the top of this thread.

                      Thanks!
                      Hello SidFeyDesigns,

                      > Thank you so much. I knew it was something simple I was missing.

                      Awesome, glad it was just the item assignment.

                      Regarding the URL for the invoice page, if your store is on CSSUI you might want to look into switching to our built-in URI management feature, I believe you can achieve that with URI settings.


                      I'll see if I can get a definite answer on that.

                      Regards,
                      Last edited by rbuelna; 05-22-18, 04:21 PM.
                      Rafael Buelna
                      Miva Support Engineer
                      800.608.MIVA
                      http://www.miva.com
                      http://www.miva.com/support

                      Comment


                        #12
                        Okay, Thank you.
                        Nick Harkins
                        www.loveisarose.com

                        Comment

                        Working...
                        X