WHMCS 自动审核通过订单 无需插件

近使用whmcs发现两个问题

  • 订单无论支付与否 订单状态并不会自动激活(Active) 会一直保持Pending状态并等待人工手动处理 (即使服务已支付完成后自动开通)
  • 即使产品设置了“当收到客户首付款时自动开通” 当用户使用余额付款时 并不会自动开通 (用支付方式支付开通 一切正常)

第一反应先去查找了一下插件 确实轻松找到了
https://www.whmcsshop.com/modules/autoacceptorders/

一看价格99 不贵 看产品展示 功能好像也还不错

不过思考了一下感觉其实也就是支付完成之后添加一行审核代码就能搞定的问题 插件卖这个价说明问题应该很简单
就随手搜了一下
果然就有公开的代码就能搞定

其实只需要添加一个Hooks就可以了

原贴地址: https://whmcs.community/topic/274669-auto-accept-orders/
项目地址: https://github.com/rakeshthakurpro/WHMCS-Auto-Accept-Orders
使用方法: 上传php 文件到 "includes/hooks" 文件夹即可

看了眼代码 把其中26行的 'autosetup' => false 改为 true
直接顺带解决了第二个余额支付无法自动开通的问题

完结撒花~

问题二如果有更传统设置就能解决的方法 请大佬们分享一下

代码如下


 

<?php

/*
 *
 * Auto Accept Orders
 * Created By Rakesh Kumar(rakeshthakurpro0306@gmail.com)
 *
 * Copyrights @ www.whmcsninja.com
 * www.whmcsninja.com
 *
 * Hook version 1.0.0
 *
 * */
if (!defined("WHMCS"))
    die("This file cannot be accessed directly");

/* * *******************
  Auto Accept Orders Settings
 * ******************* */

use WHMCS\Database\Capsule;
function settings(){
    $admin = Capsule::table('tbladmins')->where('roleid', 1)->first();
    return array(
        'admin' => $admin->id, // Don't add anything Here
        'autosetup' => true, // determines whether product provisioning is performed
        'sendemail' => true, // sets if welcome emails for products and registration confirmation emails for domains should be sent 
        'ispaid' => true, // set to true if you want to accept only paid orders
       
    );
}
function get_order($invoiceid) {
    $order = Capsule::table('tblorders')->where('invoiceid', $invoiceid)->first();
    return array('id' => $order->id, 'status' => $order->status); // Don't add anything Here);
}

/*Hook code execute if invoice is paid from admin area */

add_hook('InvoicePaid', 1, function($vars) {
    $settings = settings();
    $order = get_order($vars['invoiceid']);

    if ($order['status'] == 'Pending') {
        $result = localAPI('AcceptOrder', array('orderid' => $order['id']), $settings['admin']);
    }
});

/*Below Code Invoked while invoice paid from clientarea during order Process */
add_hook('AfterShoppingCartCheckout', 1, function($vars) {
    $settings = settings();
    
    $order = get_order($vars['InvoiceID']);
    $ispaid = $settings['ispaid'];
    $autosetup=$settings['autosetup'];

    $Getinvoice = localAPI('GetInvoice', array('invoiceid' => $vars['InvoiceID'],), $settings['admin']);
    $ispaid = ($Getinvoice['result'] == 'success' && $Getinvoice['balance'] <= 0) ? true : false;
    
    /*     * *******Uncomment below code if you want product to execute Module create command for products having price 0.00 ********** */
    
    //$autosetup=($Getinvoice['result'] == 'success' && $Getinvoice['balance'] <= 0) ? true : false;

    /*     * *******Uncomment below code if you want product to execute Module create command for Free products ********** */
    
//if(!$vars['InvoiceID']){
    //  $autosetup = true;
//}
    /*     * ****************************************** */

    if ($ispaid) {
        $result = localAPI('AcceptOrder', array('orderid' => $order['id'],'autosetup' => $autosetup,'sendemail' => true, ), $admin);
    }
});
?>

 

版权声明:
作者:Xuan
链接:https://www.tacores.com/archives/240
来源:优林博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
WHMCS 自动审核通过订单 无需插件
近使用whmcs发现两个问题 订单无论支付与否 订单状态并不会自动激活(Active) 会一直保持Pending状态并等待人工手动处理 (即使服务已支付完成后自动开通) 即使……
<<上一篇
下一篇>>