美文网首页TRON-波场
TRC20-ThinkPhP5.0-转账,余额查询,离线签名等功

TRC20-ThinkPhP5.0-转账,余额查询,离线签名等功

作者: 玩藕姐姐不见星空麻豆91 | 来源:发表于2022-04-10 14:50 被阅读0次

# TRC20-ThinkPhP5.0

源码地址:https://www.kancloud.cn/bishengzhu/trc20/2715287


- 当前SDK目前支持波场的 TRX 和 TRC20 中常用生成地址,转账,余额查询,离线签名等功能。

- 一套写法兼容 TRON 网络中 TRX 货币和 TRC 系列所有通证

- 接口方法可可灵活增减

>[danger] 当前项目演示的合约地址为  `TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t` 精度为 6,如下所示

/*基础配置*/

$this->config = [

    'contract_address' => 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',// USDT TRC20

    'decimals' => 6, /*精度*/

];

```

>[warning] 可以加我QQ 1113249273,对于目前的应用当中的查询余额,转账,查账等几个功能可以做技术支持。之外的功能不在技术支持范围内,请悉知。

QQ 群:925283872 ,问题回答正确才能入群,PHP基本知识。

>[info] 代码以及返回参数摘要

生成地址 generateAddress() 回参

~~~

{

    "privateKey": "0xe2ad74294c273467027f80*********6cc2e9a9cd4214ef3418b818d48e66",

    "address": "TLowZwvVHCQSKH8Pjwgo67TPe2dea7grWa",

    "hexAddress": "4176e8c1d6e77d1ce87a0b242366c26f550556b689"

}

~~~

### 交易转账 transfer($from,$to,$acount)  回参

>[info] 交易转账回参不能判断是否交易成功,还需要根据回参的 `txID` 参数去调用另一个API来实现,继续往下看

~~~

{

  "code": 200,

  "data": {

      "signature": [],

      "txID": "eb150f82dde7eec67bfa84a433397769d6beccac781e01b62fd5dc76515153dc",

      "raw_data": {

        "contract": [

            {

              "parameter": {

                  "value": {

                    "data": "a9059cbb00032200000000000000004144967f55976c06c4fb55b2e310843c25105ba78d00000000000000000000000000000000000000000000000000000000000f4243",

                    "owner_address": "4144967f222206c4fb55b2e310843c25105ba78d",

                    "contract_address": "41a614f803b22280986a42c78ec9c7f77e6ded13c"

                  },

                  "type_url": "type.googleapis.com/protocol.TriggerSmartContract"

              },

              "type": "TriggerSmartContract"

            }

        ],

        "ref_block_bytes": "cb77",

        "ref_block_hash": "904b72d42bb7d1b8",

        "expiration": 1649065326000,

        "fee_limit": 100000000,

        "timestamp": 1649065268704

      },

      "contractRet": "PACKING"

  }

}

~~~

*****

### 根据交易哈希查询信息 transactionReceipt($txID) 

>[danger] 回参的contractRet参数为SUCCESS为成功,别的均为不成功。虽然上面的交易api也有这个回参,但是并不会告诉你成功与否,你还得单独调用一次这个接口才能知道结果。

~~~

{

  "code": 1,

  "data": {

      "signature": [],

      "txID": "fad174a7b0fcbd10c2e1c9a***974505f7af6609b8e080956dc2111223e6d",

      "raw_data": {

        "contract": [

            {

              "parameter": {

                  "value": {

                    "data": "a9059cbb00000000000000000004144967f55976c06c4fb55b2e310843c25105ba78d0000000000000000000000000000000000000000000000000000000077359400",

                    "owner_address": "4144967f55976c06c4fb52e3143c25105ba78d",

                    "contract_address": "41a614f803b6fd780986c79c7f77e6ded13c"

                  },

                  "type_url": "type.googleapis.com/protocol.TriggerSmartContract"

              },

              "type": "TriggerSmartContract"

            }

        ],

        "ref_block_bytes": "dfef",

        "ref_block_hash": "a0e7bd2508835fe",

        "expiration": 16488814348000,

        "fee_limit": 100000000,

        "timestamp": 1648884290694

      },

      "contractRet": "SUCCESS"

  }

}

~~~

#### 开发环境要求

- php版本 >=7.3

- php扩展务必装 `gmp` 扩展,否则转账不成功

- ThinkPHP5基本运行要求,这个不需要额外多说

#### 案例使用方法

>[info] 在当前的项目中开发,可以看下面这个配置调整,如果需要将当前代码作为接口开放,可以看下一章节

`application/index/controller/Trc20.php` 里面的 `$this->privateKey` 私钥改成您自己的私钥

剩下的就是 `application/index/controller/Trc20.php`里面封装的几个常用方法稍微看下就明白了。实在不明白,就部署好代码,使用接口测试。

>[info]  API 源码对应目录地址 `application/api/controller/Index.php` ,接口文档如下所示

*****

#  **转账接口**

##### 请求URL

- ` /api/index/transfer `

##### 请求方式

- POST/GET

##### 参数

|参数名|必选|类型|说明|

|:----    |:---|:----- |-----  |

|toaddress |是  |string |接收方地址  |

|amount |是  |float | 转账金额(最低为1,精度为6)|

##### 返回示例

```

