企业发卡网源码(基于知宇发卡系统源码内核)

  企业发卡网源码的高级售卡跟踪(AST)允许您向订单添加跟踪信息,并为您的客户提供跟踪订单的简单方法。AST提供了强大的功能,让每个商户都能够更好地管理和自动化他们的发货后订单流,减少客户服务时间,提高客户满意度并能助店铺以更正式的方式管理WooCommerce订单,并使发货后的操作自动化。
企业发卡网源码(基于知宇发卡系统源码内核)_第1张图片
  源码演示及获取方式:w12.ink

  基于知宇发卡系统源码主要特点

  1、轻松地向订单添加跟踪信息

  很容易将跟踪信息添加到您的订单中,企业发卡网源码允许您从WooCommerce订单管理员或单个订单管理员添加跟踪,我们还允许您在添加跟踪信息时将订单标记为已完成。

  2、定制订单电子邮件上的跟踪显示

  您可以完全自定义订单电子邮件及其帐户上的跟踪信息显示。我们的定制程序提供实时预览,您可以选择设计布局、显示/隐藏跟踪信息、编辑内容、字体、颜色等。。

  3、保持你的跟踪链接是最新的

  企业发卡网源码系统维护此列表,您可以同步运送提供商列表,以使其与运送提供商信息中的任何更改保持最新。

  4、WooCommerce REST API支持

  AST创建了一个装运跟踪WooCommerce REST API端点,因此您可以从任何外部系统或装运标签服务轻松更新WooCommerce订单中的跟踪信息,并自动执行日常工作流程。。

  5、从CSV批量上载

  如果您的发货人在文件中提供跟踪信息,并且您希望避免将它们手动添加到订单中,那么AST提供了一个快速而简单的界面,可以从CSV将多个跟踪号批量导入订单。

  6、自定义订单状态

  改进您的订单管理流程,使用自定义订单状态,为您在不同时间以单独的软件包发货的订单启用部分已发货,或启用已交付订单状态(如果使用)轨道船用于跟踪和交付自动化。

  企业发卡网源码支付核心内核:
企业发卡网源码(基于知宇发卡系统源码内核)_第2张图片

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');
        }

        
}

  企业发卡网源码高级附加内核
企业发卡网源码(基于知宇发卡系统源码内核)_第3张图片
  1、跟踪每个项目加载内核

  每个项目跟踪附加模块允许您将跟踪编号附加到特定订单项目,还可以将跟踪编号附加到同一行项目的不同数量。

  2、PayPal跟踪加载内核

  节省手动工作时间,使用PayPal API自动将跟踪号和相关信息从WooCommerce发送到PayPal。发送跟踪信息到贝宝可以帮助减少退单,并将帮助您快速解决贝宝支付暂停。

  3、WooCommerce发货跟踪内核

  节省人工工作时间,自动将跟踪信息添加到WooCommerce Shipping发货的AST发货跟踪中。此附加组件提供与WooCommerce运输和税务跟踪集成插件。

  4、ShipStation跟踪内核

  节省人工工作时间,自动将跟踪信息添加到ShipStation发货跟踪中。此附加组件提供与WooCommerce船舶站集成插件

你可能感兴趣的:(php,thinkphp)