You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xero API传递'unitdp'参数生成发票的正确性咨询

Xero API创建发票时unitdp参数传参问题分析
  • 你当前把unitdp=4作为URL查询参数传递的方式不正确。Xero API的unitdp参数仅针对GET请求(比如查询发票列表、获取单张发票详情)生效,作用是控制接口返回数据的小数位数;而创建发票的POST请求不会读取这个URL参数,所以你的设置不会生效。

  • 要实现发票上的数值保留4位小数,正确的做法是在构造POST请求的LineItems数据时,直接对数值做4位小数的格式化处理:

    // 示例:将原始数值格式化为4位小数
    $rawAmount = 54.54545454;
    $formattedAmount = number_format($rawAmount, 4, '.', '');
    // 把$formattedAmount赋值给LineItems里的UnitAmount等字段
    
  • 调整后的请求代码(移除无效的unitdp参数):

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => 'https://api.xero.com/api.xro/2.0/Invoices',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_POSTFIELDS =>'{ 
            "Invoices":[ 
                { 
                    "Type":"ACCREC", 
                    "Contact":{ 
                        "ContactID":"'.$session->CONTACT_ID.'" 
                    }, 
                    "LineItems":'.$lineItems.', 
                    "Date":"'.date("Y/m/d").'", 
                    "DueDate":"'.date("Y/m/d").'", 
                    "Status":"AUTHORISED", 
                    "Reference":"Stripe Payout" 
                } 
            ] 
        }',
        CURLOPT_HTTPHEADER => array(
            'Accept: application/json',
            'Content-Type: application/json',
            'Authorization: Bearer '.$session->XERO_ACCESS_TOKEN,
        ),
    ));
    

内容的提问来源于stack exchange,提问作者Romesh Fernando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 14:37:46