Skip to content

iOS 12 Error: snap.pay is not allowed to be called in this state #67

@rafonzoo

Description

@rafonzoo

Hi, thanks for great snapjs payment to ease us doing a payment!
disclaimer: Im using https://app.sandbox.midtrans.com/snap/snap.js, am i put this issue in the correct place? I can't find the repo regarding this snap js to put an issue.

This issue only happened in iOS 12, but it is fine in latest iOS. Here full log:

Error: snap.pay is not allowed to be called in this state. Invalid state transition from PopupInView to PopupInView (anonymous function) — snap.js:232
  ex — 8967.304662da3cf90d03.js:148
  onSuccess — 8967.304662da3cf90d03.js:144
  promiseReactionJob

I call the window snap like:

if (!('snap' in window)) {
  const script = document.createElement('script')
  script.type = 'text/javascript'
  script.dataset.clientKey = process.env.NEXT_PUBLIC_MIDTRANS_CLIENT_KEY ?? '' // prettier-ignore
  script.src = midtrans('/snap/snap.js')
  script.onload = () => onCallback(token, payload)

  document.head.append(script)
  return
}

onCallback(token, payload)

where onCallback is:

window.snap.pay(token, {
  onSuccess: (result: unknown) => {
    const { transaction: trx } = paymentType.shape
    const transaction = trx.parse(result)

    checkout([...detail.payment, { ...payload, transaction }])
  },
})

Help to explain why the error happened, or snap.js not supported in iOS 12 ? Thankyou!
snap.js: https://app.sandbox.midtrans.com/snap/snap.js

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions