添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
满身肌肉的风衣  ·  linux - How do I ...·  11 月前    · 
豪气的小摩托  ·  Troubleshoot the ...·  1 年前    · 
快乐的麻辣香锅  ·  javax.xml.parsers.Docu ...·  1 年前    · 
犯傻的沙滩裤  ·  原神_百度百科·  1 年前    · 

ZBT发货助手主要功能:

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'];//品质:1=崭新出厂,2=略有破损,3=久经沙场,4=战痕累累 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);//return_code是http状态码 $priceResult=json_decode($priceResult,true); return $priceResult; * 快速购买 public function quick_buy($goodItemId,$autoOrderNum,$tradeUrl){ $payData=[ 'appId'=>$this->appId, 'delivery'=>2,//发货模式 1=人工,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);//return_code是http状态码 $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);//return_code是http状态码 $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; //字符串转Unicode编码 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);//获取字符内部数组表示,此时$arr应类似array(228, 189, 160) foreach ($arr as $value) $bin_str .= decbin(ord($value));//转成数字再转成二进制字符串,$bin_str应类似111001001011110110100000,如果是汉字"你" $bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/', '$1$2$3', $bin_str);//正则截取, $bin_str应类似0100111101100000,如果是汉字"你" $unicode = dechex(bindec($bin_str));//返回unicode十六进制 $_sup = ''; for ($i = 0; $i < 4 - strlen($unicode); $i++) $_sup .= '0';//补位高字节 0 $str = '\\u' . $_sup . $unicode; //加上 \u 返回 $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);
//        halt($curlPost);
        $ch = curl_init();//初始化curl
        curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
        curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
        curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
        curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
        $data = curl_exec($ch);//运行curl
        curl_close($ch);
        return $data;
     * get
     * @param string $url 请求地址
    public static function GetHttp($url){
        // 关闭句柄
        $curl = curl_init(); // 启动一个CURL会话
        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); // 从证书中检查SSL加密算法是否存在
        $tmpInfo = curl_exec($curl); //返回api的json对象
        if(curl_exec($curl) === false)
            return 'Curl error: ' . curl_error($curl);
        //关闭URL请求
        curl_close($curl);
        return $tmpInfo; //返回json对象

具体使用方法:

				$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: 作者你好,请问这linux服务器如何开启后台运行的,您写的这个启动命令关闭窗口就结束了。请教一下,望回复 usdt充值 btc网络(区块充值) Bgosi: 波场链有人写了 https://blog.csdn.net/qq_21046665/article/details/125525886