Agenda
現象
@solana/pay - createTransfer で送金したあとに、 @solana/pay - findReference でトランザクションを確認しにいくと以下のエラー。
{ name: 'FindReferenceError' }
findReference.ts:28 Uncaught (in promise) FindReferenceError: not found
at findReference (findReference.ts:28:24)
at async checkPaymentStatus (PaymentPage.tsx:169:27)
前提
Solana Payは、トランザクション結果を探せるようにするため、referenceにランダム生成してPublicKeyをセットする仕組みになっている。
このreferenceがトランザクションの中にセットされるため、あとからトランザクション結果がどうなったか追えるようになっている。
原因
このエラーは、トランザクションが存在していないか、referenceがトランザクションにセットされていない。
対応
ケース1 createTransferの部分で失敗
自分の場合は、 reference を作成せずundefinedになっていため、エラーになっていた。
任意のPublicKeyがreferenceにセットされているか、またトランザクション後にreferenceが存在するかチェックする。
ケース2 ウォレット側の問題
2023年3月6日時点で、なぜかPhantomがSolana PayのQRコード決済すると、referenceがトランザクションにセットされない現象が発生した。
Solflareだとうまく処理できた。