cancel
Showing results for 
Search instead for 
Did you mean: 

transactResponse is not getting after successful transaction in iframe

The response is showing in url:   https://test.authorize.net/payment/payment

 
The payment form is showing with card input fields, when click on pay or cancel the eventListener is not responding, When we enter card details and click on pay, it changes to processing and stuck on there. The popup close triggered by eventListener which is not working. The showReciept field is set to true also.
 
EventListener function:

window.addEventListener("message", function (e) {
            if (e.data.event_id === 'cancel') {
                setOpen(e?.data?.data?.v1)
            }
            else if (e.data.event_id === 'transactResponse') {
                setOpen(false)
                paymentResponse(JSON.parse(e.data.data.v1))
            }
        });
 
Communicator function:
 
function Communicator() {

useEffect(() => {
    async function onReceiveCommunication(querystr) {
            console.log('onReceiveCommunication', querystr)
            var params =  parseQueryString(querystr);
            switch (params["action"]) {
                case "successfulSave":
                 window.parent && window.parent.parent && window.parent.parent.postMessage(
                    {
                        event_id: 'successfulSave',
                        data: {
                            v1: false,
                            // v2: 'value2'
                        }
                    },
                    "*" //or "www.parentpage.com"
                )                
                    break;
                case "cancel":                    
                window.parent && window.parent.parent && window.parent.parent.postMessage(
                    {
                        event_id: 'cancel',
                        data: {
                            v1: false,
                            // v2: 'value2'
                        }
                    },
                    "*" //or "www.parentpage.com"
                )
                    break;
                case "transactResponse":
                    var response = params["response"];
                    //console.log("res",params)
                    window.parent && window.parent.parent && window.parent.parent.postMessage(
                        {
                            event_id: 'transactResponse',
                            data: {
                                v1: response,
                                v2: false,
                            }
                        },
                        "*" //or "www.parentpage.com"
                    )                    
                    break;
                case "resizeWindow":
                    // var w = parseInt(params["width"]);
                    // var h = parseInt(params["height"]);
                    // var ifrm = iframeAuthorizeNet;
                    // ifrm.style.width = w.toString() + "px";
                    // ifrm.style.height = h.toString() + "px";
                    // centerPopup();
                    break;
                }
        };

        function parseQueryString(str) {
            var vars = [];
            var arr = str.split('&');
            var pair;
            for (var i = 0; i < arr.length; i++) {
                pair = arr[i].split('=');
                vars.push(pair[0]);
                vars[pair[0]] = unescape(pair[1]);
            }
            return vars;
        }
   
    function callParentFunction(str) {
       
        if (str && str.length > 0)
            {
// Errors indicate a mismatch in domain between the page containing the iframe and this page.
                onReceiveCommunication(str)
            }
        }

    function receiveMessage(event) {        
        if (event && event.data) {
            callParentFunction(event.data);
            }
        }

    if (window.addEventListener) {
        window.addEventListener("message", receiveMessage, false);
        } else if (window.attachEvent) {
            window.attachEvent("onmessage", receiveMessage);
        }

    if (window.location.hash && window.location.hash.length > 1) {
        callParentFunction(window.location.hash.substring(1));
        }
}, [])


    return (
        <>
        </>
    )
}
 
 
 
meplinks
Member
0 REPLIES 0