企业发卡网源码的高级售卡跟踪(AST)允许您向订单添加跟踪信息,并为您的客户提供跟踪订单的简单方法。AST提供了强大的功能,让每个商户都能够更好地管理和自动化他们的发货后订单流,减少客户服务时间,提高客户满意度并能助店铺以更正式的方式管理WooCommerce订单,并使发货后的操作自动化。
源码演示及获取方式:w12.ink
基于知宇发卡系统源码主要特点
1、轻松地向订单添加跟踪信息
很容易将跟踪信息添加到您的订单中,企业发卡网源码允许您从WooCommerce订单管理员或单个订单管理员添加跟踪,我们还允许您在添加跟踪信息时将订单标记为已完成。
2、定制订单电子邮件上的跟踪显示
您可以完全自定义订单电子邮件及其帐户上的跟踪信息显示。我们的定制程序提供实时预览,您可以选择设计布局、显示/隐藏跟踪信息、编辑内容、字体、颜色等。。
3、保持你的跟踪链接是最新的
企业发卡网源码系统维护此列表,您可以同步运送提供商列表,以使其与运送提供商信息中的任何更改保持最新。
4、WooCommerce REST API支持
AST创建了一个装运跟踪WooCommerce REST API端点,因此您可以从任何外部系统或装运标签服务轻松更新WooCommerce订单中的跟踪信息,并自动执行日常工作流程。。
5、从CSV批量上载
如果您的发货人在文件中提供跟踪信息,并且您希望避免将它们手动添加到订单中,那么AST提供了一个快速而简单的界面,可以从CSV将多个跟踪号批量导入订单。
6、自定义订单状态
改进您的订单管理流程,使用自定义订单状态,为您在不同时间以单独的软件包发货的订单启用部分已发货,或启用已交付订单状态(如果使用)轨道船用于跟踪和交付自动化。
namespace app\common;
use app\common\util\notify\Sell;
use think\Db;
use think\Exception;
class Pay {
protected $error = '';
public function getError() {
return $this->error;
}
/**
* @var array 缓存的实例
*/
public static $instance = [];
public static function load($channel, $account = []) {
$code = $channel->code;
if (!isset($account['params']->refer)) {
$account['params']->refer = '';
}
$class = '\\app\\common\\pay\\' . $code;
if (!isset(SELF::$instance[$code])) {
// 实例化支付渠道
SELF::$instance[$code] = new $class();
// 加载渠道账户
SELF::$instance[$code]->channel = $channel;
// 加载渠道账户
SELF::$instance[$code]->account = $account;
}
return SELF::$instance[$code];
}
/**
* 完成订单
*
* @param string $order 订单
*/
public function completeOrder(&$order) {
Db::startTrans();
try {
$time = time();
// 完成订单
$res = Db::table('order')->where(['id' => $order->id, 'status' => 0])->update(['status' => 1, 'success_at' => $time]);
if (!$res) {
Db::rollback();
exit;
}
// 用户加钱
$user = Db::table('user')->lock(true)->where('id', $order->user_id)->find();
if ($user) {
$money = $order->total_product_price; //加的钱为产品总价
Db::table('user')->where('id', $order->user_id)->update(['money' => ['exp', 'money+' . $money]]);
//当前余额
$balance = round($user['money'] + $money, 3);
// 记录金额日志
record_user_money_log('goods_sold', $user['id'], $money, $balance, "成功售出商品{$order->goods_name}({$order->quantity}张)");
// 扣除手续费
if ($order->fee_payer == 1 && $order->fee > 0) {
Db::table('user')->where('id', $order->user_id)->update(['money' => ['exp', 'money-' . $order->fee]]);
//当前余额
$balance = round($balance - $order->fee, 3);
if ($balance < 0) {
throw new Exception("商家余额不足以扣除手续费");
}
// 记录金额日志
record_user_money_log('goods_sold', $user['id'], -$order->fee, $balance, "扣除交易手续费,订单:{$order->trade_no}");
// 扣除上级佣金
}
if ($user['parent_id'] > 0) {
$parent = Db::table('user')->lock(true)->where('id', $user['parent_id'])->find();
$spreadRebateRate = get_spread_rebate_rate();
$rebate = round($order->fee * $spreadRebateRate, 3);
if ($parent && $rebate > 0) {
// 返佣
Db::table('user')->where('id', $parent['id'])->update(['money' => ['exp', 'money+' . $rebate], 'rebate' => ['exp', 'rebate+' . $rebate]]);
// 记录金额日志
record_user_money_log('sub_sold_rebate', $parent['id'], $rebate, round($parent['money'] + $rebate, 3), "下级[{$user['username']}]售出商品,返佣{$rebate}元");
}
}
$smsPrice = 0;
if ($order->sms_payer == 1) {
//判断是否发送了短信
if ($order->sms_notify == 1) {
$smsPrice = get_sms_cost();
Db::table('user')->where('id', $order->user_id)->update(['money' => ['exp', 'money-' . $smsPrice]]);
//当前余额
$balance = round($balance - $smsPrice, 3);
if ($balance < 0) {
throw new Exception('商家余额不足以扣除短信费');
}
// 记录金额日志
record_user_money_log('goods_sold', $user['id'], -$smsPrice, $balance, "扣除短信费,订单:{$order->trade_no}");
//扣完短信费,更新到订单信息中
Db::table('order')->where('id', $order->id)->update(['sms_price' => $smsPrice]);
}
}
//交易完成先冻结资金,T+1日再解冻
if ($order->fee_payer == 1) {
$freezeMoney = round($money - $order->fee - $smsPrice, 3);
} else {
$freezeMoney = round($money - $smsPrice, 3);
}
//记录这张订单最终的商家收入是多少
$order->finally_money = $freezeMoney;
$order->save();
if ($freezeMoney >= 0) {
//加入自动解冻队列
// $unfreezeTime = time() + 86400; //订单冻结24小时
$unfreezeTime = strtotime(date('Y-m-d', $time)) + 86400; //次日凌晨解冻
if (1 == $order->settlement_type) {
// T1 结算
//冻结金额
Db::table('user')->where('id', $user['id'])->update(['money' => ['exp', 'money-' . $freezeMoney], 'freeze_money' => ['exp', 'freeze_money+' . $freezeMoney]]);
//当前余额
$balance = round($balance - $freezeMoney, 3);
record_user_money_log('freeze', $user['id'], -$freezeMoney, $balance, "冻结订单:{$order->trade_no},冻结金额:{$freezeMoney}元");
Db::table('auto_unfreeze')->insert([
'trade_no' => $order->trade_no,
'user_id' => $user['id'],
'money' => $freezeMoney,
'unfreeze_time' => $unfreezeTime,
'created_at' => $time,
]);
} elseif (0 == $order->settlement_type) {
// T0 结算,补一张0元冻结记录,用于投诉
record_user_money_log('freeze', $user['id'], 0, $balance, "冻结订单:{$order->trade_no},冻结金额:0元(T0 计算)");
Db::table('auto_unfreeze')->insert([
'trade_no' => $order->trade_no,
'user_id' => $user['id'],
'money' => 0,
'unfreeze_time' => $unfreezeTime,
'created_at' => $time,
]);
}
}
}
Db::commit();
$notify = new Sell();
$notify->notify($order, $freezeMoney);
} catch (\Exception $e) {
Db::rollback();
// 记录错误订单
record_file_log('complete_error', $order->trade_no . $e->getMessage());
record_file_log('complete_error', $e->getTraceAsString());
die('error');
}
}
每个项目跟踪附加模块允许您将跟踪编号附加到特定订单项目,还可以将跟踪编号附加到同一行项目的不同数量。
2、PayPal跟踪加载内核
节省手动工作时间,使用PayPal API自动将跟踪号和相关信息从WooCommerce发送到PayPal。发送跟踪信息到贝宝可以帮助减少退单,并将帮助您快速解决贝宝支付暂停。
3、WooCommerce发货跟踪内核
节省人工工作时间,自动将跟踪信息添加到WooCommerce Shipping发货的AST发货跟踪中。此附加组件提供与WooCommerce运输和税务跟踪集成插件。
4、ShipStation跟踪内核
节省人工工作时间,自动将跟踪信息添加到ShipStation发货跟踪中。此附加组件提供与WooCommerce船舶站集成插件