feat: #10000 快团团电子面单打印

This commit is contained in:
赵世界 2023-07-07 15:27:40 +08:00
parent 5acd3c0b28
commit 9b5ef9deed
4 changed files with 83 additions and 0 deletions

View File

@ -53,5 +53,16 @@ class Test extends Command
*/ */
public function handle() public function handle()
{ {
$shops = Shop::query()->where('plat_id', Shop::$PLAT_KTT)->where('status', Shop::$STATUS_AUTHORIZED)->where('id', 6)->get();
foreach ($shops as $shop) {
$faceSheet = new FaceSheet();
$faceSheet->setShop($shop);
var_dump($faceSheet->searchWayBill());
}
}
public function getAuthUrl()
{
return "https://wb.pinduoduo.com/logistics/auth?client_id=24f25877aca447c5830a6aa896301d5e&redirect_uri=http://erp.chutang66.com/pdd/ship";
} }
} }

View File

@ -7,6 +7,7 @@ use App\Models\BusinessGoodsSku;
use App\Models\GoodsSku; use App\Models\GoodsSku;
use App\Models\Shop; use App\Models\Shop;
use App\Http\Resources\ShopsResource; use App\Http\Resources\ShopsResource;
use App\Services\PrintModule\Pdd\Ktt;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
@ -218,4 +219,10 @@ class ShopsController extends Controller
return response($this->res, $this->res['httpCode']); return response($this->res, $this->res['httpCode']);
} }
public function pddPrintAuth(Request $request)
{
$ktt = new Ktt();
$ktt->auth($request->get('code'));
}
} }

View File

@ -0,0 +1,63 @@
<?php
namespace App\Services\PrintModule\Pdd;
use GuzzleHttp\Client;
use Illuminate\Support\Facades\Log as LogFile;
class Ktt
{
protected $clientId = '24f25877aca447c5830a6aa896301d5e';
protected $clientSecret = '59b6f4bd402c6423878a8f4ef1bde28359c1f05a';
protected $callBackUrl = 'http://erp.chutang66.com/pdd/ship';
public function auth($code)
{
$accessToken = $this->getAccessTokenWithCode($code);
LogFile::info('电子面单应用授权: ' . json_encode($accessToken, 256));
}
protected function getAccessTokenWithCode($code)
{
$type = 'pdd.pop.auth.token.create';
$res = $this->doRequest($type, ['code' => $code]);
return $res['pop_auth_token_create_response'];
}
public function doRequest($type, $appendParams = [], $url = 'https://gw-api.pinduoduo.com/api/router')
{
$publicParams = [
'type' => $type,
'client_id' => $this->clientId,
'timestamp' => time()
];
$publicParams = array_merge($publicParams, $appendParams);
$publicParams['sign'] = $this->getSign($publicParams);
return $this->formDataPostRequest($url, $publicParams);
}
protected function getSign($params)
{
ksort($params);
$str = '';
foreach ($params as $key => $val) {
$str .= $key . $val;
}
$str = $this->clientSecret . $str . $this->clientSecret;
return strtoupper(md5($str));
}
protected function formDataPostRequest($url, $params)
{
$method = 'POST';
$headers = [
'headers' => ['Content-type' => 'application/x-www-form-urlencoded;charset=UTF-8'],
'form_params' => $params
];
$res = (new Client())->request($method, $url, $headers);
return json_decode($res->getBody()->getContents(), true);
}
}

View File

@ -28,3 +28,5 @@ Route::get('today_price/export', [BusinessGoodsSkusController::class, 'exportTod
Route::get('goods/import/template', [GoodsController::class, 'download'])->name('download.goods_import.template'); Route::get('goods/import/template', [GoodsController::class, 'download'])->name('download.goods_import.template');
Route::get('callback', [ShopsController::class, 'authBind'])->name('shop.auth_bind.callback'); Route::get('callback', [ShopsController::class, 'authBind'])->name('shop.auth_bind.callback');
Route::get('pdd/ship', [ShopsController::class, 'pddPrintAuth'])->name('shop.pdd_print.callback');