PDD转码测试

0 引言

采用拼多多的转码api(pdd.ddk.goods.zs.unit.url.gen),其参数用到

  • client_id
  • client_secret
  • accessToken
    需要针对不同的参数进行分析

1 初始化

目前只有两个client_id,client_secret,需要获取accessToken,有两种方式,均是在AccessToken.php中进行:

  1. 通过refreshToken进行刷新获得。
  • Config.php中填入refreshToken并运行即可得到accessTokenrefreshToken
  1. code获取,这也是系统初始化的方法。
  • 访问链接,即可获得code
    https://jinbao.pinduoduo.com/open.html?client_id=[client_id]&response_type=code&redirect_uri=[回调地址]
  • Config.php中填入code并运行即可得到accessTokenrefreshToken

需要注意的是:

  1. accessToken一小时更新一次,refreshToken一天更新一次
  2. 本人采用了更新后写入新文档,更新前用新文档替换旧文档的形式完成更新,这种方式会有一个刷新的时间差。
//开头
$str_t=file_get_contents("Config_linshi.php");
file_put_contents("Config.php",$str_t);
//更新等内容
//结尾
$str=file_get_contents("Config.php");//打开文件
$str=str_replace($old_access,$access_token,$str);//替换
$str=str_replace($old_refresh,$refresh_token,$str);//替换
file_put_contents("Config_linshi.php",$str);

2 PID备案

只有经过备案的PID才可以直接进行转码,备案流程如下:

  1. 利用PddDdkOauthMemberAuthorityQuery.php识别是否完成了备案,若未备案则有bind=0
$request->setPid('[PID]');
$request->setCustomParameters('[名字]');

2.利用PddDdkGoodsPromotionUrlGenerate.php获取备案链接,拿到链接微信扫码即可完成备案。

$request->setCustomParameters('[名字]');
//[名字]要和后面使用时保持一致,现在可以随便设
$request->setGoodsSignList(array('c9_2jIGD8q9HeEqRwvfY5A2CBcK7_JOFdnZa6o'));
//这个是官方某处的GoodsSign,直接拿过来用了
$request->setPId('[PID]');
//其中PID可以在官网的转码功能中用F12控制台获取

3 转链

注意[名字]要和备案时名字一致即可,利用PddDdkGoodsZsUnitUrlGen.php

<?php
/**
 * 示例接口名称:pdd.ddk.goods.zs.unit.url.gen
*/
require_once dirname(__FILE__).'/Config.php';
require_once dirname(__FILE__)."/../vendor/autoload.php";

use Com\Pdd\Pop\Sdk\PopHttpClient;
use Com\Pdd\Pop\Sdk\Api\Request\PddDdkGoodsZsUnitUrlGenRequest;
$client = new PopHttpClient(Config::$clientId, Config::$clientSecret);

$request = new PddDdkGoodsZsUnitUrlGenRequest();

$request->setCustomParameters('[名字]');
$request->setPId('[PID]');
$request->setSourceUrl('[要转码的链接]');
try{
    $response = $client->syncInvoke($request);
} catch(Com\Pdd\Pop\Sdk\PopHttpException $e){
    echo $e->getMessage();
    exit;
}
$content = $response->getContent();
if(isset($content['error_response'])){
    echo "异常返回";
}
echo json_encode($content,JSON_UNESCAPED_UNICODE);

4 总结

至此完成了,记得AccessToken.php自动刷新。
常用链接

接口
备案
GoodsSign
官方转链

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 OAuth2.0是一个开放、授权的行业标准协议。广泛用于某些知名网站(例如QQ、微信、微博等)授权第三方应用...
    呼呼菜菜阅读 668评论 0 5
  • 简介:原文:网站集成QQ登录功能 最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,...
    文墨世家后人谢鸿威阅读 732评论 0 1
  • 前言 拦截器顺序: 认证流程:Filter->构造Token->AuthenticationManager->转给...
    CJ21阅读 2,759评论 1 11
  • 代码: AuthorizationServerConfig @Configuration @EnableAutho...
    cc3de17a3511阅读 320评论 0 0
  • 二、密码模式源码 2.1 概述 访问/oauth/token会经过拦截器的顺序ClientCredentialsT...
    CJ21阅读 1,495评论 0 4