<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Unable to receive Transaction Response through iFrame in Integration and Testing</title>
    <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Unable-to-receive-Transaction-Response-through-iFrame/m-p/80624#M50815</link>
    <description>&lt;P&gt;Hello! Beginner Web Dev here trying to integrate Authroize.net payment system.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to setup and test Accept Hosted on my site using an iframe/lightbox by following this &lt;A href="https://developer.authorize.net/api/reference/features/accept_hosted.html#AcceptHosted_Response" target="_self"&gt;page&lt;/A&gt;. I am able to get the payment form to show up in the iframe and transactions are going through just fine once I click the "Pay" button as I can see it when I log into the sandbox.authorize.net. The issue is I can't receieve the Transaction Response from my site. I need to basically be able to tell from my site if the user clicked on "Pay" and the transaction was Auth/Captured so that I can email my digital products to the user OR if they clicked "Cancel" in which case I don't send them the product.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am getting these error messages from the console:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;'The loading of “&lt;A href="https://qpr.nitro/store/partials/iFrameCommunicator.html#actionresizeWindow&amp;amp;width427&amp;amp;height925.8" target="_blank" rel="noopener noreferrer"&gt;https://mysite/store/partials/iFrameCommunicator.html#actionresizeWindow&amp;amp;width427&amp;amp;height925.8&lt;/A&gt;” in a frame is denied by “X-Frame-Options“ directive set to “SAMEORIGIN“.'&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;'Failed to execute ‘postMessage’ on ‘DOMWindow’: The target origin provided (‘mysite’) does not match the recipient window’s origin (‘null’)'&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It looked like the issue was with CSP headers being SAMEORIGIN? So I tried to add a CSP Header in my .htcaccess like this but it still didn't work:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;PRE&gt;&amp;lt;IfModule mod_headers.c&amp;gt;
