首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当前访问键余量较低时,使用near-api-js调用payable方法

当前访问键余量较低时,使用near-api-js调用payable方法
EN

Stack Overflow用户
提问于 2021-06-08 03:24:16
回答 1查看 82关注 0票数 1

我有一个很接近的应用程序,其中大多数方法都不传输任何令牌。用户使用NEAR钱包通过标准登录流程,获得0.25N的汽油额度,然后与应用程序进行交互。

我现在有了一个新的端点,我希望可以从前端调用它,它预计用户支付的金额将大大超过0.25N:

代码语言:javascript
复制
    #[payable]
    pub fn buy_stuff() {

当我使用标准的near-api-js方式调用它时:

代码语言:javascript
复制
window.contract.buy_stuff({}, undefined, price).then(m => window.location.href='/');

它失败了,因为它试图从登录的空闲密钥中花费price,而这是它没有的--它自然只有0.25N的汽油。

具体错误为“访问密钥{account_id}:{public_key}交易成本5004231023352653388973496余额不足247864837491516400000000”

相反,我想要的是让用户重定向到钱包,并使用钱包中的完整访问密钥授权此特定事务。有没有一种方法可以用near-api-js做到这一点

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-08 04:56:46

看起来问题在于contract应用程序接口没有考虑钱包重定向。一个原因可能是合同API的初始化。

为了让合约API能够重定向到钱包,应该使用ConnectedWalletAccount完成初始化。可以使用以下代码完成此操作:

代码语言:javascript
复制
const nearConnection = await nearAPI.connect(...);

const walletConnection = new nearAPI.WalletConnection(
  nearConnection,
  ContractName
);

const contract = new nearAPI.Contract(
  walletConnection.account(),
  ContractName,
  {
    viewMethods: [...],
    changeMethods: [...],
  }
);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67877587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档