====== API integration ====== The Wizard's Toolkit has functions to make integrating with APIs easier for the developer. These functions are kept in the /wtk/lib folder and are named after the company they are integrating with. These include: * PayPal * wtkPayPalOneItem * wtkShoppingCart * wtkViewCart * wtkBuyNow * wtkBuyRedir * wtkSubscribePayPal * wtkUnSubscribePayPal * Twilio (for sending SMS) * wtkSendSMS * Google * wtkGmap (create a Google map with markers where your locations are) * wtkGetTimeZoneFromGeoCodes * wtkMapLink (create link to map) * Social (various functions for social media) * wtkSocialSmartLayer (AddThis) * wtkSocialFollowUs (AddThis) * wtkHtmShowSocial (AddThis) * wtkHtmShowTwitter Currently the **Stripe** API integration is being worked on and should be added to the Wizard's Toolkit by June 2022. ===== Returning to SPA from APIs ===== When you need to give a link to a website so it can return a user to a page within your SPA (Single Page Application), you can do so by calling the **wtkSPArestart** function which accepts the optional parameter of HTML you want to prepend the HTML template it uses. In this way you can do some data-driven code based on incoming parameters to the page. The goal is to allow a user who is already logged in to your website or app to use an API to go to an outside website then return without having to re-login. For example when using PayPal or Stripe and the user is taken to their servers for payment processing and you pass them the URL to return to upon either cancellation or success. The **apiKey** is how a SPA knows that a user is signed-in so you pass that and the page you want them to return to (via the **p** parameter) to the outside provider. For example in your PHP for calling **Stripe** to set up account links you would do the following: $pgApiKey = wtkGetPost('apiKey'); $pgRefreshURL = $gloWebBaseURL . '/admin/?p=cancel&apiKey=' . $pgApiKey; $pgReturnURL = $gloWebBaseURL . '/admin/?p=thanks&apiKey=' . $pgApiKey; $pgResponse = $stripe->accountLinks->create([ 'account' => $pgStripeAcctId, 'refresh_url' => $pgRefreshURL, 'return_url' => $pgReturnURL, 'type' => 'account_onboarding', ] ); This would then expect you to have **cancel.htm** and **thanks.htm** files in your /admin directory. Then in your /admin/index.php you would simply add this one line in order to receive the request, pull in the HTML into your /wtk/htm/spa.htm template and hide/unhide the proper divs and menu navigation. wtkSPArestart($pgHtm); // only triggered when returning from outside APIs The **wtkSPArestart** will only do anything if all the following criteria are met: * $gloSiteDesign PHP variable is set to 'SPA' (which always is the case in the /admin folder) * apiKey parameter is passed * p parameter is passed If any one of those parameters are not set, then nothing happens. If all are set but the apiKey is not valid, then the [[https://wizardstoolkit.com/docs/files/wtk-lib-utils.html#function_wtkDeadPage|wtkDeadPage]] function is called which ends the user's session. When all parameters are passed and the apiKey is valid, the HTML file will be pulled in and displayed as the mainPage from your /wtk/htm/spa.htm file. The valid apiKey allows skipping re-logging in. For example the thanks.htm page could look like this.


Authorization Success!


Your connection to Stripe has succeeded.