# TP钱包web3.js发送交易后，无法接收回调

**URL:** <https://fans.tokenpocket.pro/t/topic/18720>\
**Category:** Developer Community | 开发者社区\
**Created:** [2022 年6 月 20 日 22:31 UTC](https://fans.tokenpocket.pro/t/topic/18720 "2022-06-20T22:31:28Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 20 日 22:31 UTC](https://fans.tokenpocket.pro/t/topic/18720/1 "2022-06-20T22:31:28Z")

</div>

let instance = await App.contracts.WeiboRegistry.deployed();  
instance.setValue(1,{from:App.addr[0]}).then(  
()=\> alert(“setvalue”)  
);  
无法弹出测试日志,相同代码已经在METAMUSK手机端与PC端测试通过，TP钱包无法通过测试

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 21 日 01:53 UTC](https://fans.tokenpocket.pro/t/topic/18720/2 "2022-06-21T01:53:26Z")

</div>

再附加一点，状态已经正常写入成功了，此时去读取状态setValue已经被更改。

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 21 日 02:34 UTC](https://fans.tokenpocket.pro/t/topic/18720/3 "2022-06-21T02:34:05Z")

</div>

运行环境：$ truffle version  
Truffle v5.5.13 (core: 5.5.13)  
Ganache v^7.1.0  
Solidity - 0.8.12 (solc-js)  
Node v16.15.0  
Web3.js v1.5.3

---

<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)\
发布日期： [2022 年6 月 21 日 03:36 UTC](https://fans.tokenpocket.pro/t/topic/18720/4 "2022-06-21T03:36:26Z")

</div>

有没有测试连接？ 我们 是用 [E2E Test Dapp](https://metamask.github.io/test-dapp/) 这个测试的 合约部署 和 调用。 你可以在系统设置里 打开开发者模式 看到 vconsole 控制台

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 21 日 06:07 UTC](https://fans.tokenpocket.pro/t/topic/18720/5 "2022-06-21T06:07:02Z")

</div>

App = {  
web3Provider: null,  
contracts: {},  
weiboRegistryAddress: “”,  
cuurentWeiboAddress: null,  
web3Provider: null,

```
defaultGas: 4700000,
init: async function () {
    return await App.initWeb3();
},
initWeb3: async function () {
    if (window.ethereum) {
        App.web3Provider = window.ethereum;
        try {
            // Request account access
            App.addr = await window.ethereum.request({ method: "eth_requestAccounts" });;
        } catch (error) {
            // User denied account access...
            console.error("User denied account access")
        }
    }
    // Legacy dapp browsers...
    else if (window.web3) {
        App.web3Provider = window.web3.currentProvider;
    }
    // If no injected web3 instance is detected, fall back to Ganache
    else {
        App.web3Provider = new Web3.providers.HttpProvider('http://localhost:8545');
    }
    //App.web3Provider = new Web3.providers.HttpProvider('http://localhost:8545');
    App.web3 = new Web3(App.web3Provider);

    await App.initContract();

},
initContract: async function () {

    await $.getJSON('test.json', function (data) {

        let AdoptionArtifact = data;
        App.contracts.WeiboRegistry = TruffleContract(AdoptionArtifact);

        App.contracts.WeiboRegistry.setProvider(App.web3Provider);

    });
    let instance = await App.contracts.WeiboRegistry.deployed().then();

    instance.setValue(1,{from:App.addr[0]}).then(
        ()=> alert("setvalue")
        ); 

},

```

}  
$(function () {  
$(window).load(function () {  
App.init();

```
});

```

});

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 21 日 06:07 UTC](https://fans.tokenpocket.pro/t/topic/18720/6 "2022-06-21T06:07:05Z")

</div>

但如果是truffle的问题，可是在metamask手机端是一切正常的，PC端也是完全正常

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 21 日 06:07 UTC](https://fans.tokenpocket.pro/t/topic/18720/7 "2022-06-21T06:07:07Z")

</div>

是否和truffel有关？我使用的是truffle的包装合约类，我又做了几个测试，访问合约的view函数,then回调都可以正常被回调，如果要写状态则then无法被正常回调，此时状态已经被正常写入，不使用then回调，使用await 时，await也无法正常返回。

---

<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)\
发布日期： [2022 年6 月 21 日 08:40 UTC](https://fans.tokenpocket.pro/t/topic/18720/8 "2022-06-21T08:40:51Z")

</div>

不确定是不是 truffle 的问题，建议改用 web3.js 来 调用合约

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 21 日 13:46 UTC](https://fans.tokenpocket.pro/t/topic/18720/9 "2022-06-21T13:46:17Z")

</div>

我定位到是truffle向钱包provider注册 message事件，但钱包provider并未回调此事件回调函数。在truffle-contract.js文件第，325700行，  
this.provider.on(‘message’, function (payload) {

```
            if (payload && payload.type === 'eth_subscription' && payload.data) {
              
                const data = payload.data;
                if (data.subscription && _this.subscriptions.has(data.subscription)) {
                  console.log("setProvider5")
                    _this.subscriptions.get(data.subscription).callback(null, data.result);
                }
            }
        });

```

此事件从未被成功通知，进行回调

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 21 日 22:44 UTC](https://fans.tokenpocket.pro/t/topic/18720/10 "2022-06-21T22:44:06Z")

</div>

做了个测试站，[http://198.74.107.62/test.html](http://198.74.107.62/test.html)  
美国渣渣服务器，网速慢，耐心等一会。你上去试一下，其中的js,我为了你方便查看源码都用的源代码。无论是不是truffle的问题，metamask正常而TP不行，这个问题你们就要重视起来了。  
合约部署在heco测试网，[https://http-testnet.hecochain.com](https://http-testnet.hecochain.com)

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 21 日 22:44 UTC](https://fans.tokenpocket.pro/t/topic/18720/11 "2022-06-21T22:44:13Z")

</div>

![微信图片_20220621223141](https://us1.discourse-cdn.com/flex020/uploads/tokenpocket1/original/2X/0/0a5d0eb7118be08b794e35d91476332f21edcc0b.png)  
看起来，你们的钱包并未实现此接口

---

<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)\
发布日期： [2022 年6 月 22 日 07:33 UTC](https://fans.tokenpocket.pro/t/topic/18720/12 "2022-06-22T07:33:13Z")

</div>

这个demo 我测试了 是 可以正常 work的 弹出了 test

 ![WechatIMG449](https://us1.discourse-cdn.com/flex020/uploads/tokenpocket1/original/2X/7/79472d239d1304c155b15020bb9c3011a95c47ef.jpeg)

on message 这个确实没有实现，但不影响 正常dapp 使用的

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 22 日 08:02 UTC](https://fans.tokenpocket.pro/t/topic/18720/13 "2022-06-22T08:02:03Z")

</div>

如果没实现message，那确定是不行了，正常APP（不包括使用了message接口的） 😅

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 22 日 08:02 UTC](https://fans.tokenpocket.pro/t/topic/18720/14 "2022-06-22T08:02:06Z")

</div>

你是不是没切换网络？这个是部署在hecotest上的

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 22 日 08:02 UTC](https://fans.tokenpocket.pro/t/topic/18720/15 "2022-06-22T08:02:08Z")

</div>

你这个是TP吗？难道是我的TP的版本问题？你版本多少？

---

<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)\
发布日期： [2022 年6 月 22 日 10:00 UTC](https://fans.tokenpocket.pro/t/topic/18720/16 "2022-06-22T10:00:07Z")

</div>

ios 1.8.4 是 hecotest

---

<div class="post-metadata">

作者： ![lixiaodog](https://sea2.discourse-cdn.com/flex020/user_avatar/fans.tokenpocket.pro/lixiaodog/32/3727_2.png) [@lixiaodog](https://fans.tokenpocket.pro/u/lixiaodog)\
发布日期： [2022 年6 月 22 日 11:21 UTC](https://fans.tokenpocket.pro/t/topic/18720/17 "2022-06-22T11:21:19Z")

</div>

hecotest上是可以，本地链不行，应该是你们注入WEB3对象时没考虑本地私链，把provider的on对象赋值了或者没置空

---

<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)\
发布日期： [2022 年6 月 24 日 03:08 UTC](https://fans.tokenpocket.pro/t/topic/18720/18 "2022-06-24T03:08:36Z")

</div>

没办法区分 本地链 还是 测试链，对于钱包来说都是 节点 url endpoint
