【问题标题】:WHMCS get invoice PDFWHMCS 获取发票 PDF
【发布时间】:2016-05-12 15:58:38
【问题描述】:

我正在尝试使用 API 方法将我的所有 WHMCS 发票从 WHMCS 导入到 c# 应用程序。当我尝试下载 PDF 文档时出现问题。没有 API 方法可以做到这一点,我无法在没有登录的情况下调用 dl.php 页面。 我无法使用 WHMCS API 方法以管理员身份登录,也无法使用客户端登录,因为(显然)我不知道他们的密码,我只有他们的 MD5 密码。

有什么解决办法吗?

谢谢

【问题讨论】:

    标签: c# pdf filestream whmcs invoices


    【解决方案1】:

    根据this page,这是无需登录即可下载发票的方法。

    创建一个 php 文件,比如 gen_invoice_pdf.php,并将其放在 whmcs 根目录中。

    将此代码添加到文件中:

    <?php
    include __DIR__ . '/init.php';
    include __DIR__ . '/includes/invoicefunctions.php';
    
    use WHMCS\Auth;
    
    $user = filter_var($_GET['us'], FILTER_SANITIZE_STRING);
    $pass = filter_var($_GET['pw'], FILTER_SANITIZE_STRING);
    $id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);
    $authAdmin = new Auth;
    
    if ($authAdmin->getInfobyUsername($user) && $authAdmin->comparePassword($pass)) {
        $isValid = true;
    } else {
        $isValid = false;
    }
    
    if (!$isValid) {
        die('Access Denied');
    }
    
    
    if ($id > 0) {
        $pdfdata = pdfInvoice($id);
    
        header("Content-type:application/pdf");
        header("Content-Disposition:attachment;filename=invoice_$id.pdf");
    
        echo $pdfdata;  
    
    }
    

    要下载发票编号:5,请访问网址:

    http://whmcs-example.com/gen_invoice_pdf.php?id=5&us=myuser&pw=mypass

    注意:任何知道 url 的人都可以访问,例如,您可以设置页面接受来自特定 IP 地址的连接。

    更新:

    添加了 WHMCS 管理员身份验证,仅适用于 WHMCS >= 5.3.9,检查:Admin Password Hashing

    【讨论】:

    • 它似乎运作良好。但我想在这段代码中加入一些保护措施,因为任何人都可以访问它。可以对我的管理员用户进行身份验证并通过身份验证成功获取 pdfdata?所以网址将类似于whmcs-example.com/…
    • 您的意思是WHMCS 管理员用户?还是其他系统用户?
    • 没错,WHMCS 管理员用户。创建外部调用时类似于WHMCS的API。
    • @Bruno 已更新以符合您的要求,希望对您有所帮助。
    猜你喜欢
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多