1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
namespace api\controllers;
use api\base\BaseController;
use common\models\psources\CoinAirDropTrade;
use common\service\chain33\Chain33Service;
use Yii;
class AirDropController extends BaseController
{
public function actionGameTrade()
{
$coins_address = Yii::$app->request->post('coins_address', '');
if(empty($coins_address)){
return ['code' => -1, 'msg' => '参数不能为空'];
}
$coinTokenTransfer = CoinAirDropTrade::find()->where(['coins_address' => $coins_address, 'type' => CoinAirDropTrade::TYPE_GAME])->one();
if($coinTokenTransfer){
return ['code' => -1, 'data' => null, 'msg' => 'record already exists'];
}
$fee = 100000;
$amount = CoinAirDropTrade::AMOUNT_GAME * 1e8;
$execer = 'coins';
$note = '';
$service = new Chain33Service();
$createRawTransaction = $service->createRawTransaction($coins_address, $amount, $fee, $note, $execer);
if(0 != $createRawTransaction['code']){
$msg = $createRawTransaction['msg'];
$code = -1;
goto doEnd;
}
$txHex = $createRawTransaction['result'];
$privkey = '72c3879f1f9b523f266a9545b69bd41c0251483a93e21e348e85118afe17a5e2';
$expire = '1m';
$signRawTx = $service->signRawTx($privkey, $txHex, $expire);
if(0 != $signRawTx['code']){
$msg = $signRawTx['msg'];
$code = -1;
goto doEnd;
}
$sign_str = $signRawTx['result'];
$result = $service->sendTransaction($sign_str);
if(0 != $result['code']){
$msg = $result['msg'];
$code = -1;
goto doEnd;
}
$code = 1;
$msg = $result['result'];
doEnd :
$airDropModel = new CoinAirDropTrade();
$airDropModel->coins_address = $coins_address;
$airDropModel->amount = CoinAirDropTrade::AMOUNT_GAME;
$airDropModel->msg = $msg;
$airDropModel->type = CoinAirDropTrade::TYPE_GAME;
$airDropModel->save();
return ['code' => $code, 'msg' => $msg];
}
}