telegram会员自动开通api分享

分类:api分享使用教程 时间:2023-05-08 09:31 浏览:0 评论:0
0


使用PHP代码构建支付订单,使用golang作为支付网关(因为没有找到TonSDK php版本)


该项目是全自动 输入对方用户名请求就会自动完成TG会员开通(代开赠送)


GO支付网关(已开源) 里面有个.env 里面填写你的TON钱包助词器,在支付时将使用里面的余额进行支付代开通会员

流程数据示例

逻辑流程 - 详见vip.php

1.PHP指定赠送对象(对方TG用户名) 
2.PHP创建支付订单
3.PHP确认支付订单
4.PHP解码支付订单获得支付数据
5.PHP携带支付数据请求(GO支付网关 - 自动完成转账支付)OK:会员赠送成功


<?php
#电报自动开会员 
#技术文档阅读:https://telegra.ph/%E6%8A%93%E5%8F%96Telegram-Premium-%E8%B5%A0%E9%80%81%E4%BC%9A%E5%91%98API%E6%8E%A5%E5%8F%A3-04-23
#作者TG:@gd801  电报群:@phpTRON   电报社区:www.telegbot.org


#基本配置 - 以下两项请使用:获取cookie工具.exe 获得 (代码已开源)
$hash = "ce0fd0deefd80203c6";
$cookie = "stel_ton_token=ctkN2AcU4CN62F5fSR9S62MbjnSU1hL1eU0oxHSGH5SkPvP-WaME-1fAfx5iQUGp1eytyU6BIxMApRov2aZEroCGxZQvZCHFy5fRdyejQnqsw4Z2I25YV_x6QDgZOFJ-cFzc0MikgbJjyAU9I59fsGZeLYB94N9--mTK9MmO851FtySjSTg; stel_ssid=cbf52997911114975d_4754795277556197182";

$user = "gd801";//被开通用户的电报用户名不带@  
$numt = 3; //开通月数 3 6 12  = 3个月 6个月  12个月  



#第一步 获取被赠送用户的会员信息 
echo "【第一步】<br>";
$user=curl_post_https("https://fragment.com/api?hash={$hash}","query={$user}&months={$numt}&method=searchPremiumGiftRecipient",null,$cookie);
$json = json_decode($user,true); //json编码
if(empty($json['ok'])){
    exit("第一步 获取被赠送用户的会员信息  失败");
}
$userName = $json['found']['name']??"未知";//获得用户昵称
$recipient = $json['found']['recipient']; //获得用户唯一标识 第2步需要使用
$photo = $json['found']['photo'];//获得用户头像
echo "用户头像:{$photo}<br>";
echo "用户昵称:{$userName}<br>";
echo "唯一标识:{$recipient}<br><br>";
 


#第二步 创建ton支付订单 注意其中的 $recipient 是第一步获取的
echo "【第二步】<br>";
$order=curl_post_https("https://fragment.com/api?hash={$hash}","recipient={$recipient}&months={$numt}&method=initGiftPremiumRequest",null,$cookie);
$json = json_decode($order,true); //json编码
if(empty($json['req_id'])){
    exit("第二步 创建ton支付订单  失败");
}
$req_id = $json['req_id']; //获得订单号 后续都需要使用
$amount = $json['amount'];

echo "订单号:{$req_id}<br>";
echo "金额(Ton):{$amount}<br><br>";


#第三步 确认支付订单  
echo "【第三步】<br>";
$order=curl_post_https("https://fragment.com/api?hash={$hash}","id={$req_id}&show_sender=1&method=getGiftPremiumLink",null,$cookie);
$json = json_decode($order,true); //json编码
if(empty($json['ok'])){
    exit("第三步 确认支付订  失败");
} 
$qr_link = $json['qr_link']; //获得支付地址(自己生成二维码) 任何TON钱包扫这个二维码支付就可以自动开通会员,当然这是手动模式了
$expire = time() + $json['expire_after'];


echo "二维码链接:{$qr_link}<br>";
echo "订单有效期time:{$expire}<br>";  
echo "订单有效期date:".date("Y-m-d H:i:s",$expire)."<br><br>";



#第四步 解码订单数据 并调用TON接口 实现自动支付从而实现自动开通会员
echo "【第四步】<br>";
$order=curl_get_https("https://fragment.com/tonkeeper/rawRequest?id={$req_id}&qr=1");
$json = json_decode($order,true); //json编码
if(empty($json['body']['params']['messages'])){
    exit("第四步 解码订单数据 失败");
} 
$money = base64_decode($json['body']['params']['messages'][0]['amount']); //最终支付金额(精度9) 也就是 amount * 1000000000
$base32 = base64_decode($json['body']['params']['messages'][0]['payload']); //不是完整正确的解码  
$base32 = explode("#",$base32);
$base32 = "Telegram Premium for 3 months Ref#".$base32[1];#最终(支付网关)订单数据 需要传递给golang 支付网关

echo "最终(支付网关)订单数据:{$base32}<br><br>"; 



exit("第5步 自动支付并自动开通会员(我注释了代码) 请看源代码 第73行");//代码运行到这里结束了,如果自己要测试支付开通请删除这行




#第5步 由于只找到JAVA C++ GOlang 的 SDK,没有找到PHP版本的,所以这里我使用GOlang 网关(只负责Ton支付业务)  代码一并开源了的
$raw = '{
    "EQBAjaOyi2wGWlk-EDkSabqqnF-MrrwMadnwqrurKpkla9nE": "'.$money.'"  
}';//这里面这个TON钱包地址就是fragment官方开会员的固定收款钱包地址 - 请参阅顶部技术文档

//发起支付
$payok  = curl_get_https("http://127.0.0.1:8888/sendTransactions?comment={$base32}&send_mode=1","Content-Type:application/json",$raw);
//127.0.0.1  是golang 支付网关运行在本地
echo "最终上链支付结果:{$payok}";


//后续可以自己





function curl_get_https($url,$headers=null,$raw=null,$time=6){
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_TIMEOUT, $time);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    if(!empty($headers)){
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);//设置请求头
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);  // 从证书中检查SSL加密算法是否存在
    if($raw){
        curl_setopt($curl, CURLOPT_POSTFIELDS, $raw); // Post提交的数据包 
    }
    $tmpInfo = curl_exec($curl);     //返回api的json对象
    curl_close($curl);
    return $tmpInfo;   
}


function curl_post_https($url,$data,$headers=null,$cookie=null){ // 模拟提交数据函数
    $curl = curl_init(); // 启动一个CURL会话
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
    // curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    // curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
    // curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    if(!empty($headers)){
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);//设置请求头
    }
    if(!empty($cookie)){
        curl_setopt($curl, CURLOPT_COOKIE, $cookie); // 带上COOKIE请求
    } 
    curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
    curl_setopt($curl, CURLOPT_TIMEOUT, 10); // 设置超时限制防止死循环
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    $tmpInfo = curl_exec($curl); // 执行操作
    curl_close($curl); // 关闭CURL会话
    return $tmpInfo; // 返回数据
}






#ad最具权威电报机器人社区:www.telegbot.com   www.telegbot.org    www.telegbot.cc}



免费下载地址:github

1. 下载后遇到任何问题可以到:问答社区 发表帖子请求帮助
2. 本文章所属:api分享使用教程 > telegram会员自动开通api分享

用户评论