Solana Pay経由でcreateTransfer&findReferenceすると「FindReferenceError」エラー

現象

@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だとうまく処理できた。