# dapp如何在tp钱包中的solana链中进行USDT转账？求解

**URL:** https://fans.tokenpocket.pro/t/topic/29420
**Category:** Help Center | 帮助中心
**Created:** [2024 年8 月 27 日 03:26 UTC](https://fans.tokenpocket.pro/t/topic/29420 "2024-08-27T03:26:32Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### 作者： ![wangjiajun950628](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/wangjiajun950628/32/6289_2.png) [@wangjiajun950628](https://fans.tokenpocket.pro/u/wangjiajun950628)
#### 发布日期： [2024 年8 月 27 日 03:26 UTC](https://fans.tokenpocket.pro/t/topic/29420/1 "2024-08-27T03:26:32Z")

</div>

我的是uniapp项目使用如何实现这个功能？

---

<div class="post-metadata">

### 作者： ![clement](https://avatars.discourse-cdn.com/v4/letter/c/7ba0ec/32.png) [@clement](https://fans.tokenpocket.pro/u/clement)
#### 发布日期： [2024 年8 月 27 日 03:30 UTC](https://fans.tokenpocket.pro/t/topic/29420/2 "2024-08-27T03:30:21Z")

</div>

uni app项目目前还不支持solana链。  
如果是网页H5的项目，可以看这里：[GitHub - TP-Lab/tp-js-sdk: TokenPocket JS API for Dapp of ETH, IOST, TRON, COSMOS, SOLANA, EOS etc. (mobile only)](https://github.com/TP-Lab/tp-js-sdk)

---

<div class="post-metadata">

### 作者： ![wangjiajun950628](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/wangjiajun950628/32/6289_2.png) [@wangjiajun950628](https://fans.tokenpocket.pro/u/wangjiajun950628)
#### 发布日期： [2024 年8 月 29 日 03:04 UTC](https://fans.tokenpocket.pro/t/topic/29420/3 "2024-08-29T03:04:32Z")

</div>

能帮我看下问题嘛？  
代码：

```
const fromAddress = new web3.PublicKey(from)
const toAddress = new web3.PublicKey(to)
const usdcMintAddress = new web3.PublicKey('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB')
// console.log(splToken)
/* 
console.log("1sendAndConfirmTransaction")
await web3.sendAndConfirmTransaction(connection, transaction, [payer]);

console.log("2sendAndConfirmTransaction")

 // Alternatively, manually construct the transaction

 manualTransaction.add(
   web3.SystemProgram.transfer({
     fromPubkey: payer.publicKey,
     toPubkey: toAccount.publicKey,
     lamports: 1000,
   }),
 );
   
 let transactionBuffer = manualTransaction.serializeMessage();
 let signature = nacl.sign.detached(transactionBuffer, payer.secretKey);
  
 manualTransaction.addSignature(payer.publicKey, signature);
  
 let isVerifiedSignature = manualTransaction.verifySignatures();
 console.log(`The signatures were verified: ${isVerifiedSignature}`);
  
 // The signatures were verified: true
  
 let rawTransaction = manualTransaction.serialize();

 await web3.sendAndConfirmRawTransaction(connection, rawTransaction); */

// window.solana && window.solana.connect().then(res => {
// console.log(window.solana.publicKey.toBase58())
// });

// api.devnet.solana.com
let connection = new web3.Connection(web3.clusterApiUrl("devnet"), "confirmed");

// const tokenAccounts = await connection.getTokenAccountsByOwner(
// new web3.PublicKey('8YLKoCu7NwqHNS8GzuvA2ibsvLrsg22YMfMDafxh1B15'), {
// programId: splToken.TOKEN_PROGRAM_ID,
// }
// );
// let airdropSignature = await connection.requestAirdrop(
// new web3.PublicKey(from),
// web3.LAMPORTS_PER_SOL,
// );

let transaction = new web3.Transaction();

transaction.add(
	splToken.Token.createTransferInstruction(
		splToken.TOKEN_PROGRAM_ID,
		usdcMintAddress,
		toAddress,
		fromAddress,
		[],
		amount
	)
);

// 发送交易

let recentBlockhash = await connection.getLatestBlockhash();
transaction.recentBlockhash = recentBlockhash.blockhash
transaction.feePayer = fromAddress
// const signature = await web3.sendAndConfirmTransaction(connection, transaction);
const signedTransaction = await window.solana.signTransaction(transaction, connection);
console.log(signedTransaction)
// const signature = await connection.sendRawTransaction(signedTransaction.serialize());
// console.log(2)
// // var msg = "签名啦!， To avoid digital dognappers, sign below to authenticate with CryptoCorgis"
// var encodedMessage = new TextEncoder().encode(signature);
// var signedMsg = await window.solana.signMessage(encodedMessage);

```

signedTransaction 结果返回异常:Must be connected in order tocommunicate with TokenPocket wallet.  
我检查了tp钱包节点是测试，Solana连接的也是测试

---

<div class="post-metadata">

### 作者： ![wangjiajun950628](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/wangjiajun950628/32/6289_2.png) [@wangjiajun950628](https://fans.tokenpocket.pro/u/wangjiajun950628)
#### 发布日期： [2024 年8 月 29 日 04:11 UTC](https://fans.tokenpocket.pro/t/topic/29420/4 "2024-08-29T04:11:57Z")

</div>

能帮我看下问题嘛？  
代码：

```auto
const fromAddress = new web3.PublicKey(from)
const toAddress = new web3.PublicKey(to)
const usdcMintAddress = new web3.PublicKey('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB')
// console.log(splToken)
/* 
console.log("1sendAndConfirmTransaction")
await web3.sendAndConfirmTransaction(connection, transaction, [payer]);

console.log("2sendAndConfirmTransaction")

 // Alternatively, manually construct the transaction

 manualTransaction.add(
   web3.SystemProgram.transfer({
     fromPubkey: payer.publicKey,
     toPubkey: toAccount.publicKey,
     lamports: 1000,
   }),
 );
   
 let transactionBuffer = manualTransaction.serializeMessage();
 let signature = nacl.sign.detached(transactionBuffer, payer.secretKey);
  
 manualTransaction.addSignature(payer.publicKey, signature);
  
 let isVerifiedSignature = manualTransaction.verifySignatures();
 console.log(`The signatures were verified: ${isVerifiedSignature}`);
  
 // The signatures were verified: true
  
 let rawTransaction = manualTransaction.serialize();

 await web3.sendAndConfirmRawTransaction(connection, rawTransaction); */

// window.solana && window.solana.connect().then(res => {
// console.log(window.solana.publicKey.toBase58())
// });

// api.devnet.solana.com
let connection = new web3.Connection(web3.clusterApiUrl("devnet"), "confirmed");

// const tokenAccounts = await connection.getTokenAccountsByOwner(
// new web3.PublicKey('8YLKoCu7NwqHNS8GzuvA2ibsvLrsg22YMfMDafxh1B15'), {
// programId: splToken.TOKEN_PROGRAM_ID,
// }
// );
// let airdropSignature = await connection.requestAirdrop(
// new web3.PublicKey(from),
// web3.LAMPORTS_PER_SOL,
// );

let transaction = new web3.Transaction();

transaction.add(
	splToken.Token.createTransferInstruction(
		splToken.TOKEN_PROGRAM_ID,
		usdcMintAddress,
		toAddress,
		fromAddress,
		[],
		amount
	)
);

// 发送交易

let recentBlockhash = await connection.getLatestBlockhash();
transaction.recentBlockhash = recentBlockhash.blockhash
transaction.feePayer = fromAddress
// const signature = await web3.sendAndConfirmTransaction(connection, transaction);
const signedTransaction = await window.solana.signTransaction(transaction, connection);
console.log(signedTransaction)
// const signature = await connection.sendRawTransaction(signedTransaction.serialize());
// console.log(2)
// // var msg = "签名啦!， To avoid digital dognappers, sign below to authenticate with CryptoCorgis"
// var encodedMessage = new TextEncoder().encode(signature);
// var signedMsg = await window.solana.signMessage(encodedMessage);

```

signedTransaction 结果返回异常:Must be connected in order tocommunicate with TokenPocket wallet.  
我检查了tp钱包节点是测试，Solana连接的也是测试

---

<div class="post-metadata">

### 作者： ![teemo](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/teemo/32/5751_2.png) [@teemo](https://fans.tokenpocket.pro/u/teemo)
#### 发布日期： [2024 年8 月 29 日 04:26 UTC](https://fans.tokenpocket.pro/t/topic/29420/5 "2024-08-29T04:26:54Z")

</div>

自己看看文档解决。

---

<div class="post-metadata">

### 作者： ![chendatony31](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/chendatony31/32/5_2.png) [@chendatony31](https://fans.tokenpocket.pro/u/chendatony31)
#### 发布日期： [2024 年8 月 29 日 05:10 UTC](https://fans.tokenpocket.pro/t/topic/29420/6 "2024-08-29T05:10:50Z")

</div>

connect 的过程为啥 注释掉了？ 要先连接， 如果还不行 试试 主网
