generateSignTransactionUri method

Uri generateSignTransactionUri({
  1. required String transaction,
  2. required String redirect,
})

Generate an URL with given transaction to sign transaction with Phantom Wallet.

  • Returns URL which will be used to send to Phantom Wallet /signTransaction endpoint.
  • It redirects user to redirect with nonce and encrypted data as query parameters.
  • Encrypted data contains signedTransaction and base58 encoded serialized transaction that can be decrypted using decryptPayload method.

Implementation

Uri generateSignTransactionUri(
    {required String transaction, required String redirect}) {
  var payload = {
    "transaction": base58encode(
      Uint8List.fromList(
        base64.decode(transaction),
      ),
    ),
    "session": _sessionToken,
  };
  var encryptedPayload = encryptPayload(payload);

  return Uri(
    scheme: scheme,
    host: host,
    path: '/ul/v1/signTransaction',
    queryParameters: {
      "dapp_encryption_public_key": base58encode(dAppPublicKey.asTypedList),
      "nonce": base58encode(encryptedPayload["nonce"]),
      'redirect_link': "$deepLink$redirect",
      'payload': base58encode(encryptedPayload["encryptedPayload"])
    },
  );
}