{

  "code": 1,

  "data": {

      "signature": [],

      "txID": "eb150f82dde7eec67bfa84a433397769d6beccac781e01b62fd5dc76515153dc",

      "raw_data": {

        "contract": [

            {

              "parameter": {

                  "value": {

                    "data": "a9059cbb00032200000000000000004144967f55976c06c4fb55b2e310843c25105ba78d00000000000000000000000000000000000000000000000000000000000f4243",

                    "owner_address": "4144967f222206c4fb55b2e310843c25105ba78d",

                    "contract_address": "41a614f803b22280986a42c78ec9c7f77e6ded13c"

                  },

                  "type_url": "type.googleapis.com/protocol.TriggerSmartContract"

              },

              "type": "TriggerSmartContract"

            }

        ],

        "ref_block_bytes": "cb77",

        "ref_block_hash": "904b72d42bb7d1b8",

        "expiration": 1649065326000,

        "fee_limit": 100000000,

        "timestamp": 1649065268704

      },

      "contractRet": "PACKING"

  }

}

```

##### 返回参数说明

|参数名|类型|说明|

|:-----  |:-----|-----                          |

|txID |string  |交易哈希值(用于查询转账交易)  |

##### 备注

- txID 用来查询订单信息从而确定是否交易成功

- 可以查询余额后再转账,否则余额不够转死都转不成功。查询余额的方法返回的是一个负点数金额。

```

/**

* 获取余额  完整代码可以下载项目源码查看

* $address 地址对象,通过私钥可以用获取

* 这里查询的是转账用户的余额

*/

private function getBalance($address)

{

    ...

    /*私钥地址*/

    $balance = $TRC20->balance($address);

    return $balance;

}

```

```

/**

* 根据私钥获取地址 完整代码可以下载项目源码查看

* $privateKey 私钥

*/

private function getAddress()

{

    ...

    /*私钥地址*/

    $privateKeyToAddress = $TRC20->privateKeyToAddress($this->privateKey);

    return $privateKeyToAddress;

}

```

*****

#  **查单接口**

##### 请求URL

- ` /api/index/transData `

##### 请求方式

- POST/GET

##### 参数

|参数名|必选|类型|说明|

|:----    |:---|:----- |-----  |

|txID |是  |string |交易哈希值  |

##### 返回示例

```

{

  "code": 1,

  "data": {

      "signature": [],

      "txID": "fad174a7b0fcbd10c2e1c9a***974505f7af6609b8e080956dc2111223e6d",

      "raw_data": {

        "contract": [

            {

              "parameter": {

                  "value": {

                    "data": "a9059cbb00000000000000000004144967f55976c06c4fb55b2e310843c25105ba78d0000000000000000000000000000000000000000000000000000000077359400",

                    "owner_address": "4144967f55976c06c4fb52e3143c25105ba78d",

                    "contract_address": "41a614f803b6fd780986c79c7f77e6ded13c"

                  },

                  "type_url": "type.googleapis.com/protocol.TriggerSmartContract"

              },

              "type": "TriggerSmartContract"

            }

        ],

        "ref_block_bytes": "dfef",

        "ref_block_hash": "a0e7bd2508835fe",

        "expiration": 16488814348000,

        "fee_limit": 100000000,

        "timestamp": 1648884290694

      },

      "contractRet": "SUCCESS"

  }

}

```

##### 返回参数说明

|参数名|类型|说明|

|:-----  |:-----|-----                          |

|contractRet |string  |交易结果:SUCCESS 代表成功,否则为失败)  |

相关文章

网友评论

    本文标题:TRC20-ThinkPhP5.0-转账,余额查询,离线签名等功

    本文链接:https://www.haomeiwen.com/subject/jjpvsrtx.html