从 WHMCS 获取 pdf 发票?

2024-06-13

对于一个小型副项目,我必须创建一个通过 WHMCS 获取 PDF 的调用。我看到 API 可以获取变量,例如数量、发票项目等,但我想要与客户下订单时系统发送的 PDF 相同的 PDF。我有一个 PHP 应用程序。

UPDATE

遵循下面的很棒的建议,我能够用一行解决这个问题:

$pdf->Output('invoice.'.$invoicenum.'.pdf', 'F');

现在,每次查看或通过电子邮件发送发票时,最新版本(付费或未付费)都会存储在我选择的位置。


有一篇文章将 PDF 发票存储在 ftp 上 http://whmcs.argentina--software.com.ar/index.php?title=Store_Pdf_Invoice_on_ftp有了这些信息:

1-更改此代码
INVOICESDIRECTORY- 我保存 PDF 发票的目录
ADMINDIRECTORY- 管理目录
2-将其粘贴到最后一行invoicepdf.tpl文件在您的模板中。

if ($status=="Paid") {
        if(strpos($_SERVER['PHP_SELF'],"ADMINDIRECTORY") === false) {
                if((strpos($_SERVER['PHP_SELF'],"dl.php") !== false) || (strpos($_SERVER['PHP_SELF'],"dl.html") !== false)) {
                        if(!file_exists("./INVOICESDIRECTORY/".str_replace("/", "-", $invoicenum).".pdf")) {
                                $pdf->Output("./INVOICESDIRECTORY/".str_replace("/", "-", $invoicenum).".pdf", "F");
                        }              
                        $fullPath = "./INVOICESDIRECTORY/".str_replace("/", "-", $invoicenum).".pdf";    
                        if ($fd = fopen ($fullPath, "r")) {
                                $fsize = filesize($fullPath);
                                $path_parts = pathinfo($fullPath);
                                $ext = strtolower($path_parts["extension"]);
                                switch ($ext) {
                                        case "pdf":
                                        header("Content-type: application/pdf"); // add here more headers for diff. extensions
                                        header("Content-Disposition: attachment; filename=\"".str_replace("-", "/", $path_parts["basename"])."\""); // use 'attachment' to force a download
                                        break;
                                        default;
                                        header("Content-type: application/octet-stream");
                                        header("Content-Disposition: filename=\"".str_replace("-", "/", $path_parts["basename"])."\"");
                                }
                                header("Content-length: $fsize");
                                header("Cache-control: private"); //use this to open files directly
                                while(!feof($fd)) {
                                        $buffer = fread($fd, 2048);
                                        echo $buffer;
                                }
                        }
                        fclose ($fd);
                        exit;
                }
        }
        else {
                if(!file_exists("./../INVOICESDIRECTORY/".str_replace("/", "-", $invoicenum).".pdf")) {
                        $pdf->Output("./../INVOICESDIRECTORY/".str_replace("/", "-", $invoicenum).".pdf", "F");
                }
        }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 WHMCS 获取 pdf 发票? 的相关文章

  • 如何正确转义 CSV 中的双引号?

    我的 CSV 中有这样一行 Samsung U600 24 10000003409 1 10000003427 旁边引用24用于表示英寸 而该引号旁边的引号则关闭该字段 我正在读这行fgetcsv但解析器犯了一个错误 并将该值读取为 Sam
  • 重定向后丢失会话变量

    用户填写用户名和密码 如果正确 页面会加载一些信息 例如user id到会话变量 该脚本制作了一个header Location 重定向 不知何故 下一页无法识别会话 怎么会 重定向到同一个域 并且所有页面都有session start 我
  • 通过 XMLHttpRequest 将数据从 JavaScript 发送到 PHP

    再会 我正在尝试将一段简单的数据从一个 php 文件 manage php 发送到另一个 view php 我无法通过表单发送数据 我想通过 JS 脚本发送数据 这是我的尝试 var read function id xmlhttp new
  • 当存在联系时如何为数组分配排名号

    当尝试为数组中存在平局的数值分配排名时 我很难知道从哪里开始 因此 例如 我需要像下面这样转换一个数组 myarray 4 76 34 13 34 到另一个数组中 例如 myarray2 1 5 3 5 2 3 5 基本上 当相同的数字在数
  • 未捕获的 ValueError:mysqli_stmt::execute():参数 #1 ($params) 必须是列表数组

    我试图通过这两个查询在我的数据库中插入准备好的语句多个值 这两个查询都发生故障 返回 未捕获的错误 调用未定义的方法 mysqli stmt bindValue 对于第一个代码或 未捕获的 ValueError mysqli stmt ex
  • 基于 PHP 的 CSV 编辑器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道用 PHP 编写的在线 CSV 编辑器允许用户打开 编辑和保存给定的 CSV 文件 我能找到的只
  • 如何在Web服务中传递URL

    我想将此 URL 作为网址中的值传递http localhost h2orn php verify php email emails hash hash但是 我只能在 符号之前传递 我想传递所有 URL 我正在使用java网络服务 代码在这
  • 如何从 Laravel 5 中的 Public/Images 文件夹中删除图像(URL 数据)

    如何从 laravel 5 中的 public images 文件夹中删除图像文件 我从这个网站找到了一些例子 但我知道他们只是在他们的文件中使用文件名record table 但我正在使用类似的东西URL e g localhost pr
  • 如何在 PHP 中正确分割路径

    执行以下操作的最佳方法是什么 我通过 AJAX 请求获取路径 e g dir1 dir2 dir3 dir4 我需要在我的网页上这样展示它 dir1 gt gt dir2 gt gt dir3 gt gt dir4 它们每个都是 html
  • jQuery和PHP中如何知道返回数据是Json还是String?

    我想在客户端 jQuery 检查 PHP 函数返回的数据是否是 Json 对象或 String 来分配不同的函数 如果 json 的格式不正确 jQuery 的 parseJson 将生成异常 您可以将调用包装在 try catch 块中
  • 使用 PDO 在 SQLite 中检索单个(且唯一)行的最简单方法

    我有这个 PDO stmt db gt prepare SELECT FROM channels WHERE id id stmt gt bindValue id id SQLITE3 INTEGER result stmt gt exec
  • WAMP 不显示目录列表中的图标

    过去 我通过 vmware 处理 PHP 代码 但最近我决定转而通过 WAMP 在 Windows 8 1 上 在本地进行处理 我创建了一个空文件夹tests in the www folder 然后在我的浏览器上输入http localh
  • Yii2 DropDownList Onchange 更改自动完成小部件“源”属性?

    我已经尝试过这个 yii2 依赖的自动完成小部件 https stackoverflow com questions 27025791 yii2 dependent autocomplete widget 但我不知道为什么它不起作用 这是我
  • 使用 DOM 获取 div 的内容(包括子标签)

    我正在使用 DOM 来获取 div 标签的内容 但内部 html 部分未显示 功能是 dom new DOMDocument libxml use internal errors true dom gt loadHTMLFile url l
  • ZF2 工厂获取参数

    我有一个动态类别导航 在导航工厂中 我想从路线获取参数 我怎样才能做到这一点 在我看来 在我的 module php 中 public function getServiceConfig return array factories gt
  • 避免 SQLite3 中的 SQL 注入

    我正在尝试找出一种避免 SQL 注入的好简单方法 到目前为止我只能提出两个想法 对用户输入进行 Base64 编码 其实不想这样做 使用正则表达式删除不需要的字符 目前正在使用这个 不确定是否100 安全 这是我当前的代码
  • php,in_array,0值

    我试图理解in array下一个场景的行为 arr array 2 gt Bye 52 77 3 gt Hey var dump in array 0 arr 返回值in array 是布尔值true 正如你所看到的no值等于0 所以有人可
  • 从多个选择列表中插入数据到mysql数据库(html形式)

    我制作了一个表格 其中有商店的 ID
  • 转换MAC地址格式

    我刚刚编写了一个小脚本 从交换机中提取数百个 MAC 地址进行比较 但它们的格式为 0025 9073 3014 而不是标准的 00 25 90 73 30 14 我对如何转换它感到困惑 我能想到的最好的办法就是在 处将它们分解成碎片 然后
  • 如何显示不同页眉的页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在为我的学校项目开发网站 但我遇到了一个问题 我在每个页面上显示一个标题 我的标题之一包含登录表单 另一标题包含用户名 搜索栏等 问题是

随机推荐

  • 使用 PHP 创建矢量图形

    我正在尝试用 PHP 创建矢量图形 我试过开罗 但没能让它发挥作用 我知道 imageMagick 具有矢量功能 但 php net 上的文档非常差 有人可以引导我走向正确的方向吗 这个想法是能够将图形保存到 EPS 我还需要能够使用不同的
  • BOOST_FOREACH 和 c++11 基于范围的循环之间的区别?

    之间的主要区别是什么BOOST FOREACH和基于 C 11 范围的循环 有没有特定的情况我想使用BOOST FOREACH而不是基于范围的循环 或者反之亦然 执行了一些测试后std vector充满了1 000 000int变量我发现B
  • Assimp 和 D3D 模型加载:网格未在 D3D 中显示

    我想使用 Assimp 将模型加载到 D3D 中 我想更多地了解 Assimp 如何处理索引 因为我无法让它以我理解的形式与 obj 模型一起工作 例如 对于面为 int int int 的 obj 模型 当我迭代面数时 for unsig
  • WPF 中的数据绑定?

    我正在尝试在 WPF 中设置数据绑定 我有班级人员 它通过一个文本框进行更新 类似老式的 另一个文本框应该通过数据绑定镜像对人员对象的更改 它曾经是 type twoway 但抛出了xamlparse 异常 它不是这样工作的 点击显示 pe
  • Spring Boot - 在部署时启动后台线程的最佳方式

    我在 Tomcat 8 中部署了一个 Spring Boot 应用程序 当应用程序启动时 我想在后台启动一个工作线程 Spring Autowires 具有一些依赖项 目前我有这个 SpringBootApplication EnableA
  • Angular 2 insideHTML 忽略表单标签

    我正在为 Angular 2 构建一个模态 因为没有像 Angular 1 x 这样的原生模态 而且我取得了很好的进展 我创建了一个模态组件 可以显示和隐藏 并且有一个主体输入唯一不起作用的是 由于某种原因 表单元素被从渲染的 html 中
  • 是否应该在 git 中跟踪 .history 文件夹中的文件[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 每当我进行更改时 history 文件夹中的某些文件在我的状态中都会显示为未跟踪 我将如何控制它 即 make 是自动添加或不添加这些内容 而不
  • 无法获取长度

    我是 javascript 概念的新手 为什么我得到相同变量的不同输出length 当它在体内呈现出预期的效果时 var length element all by className className getText then func
  • 将定界转换为固定宽度的最佳方法

    转换此值的最佳方法是什么 FirstName LastName Title BirthDate HireDate City Region Nancy Davolio Sales Representative 1948 12 08 1992
  • scala/spark 代码不允许在 hive 中添加列

    如果源数据有新列 我尝试在 Hive 表中添加一列 所有新列的检测都运行良好 但是 当我尝试将列添加到目标表时 我收到此错误 for f lt df schema fields if f name chk spark sqlContext
  • 应用程序中两个不同版本的库

    考虑一个场景 其中有两个不同版本的共享库 考虑 A 1 so 链接到 B so A 2 so 链接到 C so 现在 B so 和 C so 都链接到 d exe 当 B so 想要调用 A 1 so 中的函数时 它最终会调用 A 2 so
  • PSQLException 没有被捕获

    我正在使用 Tomcat 6 和 Postgresql 8 4 我的代码如下所示 try Prepared statement inserting something catch final PSQLException e LOG log
  • Shadow DOM,使用它的目的

    我最近研究了 Shadow DOM 我想知道使用它而不是主要目的是什么 它能带来什么 为什么我们不使用标准 DOM 来代替它 样式范围除外 它允许您封装功能 有效地将其放入黑匣子中 这意味着您可以创建内部工作原理不公开的 可重用 组件 使用
  • 如何在Windows中收集每个服务名称及其状态?

    我想在不使用任何第三方工具的情况下获取所有 service name 及其状态 迄今为止SC http ss64 com nt sc html命令足以获取其中一个值 例如 sc query findstr SERVICE NAME 但我还需
  • Gradle 中的自定义依赖管理插件

    如何编写自定义 gradle 插件来处理自定义存储库中自定义模块描述符中的依赖项 gradle 文档说了以下内容 但我找不到任何可以告诉我的内容how 即使您的项目正在使用自定义依赖管理系统或 类似于 Eclipse classpath 文
  • 找不到类型或命名空间“Form1”

    我是 c 新手 在浏览了有关此主题的其他线程后 我仍然不知道如何修复 bug C 我正在尝试制作一个简单的计算器 这是其代码 Global Variables string sign double val1 double val2 int
  • 对于空列表,max() 应该返回什么?

    Got java util NoSuchElementException head of empty list所以我试着检查一下 但现在我明白了 info max of a few numbers FAILED info 0 did not
  • Play 2.4,错误:包play.*不存在

    我想开始使用 play 框架 2 4 4 并想遵循教程 我正在关注这个 YouTube 视频 https www youtube com watch v bLrmnjPQsZc从他们的网站 使用 play java 模板并将其导入 Inte
  • 如何更改 DrRacket 中 R6RS 的打印行为以像 #langracket 一样打印结果

    当我在 IDE 版本 5 3 5 2013 06 18 f 中运行程序时 对于 lang racket eg lang racket 4 5 10 2 When pressing Run gt the interaction window
  • 从 WHMCS 获取 pdf 发票?

    对于一个小型副项目 我必须创建一个通过 WHMCS 获取 PDF 的调用 我看到 API 可以获取变量 例如数量 发票项目等 但我想要与客户下订单时系统发送的 PDF 相同的 PDF 我有一个 PHP 应用程序 UPDATE 遵循下面的很棒