我有一个很接近的应用程序,其中大多数方法都不传输任何令牌。用户使用NEAR钱包通过标准登录流程,获得0.25N的汽油额度,然后与应用程序进行交互。
我现在有了一个新的端点,我希望可以从前端调用它,它预计用户支付的金额将大大超过0.25N:
#[payable]
pub fn buy_stuff() {当我使用标准的near-api-js方式调用它时:
window.contract.buy_stuff({}, undefined, price).then(m => window.location.href='/');它失败了,因为它试图从登录的空闲密钥中花费price,而这是它没有的--它自然只有0.25N的汽油。
具体错误为“访问密钥{account_id}:{public_key}交易成本5004231023352653388973496余额不足247864837491516400000000”
相反,我想要的是让用户重定向到钱包,并使用钱包中的完整访问密钥授权此特定事务。有没有一种方法可以用near-api-js做到这一点
发布于 2021-06-08 04:56:46
看起来问题在于contract应用程序接口没有考虑钱包重定向。一个原因可能是合同API的初始化。
为了让合约API能够重定向到钱包,应该使用ConnectedWalletAccount完成初始化。可以使用以下代码完成此操作:
const nearConnection = await nearAPI.connect(...);
const walletConnection = new nearAPI.WalletConnection(
nearConnection,
ContractName
);
const contract = new nearAPI.Contract(
walletConnection.account(),
ContractName,
{
viewMethods: [...],
changeMethods: [...],
}
);https://stackoverflow.com/questions/67877587
复制相似问题