PHP单文件接入
PHP USDT充提单文件介入教程,可复制此文件代码或者参考接入
<?php
namespace app\home\controller;
use think\Controller;
use app\home\model\Member;
use think\Db;
/**
* 通知处理控制器
*/
class Usdtpay extends Controller{
public $appid='***';
public $appsecret='***';
//主域名接口
public $apiurl='http://www.ethtronusdt.com/api/v1';
/*
* 获取币种行情价格
*
*/
public function get_symbol_price($symtol)
{
$data=array(
'appid'=>trim($this->appid),
'symbol'=>$symtol,
'signtime'=>time()
);
$sign=$this->getSign($data,$this->appsecret);
$data['sign']=$sign;
$res=$this->request_post($this->apiurl.'/get_symbol_price',$data);
//code等于1 正确获取价格
if($res['code']==1){
return $res['data']['cny'];
}else{
//返回错误信息
return $res['msg'];
}
}
/*
*
* 创建ETH新地址
*
*/
public function get_address()
{
$data=array(
'appid'=>trim($this->appid),
'symbol'=>'ETH',
'signtime'=>time()
);
$sign=$this->getSign($data,$this->appsecret);
$data['sign']=$sign;
$res=$this->request_post($this->apiurl.'/get_address',$data);
//var_dump($res);
return json_encode($res);
}
/*
*
* 获取地址的余额
*
*/
public function get_balance($address)
{
$data=array(
'appid'=>trim($this->appid),
'symbol'=>'USDT_ERC20',
'address'=>$address,
'signtime'=>time()
);
$sign=$this->getSign($data,$this->appsecret);
$data['sign']=$sign;
$res=$this->request_post($this->apiurl.'/get_balance',$data);
return json_encode($res);
}
/*
*
* 会员提现
*
*/
public function transfer($symbol,$address,$value)
{
$data=array(
'appid'=>trim($this->appid),
'signtime'=>time(),
'symbol'=>$symbol,
'address'=>trim($address),
'value'=>trim($value),
);
$sign=$this->getSign($data,$this->appsecret);
$data['sign']=$sign;
$res=$this->request_post($this->apiurl.'/transfer',$data);
return json_encode($res);
}
/*
*
* 充值回调处理
*
*/
public function notify()
{
//记录请求时间 可使用txt文本记录请求日志
//记录请求参数
//通知
$data=$_POST;
if(!isset($data['sign'])){
echo 'no sign';exit;
}
//获取传输的签名值
$sign=$data['sign'];
//dump($sign);
//根据数据算出签名值
$mysign=$this->getSign($data['data'],$this->appsecret);
//dump($appsecret);
//dump($mysign);
if($sign==$mysign){
//这里可以编写业务,给与会员充值和添加会员的充值记录
$czdata=$data['data'];
//var_dump($czdata);
$status=$czdata['send_status'];//用户充值状态
if($status==1){
$token_name=$czdata['send_symbol'];//用户充值币种
$token_value=$czdata['send_value'];//用户充值金额
$useradress=$czdata['to_adress'];//用户充值地址
$hax=$czdata['hax'];//交易哈希值(唯一)
//注意 这里的哈希值首先要与数据库中对比,防止给与会员重复充值
//币种换算成人民币
//给对应的会员地址充值对应的金额
$issuccess=Db::table('tb_member')->where('eth_address',$useradress)->setInc('money',$token_value);
if($issuccess){
//会员充值记录存入数据库
//回调成功,返回success
exit('success');
}else{
return $issuccess;
}
}
}
}
/*
*
* 手动归集接口
*
*/
public function transfer_collect($address)
{
$data=array(
'appid'=>trim($this->appid),
'symbol'=>'USDT_ERC20',
'address'=>$address,
'signtime'=>time()
);
$sign=$this->getSign($data,$this->appsecret);
$data['sign']=$sign;
$res=$this->request_post($this->apiurl.'/transfer_collect',$data);
return json_encode($res);
}
/**
* 业务处理
* @return Boolean true表示业务处理成功 false表示处理失败
*/
public function handle($data)
{
}
/**
* 生成签名
* @param $data 待签名数据
* @param $appsecret 应用Appsecret
* @return string
*/
function getSign($data,$appsecret) {
$signPars = "";
ksort($data);
foreach($data as $k => $v) {
if("sign" != $k && "" != $v && $v!="0") {
$signPars .= $k . "=" . $v . "&";
}
}
$signPars .= "key=" . $appsecret;
return strtoupper(md5($signPars));
}
/**
* 使用curl发送
* @param string $url
* @param string $param
* @return bool|mixed
*/
function request_post($url = '', $param = '') {
if (empty($url) || empty($param)) {
return false;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
$data = curl_exec($ch);
curl_close($ch);
//dump($data);
return json_decode($data,true);
}}
← 转账功能介绍
某会员app接入页面设计图 →
发现错误?想参与编辑?
在 Github 上编辑此页!