抖音官方有开发文档,小程序是非POI订单,产生的订单信息要通过这个接口推送到抖音订单中心。

订单推送接口接入之前必须接入担保支付。
接口说明
接口适用范围:接入交易系统的订单将不再需要本接口进行推送,交易系统将会自动推送至抖音订单中心。
订单类型释义:
POI订单:当订单内的商品是进入了抖音商品库的商品称为 POI 订单,请参照下述订单类型上传order_detail。
非 POI 订单:未做商品同步的则为非 POI 订单。请使用小程序普通订单规范上传 order_detail。
非 POI 订单统一为普通小程序订单,order_type 为 0
open_id 生成规范: 小程序开发说明 IDE 中的 open_id 生成逻辑与真机调试不同,使用 IDE 中的 open_id 做订单同步会出现错误,请使用真机调试做订单同步。
官网有文档:https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/ecpay/order/order-sync/
php示例代码
<?php
function getAccessToken() {
$appid = 'YOUR_APP_ID'; // Replace with your app id
$appSecret = 'YOUR_APP_SECRET'; // Replace with your app secret
$data = array(
"appid" =>$appid, "secret" => $appSecret,
'grant_type' => 'client_credential',
);
$json = json_encode($data);
return doPostJson("https://developer.toutiao.com/api/apps/v2/token", $json, "UTF-8");
}
/*
推送订单到抖音订单中心
* @param open_id 用户openid
* @param order_status
普通小程序订单订单状态,POI 订单可以忽略
* 0:待支付
* 1:已支付
* 2:已取消
* 4:已核销
* 5:退款中
* 6:已退款
* 8:退款失败
* 注意:普通小程序订单必传,担保支付分账依赖该状态
* @param orderNo. 商户订单号
* @param status 订单状态,与上面的不一样,参看文档
* @param totalPrice 金额分
*
*/
function pushOrder($open_id, $order_status, $orderNo, $status, $totalPrice) {
$item = array(
'item_code' => strval(time()), // System.currentTimeMillis()
'img' => 'https://repo.bfw.wiki/bfwrepo/image/60dd75384c21a.png',
'title' => '零食大礼包',
'sub_title' => '200g重量',
'price' => $totalPrice,
);
$list = array($item);
$orderDetail = array(
'order_id' => $orderNo,
'create_time' => time(), // System.currentTimeMillis()
'status' => $status,
'amount' => 1,
'total_price' => $totalPrice,
'detail_url' => 'pages/detail/detail',
'item_list' => $list,
);
$accessToken = getAccessToken(); // Assume that getAccessToken() returns the access token directly
if (isset($accessToken['err_no']) && $accessToken['err_no'] == 0) {
$json = array(
'access_token' => $accessToken['data']['access_token'],
'app_name' => 'douyin',
'open_id' => $open_id,
'order_status' => $order_status,
'order_type' => 0,
'update_time' => time(),
'order_detail' => json_encode($orderDetail),
);
$ret = doPostJson("https://developer.toutiao.com/api/apps/order/v2/push", json_encode($json), "UTF-8");
} else {
die($accessToken['err_tips']);
}
return $ret;
}
function doPostJson($url, $jsonStr, $charset) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'charset' => $charset
));
$result = curl_exec($ch);
if (!$result) {
die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
}
var_dump($result);
curl_close($ch);
return json_decode($result, 1);;
}
pushOrder(11, 1, 123132, 110, 1);
?> 网友回复