Header set Content-Security-Policy "frame-ancestors 'self' *.mysite https://mysite/ https://test.authorize.net *.authorize.net;";
&amp;lt;/IfModule&amp;gt;&lt;/PRE&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;I'm using craftCMS nitro and Docker on my local to test everything out.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My server side code for the payment token form:&lt;/P&gt;&lt;PRE&gt;$req = Craft::$app-&amp;gt;getRequest();
    $cost = $req-&amp;gt;getBodyParam('price');
    // define("AUTHORIZENET_LOG_FILE", "phplog");
    
    
    /* Create a merchantAuthenticationType object with authentication details
      retrieved from the constants file */
    $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
    $merchantAuthentication-&amp;gt;setName(getenv("ANET_SANDBOX_ID"));
    $merchantAuthentication-&amp;gt;setTransactionKey(getenv("ANET_SANDBOX_KEY"));
    
    // Set the transaction's refId
    $refId = 'ref' . time();

    //create a transaction
    $transactionRequestType = new AnetAPI\TransactionRequestType();
    $transactionRequestType-&amp;gt;setTransactionType("authCaptureTransaction");
    $transactionRequestType-&amp;gt;setAmount($cost);

    // Set Hosted Form options
    $setting1 = new AnetAPI\SettingType();
    $setting1-&amp;gt;setSettingName("hostedPaymentButtonOptions");
    $setting1-&amp;gt;setSettingValue("{\"text\": \"Pay\"}");

    $setting2 = new AnetAPI\SettingType();
    $setting2-&amp;gt;setSettingName("hostedPaymentOrderOptions");
    $setting2-&amp;gt;setSettingValue("{\"show\": false}");

    $setting3 = new AnetAPI\SettingType();
    $setting3-&amp;gt;setSettingName("hostedPaymentReturnOptions");
    $setting3-&amp;gt;setSettingValue("{\"showReceipt\": false, \"urlText\": \"Return\", \"cancelUrl\": \"https://qpr.nitro/store/partials/checkout-pay.twig\", \"cancelUrlText\": \"Cancel\"}");

    $setting4 = new AnetAPI\SettingType();
    $setting4-&amp;gt;setSettingName("hostedPaymentIFrameCommunicatorUrl");
    $setting4-&amp;gt;setSettingValue("{\"url\": \"https://qpr.nitro/store/partials/iFrameCommunicator.html\"}");

    $setting5 = new AnetAPI\SettingType();
    $setting5-&amp;gt;setSettingName("hostedPaymentPaymentOptions");
    $setting5-&amp;gt;setSettingValue("{\"cardCodeRequired\": true, \"showCreditCard\": true, \"showBankAccount\": false}");
    
    $setting6 = new AnetAPI\SettingType();
    $setting6-&amp;gt;setSettingName("hostedPaymentSecurityOptions");
    $setting6-&amp;gt;setSettingValue("{\"captcha\": true}");
    
    $setting7 = new AnetAPI\SettingType();
    $setting7-&amp;gt;setSettingName("hostedPaymentShippingAddressOptions");
    $setting7-&amp;gt;setSettingValue("{\"show\": true, \"required\": true}");

    $setting8 = new AnetAPI\SettingType();
    $setting8-&amp;gt;setSettingName("hostedPaymentCustomerOptions");
    $setting8-&amp;gt;setSettingValue("{\"showEmail\": true, \"requiredEmail\": true, \"addPaymentProfile\": false}");
    
    // Build transaction request
    $request = new AnetAPI\GetHostedPaymentPageRequest();
    $request-&amp;gt;setMerchantAuthentication($merchantAuthentication);
    $request-&amp;gt;setRefId($refId);
    $request-&amp;gt;setTransactionRequest($transactionRequestType);

    $request-&amp;gt;addToHostedPaymentSettings($setting1);
    $request-&amp;gt;addToHostedPaymentSettings($setting2);
    $request-&amp;gt;addToHostedPaymentSettings($setting3);
    $request-&amp;gt;addToHostedPaymentSettings($setting4);
    $request-&amp;gt;addToHostedPaymentSettings($setting5);
    $request-&amp;gt;addToHostedPaymentSettings($setting6);
    $request-&amp;gt;addToHostedPaymentSettings($setting7);
    $request-&amp;gt;addToHostedPaymentSettings($setting8);
    
    //execute request
    $controller = new AnetController\GetHostedPaymentPageController($request);
    $response = $controller-&amp;gt;executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
    

    return $this-&amp;gt;asJSON($response-&amp;gt;getToken());&lt;/PRE&gt;&lt;P&gt;Front End:&lt;/P&gt;&lt;PRE&gt;if (!window.AuthorizeNetPopup) window.AuthorizeNetPopup = {};
  if (!AuthorizeNetPopup.options) AuthorizeNetPopup.options = {
    onPopupClosed: null
    };
    
  AuthorizeNetPopup.openPopup = function () {
      var popup = document.getElementById("divAuthorizeNetPopup");
      var popupScreen = document.getElementById("divAuthorizeNetPopupScreen");
      var ifrm = document.getElementById("iframeAuthorizeNet");
      var form = document.forms["formAuthorizeNetPopup"];
      let paypalCont = document.getElementById("paypalContainer");
      let aNetUrl = "/actions/cls-lms/shop/shop-anet-token",
        total = "{{ totalPrice }}"
        csrfToken = "{{ csrfToken }}",
        csrfParam = "{{ csrfParam }}",
        shopApi = new craftApi();
  
      let payload = { price: total }
      paypalCont.style.display = "none";
      form.action = "https://test.authorize.net/payment/payment";
      ifrm.style.width = "442px";
      ifrm.style.height = "578px";
  
      shopApi.controllerAjaxRequest(aNetUrl, payload, csrfParam, csrfToken).
        then(function(response){ 
          $("#popupToken").val(response);
          setTimeout(form.submit(), 2);
        });
  
      popup.style.display = "";
      popupScreen.style.display = "";
      centerPopup();
    };
  
  
    AuthorizeNetPopup.closePopup = function () {
      document.getElementById("divAuthorizeNetPopupScreen").style.display = "none";
      document.getElementById("divAuthorizeNetPopup").style.display = "none";
      document.getElementById("iframeAuthorizeNet").src="empty.html";
      document.getElementById("btnOpenAuthorizeNetPopup").disabled = false;
      if (AuthorizeNetPopup.options.onPopupClosed) AuthorizeNetPopup.options.onPopupClosed();
      };
  
  
    AuthorizeNetPopup.openPopup = function () {
      var popup = document.getElementById("divAuthorizeNetPopup");
      var popupScreen = document.getElementById("divAuthorizeNetPopupScreen");
      var ifrm = document.getElementById("iframeAuthorizeNet");
      var form = document.forms["formAuthorizeNetPopup"];
      let paypalCont = document.getElementById("paypalContainer");
      let aNetUrl = "/actions/cls-lms/shop/shop-anet-token",
        total = "{{ totalPrice }}"
        csrfToken = "{{ csrfToken }}",
        csrfParam = "{{ csrfParam }}",
        shopApi = new craftApi();
  
      let payload = { price: total }
      paypalCont.style.display = "none";
      form.action = "https://test.authorize.net/payment/payment";
      ifrm.style.width = "442px";
      ifrm.style.height = "578px";
  
      shopApi.controllerAjaxRequest(aNetUrl, payload, csrfParam, csrfToken).
        then(function(response){ 
          $("#popupToken").val(response);
          setTimeout(form.submit(), 2);
        });
  
      popup.style.display = "";
      popupScreen.style.display = "";
      centerPopup();
    };
  
    AuthorizeNetPopup.onReceiveCommunication = function (querystr) {
        var params = parseQueryString(querystr);
        switch (params["action"]) {
          case "successfulSave":
            AuthorizeNetPopup.closePopup();
            break;
          case "cancel":
            AuthorizeNetPopup.closePopup();
            break;
          case "transactResponse":
            var response = params["response"];
            document.getElementById("token").value = response;
            AuthorizeNetPopup.closePopup();
            break;
          case "resizeWindow":
            var w = parseInt(params["width"]);
            var h = parseInt(params["height"]);
            var ifrm = document.getElementById("iframeAuthorizeNet");
            ifrm.style.width = w.toString() + "px";
            ifrm.style.height = h.toString() + "px";
            centerPopup();
            break;
          }
      };
  
  
    function centerPopup() {
      var d = document.getElementById("divAuthorizeNetPopup");
      d.style.left = "50%";
      d.style.top = "50%";
      var left = -Math.floor(d.clientWidth / 2);
      var top = -Math.floor(d.clientHeight / 2);
      d.style.marginLeft = left.toString() + "px";
      d.style.marginTop = top.toString() + "px";
      d.style.zIndex = "2";
      if (d.offsetLeft &amp;lt; 16) {
        d.style.left = "16px";
        d.style.marginLeft = "0px";
        }
      if (d.offsetTop &amp;lt; 16) {
        d.style.top = "16px";
        d.style.marginTop = "0px";
        }
      }
  
    function parseQueryString(str) {
        var vars = [];
        var arr = str.split('&amp;amp;');
        var pair;
        for (var i = 0; i &amp;lt; arr.length; i++) {
          pair = arr[i].split('=');
          vars.push(pair[0]);
          vars[pair[0]] = unescape(pair[1]);
        }
        return vars;
    }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 30 Dec 2021 20:58:51 GMT</pubDate>
    <dc:creator>mrfish55</dc:creator>
    <dc:date>2021-12-30T20:58:51Z</dc:date>
    <item>
      <title>Unable to receive Transaction Response through iFrame</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Unable-to-receive-Transaction-Response-through-iFrame/m-p/80624#M50815</link>
      <description>&lt;P&gt;Hello! Beginner Web Dev here trying to integrate Authroize.net payment system.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to setup and test Accept Hosted on my site using an iframe/lightbox by following this &lt;A href="https://developer.authorize.net/api/reference/features/accept_hosted.html#AcceptHosted_Response" target="_self"&gt;page&lt;/A&gt;. I am able to get the payment form to show up in the iframe and transactions are going through just fine once I click the "Pay" button as I can see it when I log into the sandbox.authorize.net. The issue is I can't receieve the Transaction Response from my site. I need to basically be able to tell from my site if the user clicked on "Pay" and the transaction was Auth/Captured so that I can email my digital products to the user OR if they clicked "Cancel" in which case I don't send them the product.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am getting these error messages from the console:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;'The loading of “&lt;A href="https://qpr.nitro/store/partials/iFrameCommunicator.html#actionresizeWindow&amp;amp;width427&amp;amp;height925.8" target="_blank" rel="noopener noreferrer"&gt;https://mysite/store/partials/iFrameCommunicator.html#actionresizeWindow&amp;amp;width427&amp;amp;height925.8&lt;/A&gt;” in a frame is denied by “X-Frame-Options“ directive set to “SAMEORIGIN“.'&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;'Failed to execute ‘postMessage’ on ‘DOMWindow’: The target origin provided (‘mysite’) does not match the recipient window’s origin (‘null’)'&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It looked like the issue was with CSP headers being SAMEORIGIN? So I tried to add a CSP Header in my .htcaccess like this but it still didn't work:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;PRE&gt;&amp;lt;IfModule mod_headers.c&amp;gt;
