抖音官方有开发文档,小程序是非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); ?>
网友回复