<?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>thread Web Payments SDK - Google Pay: Cannot read property 'api' of undefined in Archived Discussions (Read Only)</title>
    <link>https://community.squareup.com/t5/Archived-Discussions-Read-Only/Web-Payments-SDK-Google-Pay-Cannot-read-property-api-of/m-p/279232#M92954</link>
    <description>&lt;P&gt;Howdy, y'all!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ok, I'm using the new Square Web Payments SDK with Angular 12 to generate the Google Pay button but I keep getting this error:&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;"TypeError: Cannot read property 'api' of undefined" and I've been trying numerous methods to resolve the issue.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's what I'm doing.&lt;BR /&gt;1. In my index.html file I'm referencing&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;script &lt;/SPAN&gt;&lt;SPAN&gt;type&lt;/SPAN&gt;&lt;SPAN&gt;="text/javascript" &lt;/SPAN&gt;&lt;SPAN&gt;src&lt;/SPAN&gt;&lt;SPAN&gt;="https://web.squarecdn.com/v1/square.js"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;script&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. In my checkout.component.html I have something like:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;form &lt;/SPAN&gt;&lt;SPAN&gt;id&lt;/SPAN&gt;&lt;SPAN&gt;="payment-form"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    &amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;div &lt;/SPAN&gt;&lt;SPAN&gt;id&lt;/SPAN&gt;&lt;SPAN&gt;="google-pay-button"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;div&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;form&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;3. In my checkout.component.ts file I'm declaring Square&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;declare var &lt;/SPAN&gt;Square&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;any&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;4. For the sake of getting the point across, I'm initializing the Square payments object like so&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;async &lt;/SPAN&gt;&lt;SPAN&gt;ngOnInit&lt;/SPAN&gt;&lt;SPAN&gt;(): &lt;/SPAN&gt;&lt;SPAN&gt;Promise&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt; {&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;const &lt;/SPAN&gt;applicationId &lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;'sq0idp-xxxxxxxxxxxxxxx'&lt;/SPAN&gt;&lt;SPAN&gt;; // production&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;const &lt;/SPAN&gt;locationId &lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;'xxxxxxxxxxx'&lt;/SPAN&gt;&lt;SPAN&gt;; // production&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;const &lt;/SPAN&gt;payments &lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;await &lt;/SPAN&gt;Square&lt;SPAN&gt;.&lt;/SPAN&gt;payments&lt;SPAN&gt;(&lt;/SPAN&gt;applicationId&lt;SPAN&gt;, &lt;/SPAN&gt;locationId&lt;SPAN&gt;);&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;const &lt;/SPAN&gt;paymentRequest &lt;SPAN&gt;= &lt;/SPAN&gt;payments&lt;SPAN&gt;.&lt;/SPAN&gt;paymentRequest&lt;SPAN&gt;({&lt;BR /&gt;&lt;/SPAN&gt;        countryCode&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;'US'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;        currencyCode&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;'USD'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;        total&lt;SPAN&gt;: {&lt;BR /&gt;&lt;/SPAN&gt;            amount&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;'1.00'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;            label&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;'Total'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;        },&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    });&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;const &lt;/SPAN&gt;googlePay &lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;await &lt;/SPAN&gt;payments&lt;SPAN&gt;.&lt;/SPAN&gt;googlePay&lt;SPAN&gt;(&lt;/SPAN&gt;paymentRequest&lt;SPAN&gt;); &amp;lt;---- throws exception&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;await &lt;/SPAN&gt;googlePay&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;attach&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'#google-pay-button'&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;but once I get to this line:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;const &lt;/SPAN&gt;googlePay &lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;await &lt;/SPAN&gt;payments&lt;SPAN&gt;.&lt;/SPAN&gt;googlePay&lt;SPAN&gt;(&lt;/SPAN&gt;paymentRequest&lt;SPAN&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;The exception is thrown: "TypeError: Cannot read property 'api' of undefined."&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've tried waiting till the DOM is finished loading by using:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;async &lt;/SPAN&gt;&lt;SPAN&gt;ngAfterViewInit&lt;/SPAN&gt;&lt;SPAN&gt;(): &lt;/SPAN&gt;&lt;SPAN&gt;Promise&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt; {&lt;BR /&gt;// Same code as above but only in ngAfterViewInit vs ngOnInit&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;But I still get that same exception. Also tried&amp;nbsp;&lt;STRONG&gt;ngAfterContentInit&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there something I'm missing?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 09 Jun 2021 03:37:30 GMT</pubDate>
    <dc:creator>Knowtifyd</dc:creator>
    <dc:date>2021-06-09T03:37:30Z</dc:date>
    <item>
      <title>Web Payments SDK - Google Pay: Cannot read property 'api' of undefined</title>
      <link>https://community.squareup.com/t5/Archived-Discussions-Read-Only/Web-Payments-SDK-Google-Pay-Cannot-read-property-api-of/m-p/279232#M92954</link>
      <description>&lt;P&gt;Howdy, y'all!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ok, I'm using the new Square Web Payments SDK with Angular 12 to generate the Google Pay button but I keep getting this error:&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;"TypeError: Cannot read property 'api' of undefined" and I've been trying numerous methods to resolve the issue.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's what I'm doing.&lt;BR /&gt;1. In my index.html file I'm referencing&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;script &lt;/SPAN&gt;&lt;SPAN&gt;type&lt;/SPAN&gt;&lt;SPAN&gt;="text/javascript" &lt;/SPAN&gt;&lt;SPAN&gt;src&lt;/SPAN&gt;&lt;SPAN&gt;="https://web.squarecdn.com/v1/square.js"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;script&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. In my checkout.component.html I have something like:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;form &lt;/SPAN&gt;&lt;SPAN&gt;id&lt;/SPAN&gt;&lt;SPAN&gt;="payment-form"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    &amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;div &lt;/SPAN&gt;&lt;SPAN&gt;id&lt;/SPAN&gt;&lt;SPAN&gt;="google-pay-button"&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;div&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;form&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;3. In my checkout.component.ts file I'm declaring Square&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;declare var &lt;/SPAN&gt;Square&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;any&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;4. For the sake of getting the point across, I'm initializing the Square payments object like so&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;async &lt;/SPAN&gt;&lt;SPAN&gt;ngOnInit&lt;/SPAN&gt;&lt;SPAN&gt;(): &lt;/SPAN&gt;&lt;SPAN&gt;Promise&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt; {&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;const &lt;/SPAN&gt;applicationId &lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;'sq0idp-xxxxxxxxxxxxxxx'&lt;/SPAN&gt;&lt;SPAN&gt;; // production&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;const &lt;/SPAN&gt;locationId &lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;'xxxxxxxxxxx'&lt;/SPAN&gt;&lt;SPAN&gt;; // production&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;const &lt;/SPAN&gt;payments &lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;await &lt;/SPAN&gt;Square&lt;SPAN&gt;.&lt;/SPAN&gt;payments&lt;SPAN&gt;(&lt;/SPAN&gt;applicationId&lt;SPAN&gt;, &lt;/SPAN&gt;locationId&lt;SPAN&gt;);&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;const &lt;/SPAN&gt;paymentRequest &lt;SPAN&gt;= &lt;/SPAN&gt;payments&lt;SPAN&gt;.&lt;/SPAN&gt;paymentRequest&lt;SPAN&gt;({&lt;BR /&gt;&lt;/SPAN&gt;        countryCode&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;'US'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;        currencyCode&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;'USD'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;        total&lt;SPAN&gt;: {&lt;BR /&gt;&lt;/SPAN&gt;            amount&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;'1.00'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;            label&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;'Total'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;        },&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    });&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;const &lt;/SPAN&gt;googlePay &lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;await &lt;/SPAN&gt;payments&lt;SPAN&gt;.&lt;/SPAN&gt;googlePay&lt;SPAN&gt;(&lt;/SPAN&gt;paymentRequest&lt;SPAN&gt;); &amp;lt;---- throws exception&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;await &lt;/SPAN&gt;googlePay&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;attach&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'#google-pay-button'&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;but once I get to this line:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;const &lt;/SPAN&gt;googlePay &lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;await &lt;/SPAN&gt;payments&lt;SPAN&gt;.&lt;/SPAN&gt;googlePay&lt;SPAN&gt;(&lt;/SPAN&gt;paymentRequest&lt;SPAN&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;The exception is thrown: "TypeError: Cannot read property 'api' of undefined."&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've tried waiting till the DOM is finished loading by using:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;async &lt;/SPAN&gt;&lt;SPAN&gt;ngAfterViewInit&lt;/SPAN&gt;&lt;SPAN&gt;(): &lt;/SPAN&gt;&lt;SPAN&gt;Promise&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt; {&lt;BR /&gt;// Same code as above but only in ngAfterViewInit vs ngOnInit&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;But I still get that same exception. Also tried&amp;nbsp;&lt;STRONG&gt;ngAfterContentInit&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there something I'm missing?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 09 Jun 2021 03:37:30 GMT</pubDate>
      <guid>https://community.squareup.com/t5/Archived-Discussions-Read-Only/Web-Payments-SDK-Google-Pay-Cannot-read-property-api-of/m-p/279232#M92954</guid>
      <dc:creator>Knowtifyd</dc:creator>
      <dc:date>2021-06-09T03:37:30Z</dc:date>
    </item>
    <item>
      <title>Re: Web Payments SDK - TypeError: Cannot read property 'api' of undefined</title>
      <link>https://community.squareup.com/t5/Archived-Discussions-Read-Only/Web-Payments-SDK-Google-Pay-Cannot-read-property-api-of/m-p/279249#M92955</link>
      <description>&lt;P&gt;Hi there&amp;nbsp;&lt;a href="https://community.squareup.com/t5/user/viewprofilepage/user-id/220240"&gt;@Knowtifyd&lt;/a&gt;, after taking a read of your post, I thought you may find more support on the developer forum, you can find that &lt;A href="https://developer.squareup.com/forums/" target="_self"&gt;HERE&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I hope I could help, if I did, mark this as best answer to point others with similar questions in the right direction in the future.&lt;/P&gt;</description>
      <pubDate>Tue, 08 Jun 2021 09:44:46 GMT</pubDate>
      <guid>https://community.squareup.com/t5/Archived-Discussions-Read-Only/Web-Payments-SDK-Google-Pay-Cannot-read-property-api-of/m-p/279249#M92955</guid>
      <dc:creator>MJD</dc:creator>
      <dc:date>2021-06-08T09:44:46Z</dc:date>
    </item>
    <item>
      <title>Re: Web Payments SDK - Google Pay: Cannot read property 'api' of undefined</title>
      <link>https://community.squareup.com/t5/Archived-Discussions-Read-Only/Web-Payments-SDK-Google-Pay-Cannot-read-property-api-of/m-p/285850#M92956</link>
      <description>&lt;P&gt;I'm experiencing this same exact issue! Were you able to resolve it?&lt;/P&gt;</description>
      <pubDate>Thu, 08 Jul 2021 17:14:08 GMT</pubDate>
      <guid>https://community.squareup.com/t5/Archived-Discussions-Read-Only/Web-Payments-SDK-Google-Pay-Cannot-read-property-api-of/m-p/285850#M92956</guid>
      <dc:creator>rbaron91</dc:creator>
      <dc:date>2021-07-08T17:14:08Z</dc:date>
    </item>
  </channel>
</rss>

