1,自动确认交易报价及发货,交易后极速到账
2,仓库饰品自动上架,价格批量设置上架
3,可设置默认溢价,支持比价、修改上架金额
前段时间开发了个游戏抽奖,奖品需要对接自动发货。zbt机制就是类似于一个商城,抽中的奖品,通过注册的zbt账号购买,zbt去发货。
先去注册个账号
https://www.zbt.com/
在这个地方设置 白名单 apikey 回调地址。
自动发货需要对接的接口:
用户余额查询 /open/user/v1/t-coin/balance
市场商品搜索接口V2 /open/product/v2/search
饰品价格接口 /open/product/price/info
快速购买接口v2 /open/trade/v2/quick-buy
购买订单详情V2 /open/order/v2/buy/detail
回调地址接口说明默认是隐藏的,这个找到 文档管理>个性化设置 修改之后才会出现
接口文档地址 https://app.zbt.com/open/doc.html#/home
namespace app\common\controller;
use think\Controller;
use think\Request;
class Zbt extends Controller
protected $appkey='';
protected $steamId="";
protected $appId='730';
protected $exterior=[1=>'WearCategory0',2=>'WearCategory1',3=>'WearCategory2',4=>'WearCategory4'];
protected $baseData;
protected $backUrl='';
public function __construct(Request $request = null)
parent::__construct($request);
$this->baseData=['app-key'=> $this->appkey, 'language'=> 'zh_CN'];
* @param $keyWord 商品名
public function getGoods($keyWord){
$goodData=[
'app-key'=> $this->appkey,
'appId'=> $this->appId,
'keyword'=>urlencode($keyWord)
$good=Checking::GetHttp('https://app.zbt.com/open/product/v2/search?'.$this->ToUrlParams($goodData));
$good=json_decode($good,true);
return $good;
public function getPrice($data){
$priceData=[
'appId'=> $this->appId,
'marketHashNameList'=>[$data]
$priceData=json_encode($priceData,JSON_UNESCAPED_UNICODE);
list($return_code, $priceResult) = Checking::request_post_json('https://app.zbt.com/open/product/price/info?'.$this->ToUrlParams($this->baseData), $priceData);
$priceResult=json_decode($priceResult,true);
return $priceResult;
* 快速购买
public function quick_buy($goodItemId,$autoOrderNum,$tradeUrl){
$payData=[
'appId'=>$this->appId,
'delivery'=>2,
'itemId'=>$goodItemId,
'lowPrice'=>1,
'maxPrice'=>200,
'outTradeNo'=>$autoOrderNum,
'tradeUrl'=>$tradeUrl
$payData=json_encode($payData,JSON_UNESCAPED_UNICODE);
list($return_code, $payResult) = Checking::request_post_json('https://app.zbt.com/open/trade/v2/quick-buy?'.$this->ToUrlParams($this->baseData), $payData);
$payResult=json_decode($payResult,true);
return $payResult;
* 设置回调地址
public function callback(){
$payData=[
'callbackUrl'=>$this->backUrl,
$payData=json_encode($payData,JSON_UNESCAPED_UNICODE);
list($return_code, $payResult) = Checking::request_post_json('https://app.zbt.com/open/development/callback-url/save?'.$this->ToUrlParams($this->baseData), $payData);
$payResult=json_decode($payResult,true);
return $payResult;
* 订单查询
public function querch($outTradeNo){
$goodData=[
'app-key'=> $this->appkey,
'language'=> 'zh_CN',
'outTradeNo'=>$outTradeNo
$good=Checking::GetHttp('https://app.zbt.com/open/order/v2/buy/detail?'.$this->ToUrlParams($goodData));
$good=json_decode($good,true);
return $good;
* 获取用户开发者账号相关信息
public function getUser(){
$good=Checking::GetHttp('https://app.zbt.com/open/development/info?'.$this->ToUrlParams($this->baseData));
$good=json_decode($good,true);
return $good;
* @return 获取用户余额
public function getUserBalance(){
$userBalance=Checking::GetHttp('https://app.zbt.com/open/user/v1/t-coin/balance?'.$this->ToUrlParams($this->baseData));
$userBalance=json_decode($userBalance,true);
return $userBalance;
* 将参数拼接为url: key=value&key=value
* @param $params
* @return string
public function ToUrlParams( $params ){
$string = '';
if( !empty($params) ){
$array = array();
foreach( $params as $key => $value ){
$array[] = $key.'='.$value;
$string = implode("&",$array);
return $string;
public function unicode_encode($strLong) {
$strArr = preg_split('/(?<!^)(?!$)/u', $strLong);
$resUnicode = '';
foreach ($strArr as $str)
$bin_str = '';
$arr = is_array($str) ? $str : str_split($str);
foreach ($arr as $value)
$bin_str .= decbin(ord($value));
$bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/', '$1$2$3', $bin_str);
$unicode = dechex(bindec($bin_str));
$_sup = '';
for ($i = 0; $i < 4 - strlen($unicode); $i++)
$_sup .= '0';
$str = '\\u' . $_sup . $unicode;
$resUnicode .= $str;
return $resUnicode;
下边是http请求的代码
public static function request_post_json($url, $data_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json; charset=utf-8",
"Content-Length: " . strlen($data_string))
ob_start();
curl_exec($ch);
$return_content = ob_get_contents();
ob_end_clean();
$return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
return array($return_code, $return_content);
* 模拟post进行url请求
* @param string $url
* @param string $param
public static function request_post($url = '', $param = '') {
if (empty($url) || empty($param)) {
return false;
$postUrl = $url;
$curlPost = http_build_query($param);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$postUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
curl_close($ch);
return $data;
* get
* @param string $url 请求地址
public static function GetHttp($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$tmpInfo = curl_exec($curl);
if(curl_exec($curl) === false)
return 'Curl error: ' . curl_error($curl);
curl_close($curl);
return $tmpInfo;
具体使用方法:
$zbt=new Zbt();
$good=$zbt->getGoods('商品名');
if (empty($good))$this->error('未检索到商品');
if (!$good['success'])$this->error('系统异常');
if (empty($good['data']))$this->error('未检索到商品');
$goodItemId=$good['data']['list'][0]['itemId'];
$balance=$zbt->getUserBalance();
if (empty($balance))$this->error('用户不存在');
if ($balance['data']['data']=='0E-8' || $balance['data']['data']==0)$this->error('余额不足');
$price=$zbt->getPrice($good['data']['list'][0]['marketHashName']);
if ($balance['data']['data']<$price['data'][0]['autoDeliverPrice'])$this->error('余额不足');
$yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
do {
$num = $yCode[ intval( date( 'Y' ) ) - 2018 ].time() . rand(100, 999);
$res = db('users_warehouse')->where(['auto_order_num' => $num])->find();
} while ($res );
$pay=$zbt->quick_buy($goodItemId,$num,$row->url);
if (!$pay['success'])$this->error($pay['errorMsg']);
$params['auto_order_num']=$num;
$params['zbt_outTradeNo']=$pay['data']['orderId'];
ZBT发货助手主要功能:1,自动确认交易报价及发货,交易后极速到账2,仓库饰品自动上架,价格批量设置上架3,可设置默认溢价,支持比价、修改上架金额前段时间开发了个游戏抽奖,奖品需要对接自动发货。zbt机制就是类似于一个商城,抽中的奖品,通过注册的zbt账号购买,zbt去发货。先去注册个账号 https://www.zbt.com/在这个地方设置 白名单 apikey 回调地址。自动发货需要对接的接口: 用户余额查询 /open/user/v1/t-coin/balance 市场
本套自动发卡(发货)源码用途广泛,个人或商家可以用来销售自己的产品,如程序的计费(充值卡密),游戏充值等(在线发卡,全自动,省去不少时间),另外同样可以搭建一个供商家入驻的平台,自己不需要有点卡产品,完全从商户提点,是个不错的选择!
程序经过二次开发,安全无BUG。程序安装简单容易上手。
程序包内有安装教程,如果看不懂,或者不会安装的小白们,可以加客服QQ免费帮你安装。
2014年4月12日更新:
优化了程序后台的js代码,使程序运营速度更快。
删除了部分代码里的空格,空格会造成程序崩溃。
Steam中道具的属性有时候令人费解,一个特定的道具有几种不同类型的ID,以及许多模糊的专有名词。本指南旨在为您解决这些问题。
首先声明,Steam道具的“官方”含义是asset。当我说“Steam道具”时,我的意思是道具的一个特定副本。我不是指道具的定义,名称,图片或任何其它东西。我指的是该道具的特定唯一副本。
一般来说,Steam上的每个道具都属于一个app。“app”是一款游戏,软件或Steam上的任何其它内容。每个app都有唯一的appid。你可以通过访问其商店页面或社区中心并查看网址...
STM32F103ZBT是意法半导体(STMicroelectronics)公司推出的一款32位ARM Cortex-M3微控制器。该微控制器具有高性能、低功耗、高集成度等特点,适用于工业控制、通信、消费类电子产品以及汽车电子等领域。
STM32F103ZBT基于ARM Cortex-M3内核,主频为72MHz,具有128KB的Flash存储器和20KB的SRAM。同时,它还内置了多种外设模块,如UART、SPI、I2C、ADC、定时器等,可以满足不同应用场景的需求。
该微控制器的封装形式为LQFP-48,引脚间距为0.5mm,便于焊接和集成。供电电压范围为2.0V至3.6V,工作温度范围为-40℃至+85℃,适应各种环境条件。
除了上述基本特性外,STM32F103ZBT还支持各种调试和编程方式,如JTAG、SWD等,便于开发人员进行调试和软件下载。同时,它还具有丰富的开发工具和软件库,如STM32CubeMX和STM32Cube软件平台,为开发人员提供了便利。
总之,STM32F103ZBT是一款强大的32位微控制器,具有高性能、低功耗、高集成度等特点,适用于各种应用领域。它的丰富外设模块、灵活的调试和编程方式以及丰富的开发工具和软件库使得开发人员可以方便地进行开发和定制,满足各种需求。
PHP RSA 报错 openssl_sign(): supplied key param cannot be coerced into a private key
有只猫吃很多:
网站添加https后websocket不能使用
tp5 + workerman 实现聊天室
tp5 + workerman 实现聊天室
itxiaolong3:
usdt充值 btc网络(区块充值)
Bgosi: