Migrating to Web Checkout v7

In JS Bridge v6 and below, Poq used a bespoke implementation to create Apple Pay buttons that worked natively in an iOS web view. Apple blocked the use of Apple Pay on the Web due to potential security issues of using evaluateJavaScript script injection in WKWebView.

From Poq Platform 19.1 on iOS and JS Bridge v7 onwards, Poq have implemented methods that allow native Apple Pay buttons to operate in the Poq Web Checkout process by communicating with your website via cookies and form requests.

1. Enable Apple Pay on the Web

If you haven't enabled Apple Pay for users on Safari already, implement Apple Pay on the Web.

2. Update the JavaScript snippet

To migrate your web checkout, update the JavaScript snippet to the following:

<script>
!function(p,o,q){var n=p.PoqWebCheckout={q:[]},i=["options","send","on","destroy"];function r(e,a){var n=o.createElement(q);q=o.getElementsByTagName(q)[0],n.src=["https://assets.poq.io/web-checkout",e,"min.js"].filter(function(e){return!!e}).join("."),n.async=1,n.crossOrigin="anonymous",a&&(n.integrity=a),q.parentNode.insertBefore(n,q)}function a(e){var a;return(null===(a=document.cookie.match("(^|;)\\s*".concat("poq.webcheckout."+e,"\\s*=\\s*([^;]+)")))||void 0===a?void 0:a.pop())||""}i.forEach(function(e){n[e]=function(){n.q.push([e,arguments])},n[i[0]]=function(e){e.debug&&r("",""),n.q.push([i[0],[e]])}}),p.poqWebCheckout={postMessage:function(e,a){"bridgesettings"===e&&(a=JSON.parse(a),n.q.push([i[0],[a]]),r(a.version,a.integrity))}};var c="{\"name\":\"ping\"}";p.android?p.android.postMessage(c):"ios"===a("platform")?r(a("version"),a("integrity")):p.webkit&&p.webkit.messageHandlers.poqWebCheckout.postMessage(c)}(window,document,"script")
</script>

This new version of the snippet will check whether it is in a Poq app via cookies. It is also backwards compatible with Poq Platform 19.0 and below using JavaScript injection, so you don't need to worry about feature flagging for app release.

3. Remove applepayauthorized event listener and poq-apple-pay-container

Replace the applepayauthorized event listener with the paymentcompleted event that you have probably already have implemented for non-apple pay transactions. When the Apple Pay on the Web transaction has completed, call paymentcompleted to complete the transaction normally.

Remove the container that holds the Poq Apple Pay button from your web checkout page.