webman 引用 使用 抖店的 sdk

webmanchin

问题描述

webman 引用 使用 抖店的 sdk
我想实现在 webman 里面调用 抖店的函数,怎么做?

抖店的sdk里面有个 autoload.php 文件
贴上这个文件部分代码

<?php

//auto generated code
class autoload
{

    public static function loadClass($class)
    {
        $rootPath = dirname(__FILE__);
        $filename = $rootPath."/open/core/http/".$class.".php";
        if(is_file($filename)) {
            include $filename;
            return;
        }
        $filename = $rootPath."/open/core/".$class.".php";
        if(is_file($filename)) {
            include $filename;
            return;
        }
        $filename = $rootPath."/open/api/token/".$class.".php";
        if(is_file($filename)) {
            include $filename;
            return;
        }
        $filename = $rootPath."/open/api/token/param/".$

还有个 example.php 文件
贴上这个文件的部分代码

<?php

require "autoload.php";

include "open/api/materialgw/BinaryMaterialUploadAddressAuthParam.php";
include "open/api/materialgw/BinaryMaterialUploadAddressAuthRequest.php";
include "open/api/materialgw/BinaryMaterialUploadParam.php";

// ====API使用示例====
// $accessToken = AccessTokenBuilder::build("xxxx", ACCESS_TOKEN_SHOP_ID);
// 创建Request对象,假设调用的方法名称是: demo.method
// $request= new DemoMethodRequest();
// 发起API调用
// $response = $request->execute(accessToken);

// ====SPI使用示例====
// 服务端调用spi接口时的链接参数
// $request = new DoudianOpSpiRequest();
// $param = $request->getSpiParam();
// $param->appKey = 'xxxxx';
// $param->paramJson = "{}";
// $param->sign = 'xxxxxxx';
// $param->signMethod = 'md5';
// $param->timestamp = '2006-01-02 15:04:05';
// 定义并注册一个spi处理器
// $request->registerHandler(function ($context) {
//    $paramJsonObj = $context->getParamJsonObject();
//    var_dump($paramJsonObj);
//
//    echo $paramJsonObj->order_id;
//    echo $paramJsonObj->to_receiver_info->post_tel;
//
//    $data = array();
//    $data["order_id"] = "$paramJsonObj->order_id";
//    $data["shop_id"] = "$paramJsonObj->shop_id";
//    $context->setResponseData($data);
//    $context->wrapSuccess();
// });
// 执行处理器
// $response = $request->execute();
// 将response返回给服务器
// write return code here
254 3 1
3个回答

liziyu
<?php

namespace app\controller;

use support\Request;
use support\Response;

class DoudianController
{
    public function __construct()
    {
        // 引入抖店 SDK 的 autoload.php
        require_once __DIR__ . '/../../doudian-sdk/autoload.php';
    }

    public function demoMethod(Request $request): Response
    {
        // 示例: 创建 AccessToken
        $accessToken = AccessTokenBuilder::build("xxxx", ACCESS_TOKEN_SHOP_ID);

        // 创建 Request 对象
        $request = new DemoMethodRequest();

        // 发起 API 调用
        $response = $request->execute($accessToken);

        // 返回响应
        return response()->json($response);
    }
}

不知道这样行不行!~

  • webmanchin 9天前

    试了,你这样不行
    Class "app\controller\AccessTokenBuilder" not found

nitron

正好抖店早期还在内部测试的时候,找我们进行了合作,当时是在它们官方下的SDK,没有composer包,不好集成进自己的系统
如果你是在官方下的SDK包,你可以用下面这个步骤进行
截图

  1. 到开放平台下载SDK并解压
  2. sdk-php同级新建一个sh文件,内容如下:
#!/bin/sh
clear
root=$PWD
echo "Start process"
[ -d douyin ] && rm -rf douyin 
mkdir douyin
cd douyin
cp -rp ../sdk-php/src/open/* .
dir=$PWD
[ -d param ] || mkdir param
cd "$dir/api"

echo "Processing api..."

for d in */ ; do  
    cd $d
    [ -d param ] && mv param/* "$dir/param/" && rmdir param
    [ -d data ] && mv data/* "$dir/core/" && rmdir data
    mv *.php ../
    cd ..
    rmdir $d
done

sed -i '2a\namespace Douyin\\Api;\n' *.php
sed -i '/auto generated code/d' *.php
sed -i '4a\namespace Douyin\\Core\\DoudianOpClient;' *.php
sed -i '5a\namespace Douyin\\Core\\GlobalConfig;' *.php
php-cs-fixer -q fix .

echo "Processing param..."

cd "$dir/param"
sed -i '2a\namespace Douyin\\Param;\n' *.php
sed -i '/auto generated code/d' *.php
php-cs-fixer -q fix .

echo "Processing core..."

cd "$dir/utils"
mv * ../core/
rmdir "$dir/utils"

cd "$dir/core"
mv http/*.php .
rmdir http

sed -i '2a\namespace Douyin\\Core;\n' *.php
sed -i '/auto generated code/d' *.php
sed -i '4a\use \\Exception;\n' HttpClient.php
sed -i '4a\use Douyin\\Api\\RefreshTokenRequest;' AccessTokenBuilder.php
sed -i '5a\use Douyin\\Api\\CreateTokenRequest;' AccessTokenBuilder.php
sed -i '6a\use Douyin\\Param\\CreateTokenParam;' AccessTokenBuilder.php
sed -i '7a\use Douyin\\Param\\RefreshTokenParam;\n' AccessTokenBuilder.php
php-cs-fixer -q fix .

echo "Start packing"
cd $root
[ -f douyin.zip ] && rm douyin.zip
zip -r -ll -q douyin.zip ./douyin -x "*.cache"
rm -rf douyin
echo "Job done! "
  1. 执行后会生成douyin.zip
  2. 将douyin.zip解压放到webman目录下,我这里是跟app目录同级
    5.修改composer.json,在psr-4的地方多加一行 "Douyin\": "douyin/", 我这里自己的大概是这样,Namespace我用的是Douyin,你可以换成你喜欢的,如果需要换,自行修改上面脚本内sed的Namespace
    "psr-4": {
      "Douyin\\": "douyin/"
    },
  3. 执行 composer dumpautoload
  4. 可以直接在代码里使用
    use Douyin\Api\xxxxxx;
    use Douyin\Core\xxxxxx;
    use Douyin\Param\xxxxxx;
  • 暂无评论
darcy

楼主你的加白是怎么过的?我们公司一直加不了白

  • liziyu 20小时前

    遇到过,加白甚是麻烦。

×
🔝