Solidity - 外部合约调用不起作用

Solidity - External contract call not working

所以,我是 solidity 的新手,我一直在尝试制作一个可以调用另一个合约的合约。

我找到了一些描述这个确切问题的文章,例如:https://soliditydeveloper.com/uniswap2

尽管如此,即使使用提供的代码我也无法使其工作。

交易完成,BNB 被转移到合约,尽管调用者没有收到它应该收到的代币,合约也没有收到。

这是我正在处理的代码:

pragma solidity >=0.7.1;

import "https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router02.sol";

contract PancakeProxyContract {
    address WBNB = 0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd;
    address internal constant addr = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
    IUniswapV2Router02 public uniswapRouter;

    constructor() {
        uniswapRouter = IUniswapV2Router02(addr);
    }

    function EthToTokens(uint amountOutMin, address[] memory path,uint deadline) public payable {
        uniswapRouter.swapExactETHForTokens{ value: msg.value }(amountOutMin, path, address(this), deadline);
        // refund leftover ETH to user
        (bool success,) = msg.sender.call{ value: address(this).balance }("");
        require(success, "refund failed");
    }


    receive() payable external {}
}

这是一个交易示例:https://testnet.bscscan.com/tx/0x0b2849412825dc9c279a102161db4db945ffc54bb4a47538f2a25a477c2c6fe4

原来我使用的是我创建合约的地址作为源地址,而不是新合约创建的新地址。