如何在PHP中创建QuickBook发票时为Class字段赋值?
解决QuickBooks发票Class字段赋值失败的问题
嘿,我一眼就看出问题所在啦——你直接把Class的ID字符串/数字传给setClassRef()方法是不对的!QuickBooks的IPP SDK要求你传入对应的Ref类型对象,而不是原始的ID值。
错误原因
setClassRef()方法接收的参数不是简单的字符串或数字,而是QuickBooks_IPP_Object_ClassRef类型的实例,直接传ID会导致SDK无法正确解析并映射到QuickBooks的API字段。
正确实现方式
你需要先创建ClassRef对象,给它设置对应的ID值,再把这个对象赋值给Invoice的ClassRef属性。完整代码如下:
$InvoiceService = new QuickBooks_IPP_Service_Invoice(); $Invoice = new QuickBooks_IPP_Object_Invoice(); // 1. 创建ClassRef对象 $classRef = new QuickBooks_IPP_Object_ClassRef(); // 2. 设置Class的ID值 $class_value = "3700000000000449312"; $classRef->setValue($class_value); // 3. 将ClassRef对象赋值给Invoice $Invoice->setClassRef($classRef);
额外注意事项
- 请确认你使用的
$class_value确实是QuickBooks账户中存在的Class ID,无效的ID会导致赋值失败; - 检查你的QuickBooks应用权限是否包含操作Class字段的权限,权限不足也可能导致设置不生效;
- 如果需要给ClassRef设置名称(可选),可以调用
$classRef->setName("你的Class名称"),不过QuickBooks主要靠ID来识别对应资源。
内容的提问来源于stack exchange,提问作者Ram Chander
相关产品推荐
相关产品推荐