Header set Content-Security-Policy "frame-ancestors 'self' *.mysite https://mysite/ https://test.authorize.net *.authorize.net;";
&amp;lt;/IfModule&amp;gt;&lt;/PRE&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;I'm using craftCMS nitro and Docker on my local to test everything out.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My server side code for the payment token form:&lt;/P&gt;&lt;PRE&gt;$req = Craft::$app-&amp;gt;getRequest();
    $cost = $req-&amp;gt;getBodyParam('price');
    // define("AUTHORIZENET_LOG_FILE", "phplog");
    
    
    /* Create a merchantAuthenticationType object with authentication details
      retrieved from the constants file */
    $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
    $merchantAuthentication-&amp;gt;setName(getenv("ANET_SANDBOX_ID"));
    $merchantAuthentication-&amp;gt;setTransactionKey(getenv("ANET_SANDBOX_KEY"));
    
    // Set the transaction's refId
    $refId = 'ref' . time();

    //create a transaction
    $transactionRequestType = new AnetAPI\TransactionRequestType();
    $transactionRequestType-&amp;gt;setTransactionType("authCaptureTransaction");
    $transactionRequestType-&amp;gt;setAmount($cost);

    // Set Hosted Form options
    $setting1 = new AnetAPI\SettingType();
    $setting1-&amp;gt;setSettingName("hostedPaymentButtonOptions");
    $setting1-&amp;gt;setSettingValue("{\"text\": \"Pay\"}");

    $setting2 = new AnetAPI\SettingType();
    $setting2-&amp;gt;setSettingName("hostedPaymentOrderOptions");
    $setting2-&amp;gt;setSettingValue("{\"show\": false}");

    $setting3 = new AnetAPI\SettingType();
    $setting3-&amp;gt;setSettingName("hostedPaymentReturnOptions");
    $setting3-&amp;gt;setSettingValue("{\"showReceipt\": false, \"urlText\": \"Return\", \"cancelUrl\": \"https://qpr.nitro/store/partials/checkout-pay.twig\", \"cancelUrlText\": \"Cancel\"}");

    $setting4 = new AnetAPI\SettingType();
    $setting4-&amp;gt;setSettingName("hostedPaymentIFrameCommunicatorUrl");
    $setting4-&amp;gt;setSettingValue("{\"url\": \"https://qpr.nitro/store/partials/iFrameCommunicator.html\"}");

    $setting5 = new AnetAPI\SettingType();
    $setting5-&amp;gt;setSettingName("hostedPaymentPaymentOptions");
    $setting5-&amp;gt;setSettingValue("{\"cardCodeRequired\": true, \"showCreditCard\": true, \"showBankAccount\": false}");
    
    $setting6 = new AnetAPI\SettingType();
    $setting6-&amp;gt;setSettingName("hostedPaymentSecurityOptions");
    $setting6-&amp;gt;setSettingValue("{\"captcha\": true}");
    
    $setting7 = new AnetAPI\SettingType();
    $setting7-&amp;gt;setSettingName("hostedPaymentShippingAddressOptions");
    $setting7-&amp;gt;setSettingValue("{\"show\": true, \"required\": true}");

    $setting8 = new AnetAPI\SettingType();
    $setting8-&amp;gt;setSettingName("hostedPaymentCustomerOptions");
    $setting8-&amp;gt;setSettingValue("{\"showEmail\": true, \"requiredEmail\": true, \"addPaymentProfile\": false}");
    
    // Build transaction request
    $request = new AnetAPI\GetHostedPaymentPageRequest();
    $request-&amp;gt;setMerchantAuthentication($merchantAuthentication);
    $request-&amp;gt;setRefId($refId);
    $request-&amp;gt;setTransactionRequest($transactionRequestType);

    $request-&amp;gt;addToHostedPaymentSettings($setting1);
    $request-&amp;gt;addToHostedPaymentSettings($setting2);
    $request-&amp;gt;addToHostedPaymentSettings($setting3);
    $request-&amp;gt;addToHostedPaymentSettings($setting4);
    $request-&amp;gt;addToHostedPaymentSettings($setting5);
    $request-&amp;gt;addToHostedPaymentSettings($setting6);
    $request-&amp;gt;addToHostedPaymentSettings($setting7);
    $request-&amp;gt;addToHostedPaymentSettings($setting8);
    
    //execute request
    $controller = new AnetController\GetHostedPaymentPageController($request);
    $response = $controller-&amp;gt;executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
    

    return $this-&amp;gt;asJSON($response-&amp;gt;getToken());&lt;/PRE&gt;&lt;P&gt;Front End:&lt;/P&gt;&lt;PRE&gt;if (!window.AuthorizeNetPopup) window.AuthorizeNetPopup = {};
  if (!AuthorizeNetPopup.options) AuthorizeNetPopup.options = {
    onPopupClosed: null
    };
    
  AuthorizeNetPopup.openPopup = function () {
      var popup = document.getElementById("divAuthorizeNetPopup");
      var popupScreen = document.getElementById("divAuthorizeNetPopupScreen");
      var ifrm = document.getElementById("iframeAuthorizeNet");
      var form = document.forms["formAuthorizeNetPopup"];
      let paypalCont = document.getElementById("paypalContainer");
      let aNetUrl = "/actions/cls-lms/shop/shop-anet-token",
        total = "{{ totalPrice }}"
        csrfToken = "{{ csrfToken }}",
        csrfParam = "{{ csrfParam }}",
        shopApi = new craftApi();
  
      let payload = { price: total }
      paypalCont.style.display = "none";
      form.action = "https://test.authorize.net/payment/payment";
      ifrm.style.width = "442px";
      ifrm.style.height = "578px";
  
      shopApi.controllerAjaxRequest(aNetUrl, payload, csrfParam, csrfToken).
        then(function(response){ 
          $("#popupToken").val(response);
          setTimeout(form.submit(), 2);
        });
  
      popup.style.display = "";
      popupScreen.style.display = "";
      centerPopup();
    };
  
  
    AuthorizeNetPopup.closePopup = function () {
      document.getElementById("divAuthorizeNetPopupScreen").style.display = "none";
      document.getElementById("divAuthorizeNetPopup").style.display = "none";
      document.getElementById("iframeAuthorizeNet").src="empty.html";
      document.getElementById("btnOpenAuthorizeNetPopup").disabled = false;
      if (AuthorizeNetPopup.options.onPopupClosed) AuthorizeNetPopup.options.onPopupClosed();
      };
  
  
    AuthorizeNetPopup.openPopup = function () {
      var popup = document.getElementById("divAuthorizeNetPopup");
      var popupScreen = document.getElementById("divAuthorizeNetPopupScreen");
      var ifrm = document.getElementById("iframeAuthorizeNet");
      var form = document.forms["formAuthorizeNetPopup"];
      let paypalCont = document.getElementById("paypalContainer");
      let aNetUrl = "/actions/cls-lms/shop/shop-anet-token",
        total = "{{ totalPrice }}"
        csrfToken = "{{ csrfToken }}",
        csrfParam = "{{ csrfParam }}",
        shopApi = new craftApi();
  
      let payload = { price: total }
      paypalCont.style.display = "none";
      form.action = "https://test.authorize.net/payment/payment";
      ifrm.style.width = "442px";
      ifrm.style.height = "578px";
  
      shopApi.controllerAjaxRequest(aNetUrl, payload, csrfParam, csrfToken).
        then(function(response){ 
          $("#popupToken").val(response);
          setTimeout(form.submit(), 2);
        });
  
      popup.style.display = "";
      popupScreen.style.display = "";
      centerPopup();
    };
  
    AuthorizeNetPopup.onReceiveCommunication = function (querystr) {
        var params = parseQueryString(querystr);
        switch (params["action"]) {
          case "successfulSave":
            AuthorizeNetPopup.closePopup();
            break;
          case "cancel":
            AuthorizeNetPopup.closePopup();
            break;
          case "transactResponse":
            var response = params["response"];
            document.getElementById("token").value = response;
            AuthorizeNetPopup.closePopup();
            break;
          case "resizeWindow":
            var w = parseInt(params["width"]);
            var h = parseInt(params["height"]);
            var ifrm = document.getElementById("iframeAuthorizeNet");
            ifrm.style.width = w.toString() + "px";
            ifrm.style.height = h.toString() + "px";
            centerPopup();
            break;
          }
      };
  
  
    function centerPopup() {
      var d = document.getElementById("divAuthorizeNetPopup");
      d.style.left = "50%";
      d.style.top = "50%";
      var left = -Math.floor(d.clientWidth / 2);
      var top = -Math.floor(d.clientHeight / 2);
      d.style.marginLeft = left.toString() + "px";
      d.style.marginTop = top.toString() + "px";
      d.style.zIndex = "2";
      if (d.offsetLeft &amp;lt; 16) {
        d.style.left = "16px";
        d.style.marginLeft = "0px";
        }
      if (d.offsetTop &amp;lt; 16) {
        d.style.top = "16px";
        d.style.marginTop = "0px";
        }
      }
  
    function parseQueryString(str) {
        var vars = [];
        var arr = str.split('&amp;amp;');
        var pair;
        for (var i = 0; i &amp;lt; arr.length; i++) {
          pair = arr[i].split('=');
          vars.push(pair[0]);
          vars[pair[0]] = unescape(pair[1]);
        }
        return vars;
    }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Dec 2021 20:58:51 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Unable-to-receive-Transaction-Response-through-iFrame/m-p/80624#M50815</guid>
      <dc:creator>mrfish55</dc:creator>
      <dc:date>2021-12-30T20:58:51Z</dc:date>
    </item>
  </channel>
</rss>

