amattu2 / carfax-wrapper
一个CARFAX车辆历史报告助手类。提供向CARFAX VHR发送报告、解码车牌号到VIN、以及获取CARFAX存储的维修历史数据的功能。
Requires
- php: >=7.4.0
- ext-curl: *
- ext-simplexml: *
- ext-xml: *
README
这是一个CARFAX车辆历史报告、QuickVIN和维修历史检查集成工具包。它提供以下接口以实现以下结果:
- 报告DMS/SMS车辆维修票据历史记录
- 执行快速VIN搜索
- 执行搜索历史检查
通过专有API和集成流程实现。使用此基于PHP的工具包需要现有的CARFAX服务数据传输便利协议,并依赖于非公开订阅的API密钥。
使用方法
安装与设置
composer require amattu2/carfax-wrapper
require_once "vendor/autoload.php"; // see examples/..
注意:对于/examples中的示例,必须将config.ini.example重命名为
config.ini
,并使用您的CARFAX凭据进行更新。
FTP
这是一个向CARFAX VHR系统报告维修数据的助手类。它极大地简化了从专有DMS/SMS系统实施CARFAX车辆历史报告所需的开发人员负载。
构造函数
使用构造函数初始化类组件
$wrapper = new CARFAX\FTP();
/** * Class Constructor * * @param string $username CARFAX FTP username * @param string $password CARFAX FTP password * @param ?string $partner_name CARFAX Partner Name * @param ?string $type Data Report Type ("HIST" or "PROD") * @param ?DateTime $date Data Report Date * @throws None * @author Alec M. */ public function __construct(string $username, string $password, string $partner_name = "", string $type = "PROD", \DateTime $date = null);
write(array $data, $handle = null) : bool
将单个记录写入导出文件。请注意:此函数不验证字段值。它只写入提供的内容。您的类实现需要验证维修订单字段值。这仅确保字段存在于数组中。
$success = $wrapper->write([ /* See class HEADER_FIELDS for a list of fields that are REQUIRED */ ]);
writeAll(array $data) : int
将维修订单数组写入报告文件。这是对write()
方法的效率包装,并始终保持文件句柄。如果您能够一次性写入大量的维修订单,请使用此方法。请注意:此函数不验证字段值。它只写入提供的内容。您的类实现需要验证维修订单字段值。这仅确保字段存在于数组中。
$successes = $wrapper->writeAll( [ [ /* Repair order record */ ], [ /* Repair order record */ ], // ... ] );
upload() : bool
将生成的记录提交到CARFAX FTP端点。
$wrapper->upload();
cleanUp() : bool
这是一个完全可选的函数,将删除本地服务器上的维修订单文件。应该在将其上传到FTP服务器后调用此函数。
$isCleaned = $wrapper->cleanUp();
getTotalRecords() : int
这返回写入报告文件的维修订单总数。不包括标题行。
$numRecords = $wrapper->getTotalRecords();
getFilePath() : ?string
如果文件存在,则返回报告文件的完全限定路径。
getFileName() : ?string
如果存在,则返回报告文件的文件名。
ServiceHistory
这是一个用于通过车辆VIN从CARFAX获取维修历史数据的完全静态类。
setLocationId(string $locationId) : void
更新当前实例的Location ID。这是在账户设置时由CARFAX提供的。
CARFAX\ServiceHistory::setLocationId("exampleLOC");
setProductDataId(string $productDataId) : void
更新当前类实例的产品数据ID。它与API密钥相当,是在账户设置时由CARFAX定义的。
CARFAX\ServiceHistory::setProductDataId("exampleProductDataId");
get(string $VIN) : array
这是实际公开用于通过VIN号获取车辆历史的函数。如果没有设置locationId或productDataId,将会抛出错误。其他所有内容都安全,包括CARFAX API失败。该函数始终返回一个数组或抛出错误。
如果记录(概述或历史)没有有效的
- 里程表,它将等于
0
- 日期,它将等于
NULL
$data = CARFAX\ServiceHistory::get("1G1GCCBX3JX001788");
简化的示例响应
{ "Decode": { "VIN": "1G1GCCBX4JX001298", "Year": "2011", "Make": "CADILLAC", "Model": "LUXURY", "Trim": "", "Driveline": "" }, "Overview": [ { "Name": "Tire rotation", "Date": "12/24/2013", "Odometer": 42185 }, { "Name": "Emissions test", "Date": "04/20/2021", "Odometer": 127005 }, { "Name": "Battery Replacement", "Date": "11/21/2019", "Odometer": 112682 }, ], "Records": [ { "Date": "01/12/2011", "Odometer": 5, "Services": [ "Vehicle serviced", "Pre-delivery inspection completed", "Window tint installed", "Vehicle washed/detailed", "Tire condition and pressure checked", "Nitrogen fill tires", "Anti-theft/keyless device/alarm installed", "Safety inspection performed" ], "Type": "Service" }, { "Date": null, "Odometer": 92500, "Services": [ "Title issued or updated", "Registration issued or renewed", "Passed safety inspection", "Vehicle color noted as Brown" ], "Type": "Service" }, { "Date": "06/25/2021", "Odometer": 0, "Services": [ "Manufacturer Safety recall issued", "NHTSA #21V573", "Recall #N213240870", "Status: Remedy Available" ], "Type": "Recall" } ] }
注意:请参阅servicehistory-get.php中的示例。
QuickVIN
QuickVIN Plus类是CARFAX QuickVIN Plus解码API的包装器。它将车牌号加州转换成带有VIN解码的VIN号。这是一个静态类,不需要实例化。
setLocationId(string $locationId): void
更新当前实例的Location ID。这是在账户设置时由CARFAX提供的。
CARFAX\QuickVIN::setLocationId("exampleLOC");
setProductDataId(string $productDataId): void
更新当前类实例的产品数据ID。它与API密钥相当,是在账户设置时由CARFAX定义的。
CARFAX\QuickVIN::setProductDataId("exampleProductDataId");
decode(string $plate, string $state, ?string $VIN = null): ?SimpleXMLElement
执行车牌号加州到VIN解码。如果解码成功,将返回一个SimpleXMLElement对象。如果解码失败,将返回NULL
。
$xml = CARFAX\QuickVIN::decode("HELLO", "VA");
注意:请参阅quickvin-decode.php中的示例。
需求 & 依赖
- PHP 7.4+
- SimpleXML
- cURL