向手机号用户发票夹上传发票

向手机号对应的钉钉用户发票夹中上传发票。

调用流程

  1. 产品服务商在后端接入本接口。
  2. 用户填写开票申请后,产品服务商根据用户填写手机号调用本接口上传发票。

接口调用返回成功时,用户钱包助手收到推票提醒,同时发票夹中增加一条发票记录。

说明

该接口推送的发票有以下限制:

  • 发票的付款方税号在用户发票夹抬头列表中存在(企业抬头)或与用户实名认证的姓名一致(个人抬头)。
  • 发票含税金额不低于最低金额限制(10.00元)。

本接口是定向开放接口,功能和文档会继续完善。在使用过程中,如果遇到问题,请咨询和您线下对接的钉钉小二。

权限

要调用此API,需要以下权限之一。

应用类型

是否支持

权限

API Explorer调试

企业内部应用 暂不支持 通过手机号对个人发票夹的写权限 暂不支持
第三方企业应用 支持 通过手机号对个人发票夹的写权限 API Explorer
第三方个人应用 暂不支持 通过手机号对个人发票夹的写权限 暂不支持

请求方法

POST /v1.0/finance/invoices/mobiles/upload HTTP/1.1
Host:api.dingtalk.com
x-acs-dingtalk-access-token:String
Content-Type:application/json

{
  "invoices" : [ {
    "invoiceCode" : "String",
    "invoiceNo" : "String",
    "invoiceType" : "String",
    "invoiceDate" : "String",
    "payeeName" : "String",
    "payeeTaxNo" : "String",
    "payerName" : "String",
    "payerTaxNo" : "String",
    "invoiceAmount" : "String",
    "withoutTaxAmount" : "String",
    "taxAmount" : "String",
    "verifyCode" : "String",
    "pdfUrl" : "String",
    "logoUrl" : "String"
  } ],
  "mobileStateCode" : "String",
  "mobile" : "String"
}

Header参数

名称

类型

是否必填

描述

x-acs-dingtalk-access-token

String

调用该接口的访问凭证。

Body参数

名称

类型

是否必填

描述

invoices

Array

上传发票列表。列表元素中参数均为开票服务商提供。

invoiceCode

String

发票代码。

invoiceNo

String

发票号码。

invoiceType

String

发票类型:

  • PLAIN: 增值税电子普通发票
  • E_SPECIAL:增值税电子专用发票

invoiceDate

String

开票时间,格式为yyyy-MM-dd。

payeeName

String

收款方名称。

payeeTaxNo

String

收款方税号。

payerName

String

付款方名称。

payerTaxNo

String

付款方税号,当抬头为个人类型时,税号可为空。

invoiceAmount

String

发票总金额。

withoutTaxAmount

String

不含税金额。

taxAmount

String

税金额。

verifyCode

String

发票校验码,当发票类型为增值税电子普通发票时必填。

pdfUrl

String

发票pdf原件下载链接。

logoUrl

String

发票logo地址,用于发票夹展示。

mobileStateCode

String

手机号国家码。 例如:+86。

mobile

String

手机号。

返回参数

名称

类型

描述

result

Object

结果。

results

Array

每张发票的上传结果。

invoiceCode

String

发票代码。

invoiceNo

String

发票号码。

success

Boolean

是否成功。

reason

String

失败原因,success为false时不为空。

errCode

String

业务错误码,success为false时不为空。

示例

请求示例

POST /v1.0/finance/invoices/mobiles/upload HTTP/1.1
Host:api.dingtalk.com
x-acs-dingtalk-access-token:access-token
Content-Type:application/json

{
  "invoices" : [ {
    "invoiceCode" : "033002000712",
    "invoiceNo" : "20532643",
    "invoiceType" : "PLAIN",
    "invoiceDate" : "2022-02-21",
    "payeeName" : "小钉科技有限公司",
    "payeeTaxNo" : "91330100MA28XNB274",
    "payerName" : "小钉科技有限公司",
    "payerTaxNo" : "91330100MA28XNB274",
    "invoiceAmount" : "100.00",
    "withoutTaxAmount" : "99.50",
    "taxAmount" : "0.50",
    "verifyCode" : "52501101414266612380",
    "pdfUrl" : "https://gw.alicdn.com/file.pdf",
    "logoUrl" : "https://gw.alicdn.com/image.png"
  } ],
  "mobileStateCode" : "86",
  "mobile" : "13600000000"
}
// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;

import com.aliyun.tea.*;
import com.aliyun.teautil.*;
import com.aliyun.teautil.models.*;
import com.aliyun.dingtalkfinance_1_0.*;
import com.aliyun.dingtalkfinance_1_0.models.*;
import com.aliyun.teaopenapi.*;
import com.aliyun.teaopenapi.models.*;

public class Sample {

    /**
     * 使用 Token 初始化账号Client
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.dingtalkfinance_1_0.Client createClient() throws Exception {
        Config config = new Config();
        config.protocol = "https";
        config.regionId = "central";
        return new com.aliyun.dingtalkfinance_1_0.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.dingtalkfinance_1_0.Client client = Sample.createClient();
        UploadInvoiceByMobileHeaders uploadInvoiceByMobileHeaders = new UploadInvoiceByMobileHeaders();
        uploadInvoiceByMobileHeaders.xAcsDingtalkAccessToken = "<your access token>";
        UploadInvoiceByMobileRequest.UploadInvoiceByMobileRequestInvoices invoices0 = new UploadInvoiceByMobileRequest.UploadInvoiceByMobileRequestInvoices()
                .setInvoiceCode("033002000712")
                .setInvoiceNo("20532643")
                .setInvoiceType("PLAIN")
                .setInvoiceDate("2022-02-21")
                .setPayeeName("小钉科技有限公司")
                .setPayeeTaxNo("91330100MA28XNB274")
                .setPayerName("小钉科技有限公司")
                .setPayerTaxNo("91330100MA28XNB274")
                .setInvoiceAmount("100.00")
                .setWithoutTaxAmount("99.50")
                .setTaxAmount("0.50")
                .setVerifyCode("52501101414266612380")
                .setPdfUrl("https://gw.alicdn.com/file.pdf")
                .setLogoUrl("https://gw.alicdn.com/image.png");
        UploadInvoiceByMobileRequest uploadInvoiceByMobileRequest = new UploadInvoiceByMobileRequest()
                .setInvoices(java.util.Arrays.asList(
                    invoices0
                ))
                .setMobileStateCode("86")
                .setMobile("13600000000");
        try {
            client.uploadInvoiceByMobileWithOptions(uploadInvoiceByMobileRequest, uploadInvoiceByMobileHeaders, new RuntimeOptions());
        } catch (TeaException err) {
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err 中含有 code 和 message 属性,可帮助开发定位问题
            }

        } catch (Exception _err) {
            TeaException err = new TeaException(_err.getMessage(), _err);
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err 中含有 code 和 message 属性,可帮助开发定位问题
            }

        }        
    }
}
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys

from typing import List

from alibabacloud_dingtalk.finance_1_0.client import Client as dingtalkfinance_1_0Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dingtalk.finance_1_0 import models as dingtalkfinance__1__0_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> dingtalkfinance_1_0Client:
        """
        使用 Token 初始化账号Client
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config()
        config.protocol = 'https'
        config.region_id = 'central'
        return dingtalkfinance_1_0Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        upload_invoice_by_mobile_headers = dingtalkfinance__1__0_models.UploadInvoiceByMobileHeaders()
        upload_invoice_by_mobile_headers.x_acs_dingtalk_access_token = '<your access token>'
        invoices_0 = dingtalkfinance__1__0_models.UploadInvoiceByMobileRequestInvoices(
            invoice_code='033002000712',
            invoice_no='20532643',
            invoice_type='PLAIN',
            invoice_date='2022-02-21',
            payee_name='小钉科技有限公司',
            payee_tax_no='91330100MA28XNB274',
            payer_name='小钉科技有限公司',
            payer_tax_no='91330100MA28XNB274',
            invoice_amount='100.00',
            without_tax_amount='99.50',
            tax_amount='0.50',
            verify_code='52501101414266612380',
            pdf_url='https://gw.alicdn.com/file.pdf',
            logo_url='https://gw.alicdn.com/image.png'
        )
        upload_invoice_by_mobile_request = dingtalkfinance__1__0_models.UploadInvoiceByMobileRequest(
            invoices=[
                invoices_0
            ],
            mobile_state_code='86',
            mobile='13600000000'
        )
        try:
            client.upload_invoice_by_mobile_with_options(upload_invoice_by_mobile_request, upload_invoice_by_mobile_headers, util_models.RuntimeOptions())
        except Exception as err:
            if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
                # err 中含有 code 和 message 属性,可帮助开发定位问题
                pass

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        upload_invoice_by_mobile_headers = dingtalkfinance__1__0_models.UploadInvoiceByMobileHeaders()
        upload_invoice_by_mobile_headers.x_acs_dingtalk_access_token = '<your access token>'
        invoices_0 = dingtalkfinance__1__0_models.UploadInvoiceByMobileRequestInvoices(
            invoice_code='033002000712',
            invoice_no='20532643',
            invoice_type='PLAIN',
            invoice_date='2022-02-21',
            payee_name='小钉科技有限公司',
            payee_tax_no='91330100MA28XNB274',
            payer_name='小钉科技有限公司',
            payer_tax_no='91330100MA28XNB274',
            invoice_amount='100.00',
            without_tax_amount='99.50',
            tax_amount='0.50',
            verify_code='52501101414266612380',
            pdf_url='https://gw.alicdn.com/file.pdf',
            logo_url='https://gw.alicdn.com/image.png'
        )
        upload_invoice_by_mobile_request = dingtalkfinance__1__0_models.UploadInvoiceByMobileRequest(
            invoices=[
                invoices_0
            ],
            mobile_state_code='86',
            mobile='13600000000'
        )
        try:
            await client.upload_invoice_by_mobile_with_options_async(upload_invoice_by_mobile_request, upload_invoice_by_mobile_headers, util_models.RuntimeOptions())
        except Exception as err:
            if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
                # err 中含有 code 和 message 属性,可帮助开发定位问题
                pass


if __name__ == '__main__':
    Sample.main(sys.argv[1:])
<?php

// This file is auto-generated, don't edit it. Thanks.
namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Dingtalk\Vfinance_1_0\Dingtalk;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dingtalk\Vfinance_1_0\Models\UploadInvoiceByMobileHeaders;
use AlibabaCloud\SDK\Dingtalk\Vfinance_1_0\Models\UploadInvoiceByMobileRequest\invoices;
use AlibabaCloud\SDK\Dingtalk\Vfinance_1_0\Models\UploadInvoiceByMobileRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample {

    /**
     * 使用 Token 初始化账号Client
     * @return Dingtalk Client
     */
    public static function createClient(){
        $config = new Config([]);
        $config->protocol = "https";
        $config->regionId = "central";
        return new Dingtalk($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args){
        $client = self::createClient();
        $uploadInvoiceByMobileHeaders = new UploadInvoiceByMobileHeaders([]);
        $uploadInvoiceByMobileHeaders->xAcsDingtalkAccessToken = "<your access token>";
        $invoices0 = new invoices([
            "invoiceCode" => "033002000712",
            "invoiceNo" => "20532643",
            "invoiceType" => "PLAIN",
            "invoiceDate" => "2022-02-21",
            "payeeName" => "小钉科技有限公司",
            "payeeTaxNo" => "91330100MA28XNB274",
            "payerName" => "小钉科技有限公司",
            "payerTaxNo" => "91330100MA28XNB274",
            "invoiceAmount" => "100.00",
            "withoutTaxAmount" => "99.50",
            "taxAmount" => "0.50",
            "verifyCode" => "52501101414266612380",
            "pdfUrl" => "https://gw.alicdn.com/file.pdf",
            "logoUrl" => "https://gw.alicdn.com/image.png"
        ]);
        $uploadInvoiceByMobileRequest = new UploadInvoiceByMobileRequest([
            "invoices" => [
                $invoices0
            ],
            "mobileStateCode" => "86",
            "mobile" => "13600000000"
        ]);
        try {
            $client->uploadInvoiceByMobileWithOptions($uploadInvoiceByMobileRequest, $uploadInvoiceByMobileHeaders, new RuntimeOptions([]));
        }
        catch (Exception $err) {
            if (!($err instanceof TeaError)) {
                $err = new TeaError([], $err->getMessage(), $err->getCode(), $err);
            }
            if (!Utils::empty_($err->code) && !Utils::empty_($err->message)) {
                // err 中含有 code 和 message 属性,可帮助开发定位问题
            }
        }
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));
// This file is auto-generated, don't edit it. Thanks.
package main

import (
  "os"
  util  "github.com/alibabacloud-go/tea-utils/service"
  dingtalkfinance_1_0  "github.com/alibabacloud-go/dingtalk/finance_1_0"
  openapi  "github.com/alibabacloud-go/darabonba-openapi/client"
  "github.com/alibabacloud-go/tea/tea"
)


/**
 * 使用 Token 初始化账号Client
 * @return Client
 * @throws Exception
 */
func CreateClient () (_result *dingtalkfinance_1_0.Client, _err error) {
  config := &openapi.Config{}
  config.Protocol = tea.String("https")
  config.RegionId = tea.String("central")
  _result = &dingtalkfinance_1_0.Client{}
  _result, _err = dingtalkfinance_1_0.NewClient(config)
  return _result, _err
}

func _main (args []*string) (_err error) {
  client, _err := CreateClient()
  if _err != nil {
    return _err
  }

  uploadInvoiceByMobileHeaders := &dingtalkfinance_1_0.UploadInvoiceByMobileHeaders{}
  uploadInvoiceByMobileHeaders.XAcsDingtalkAccessToken = tea.String("<your access token>")
  invoices0 := &dingtalkfinance_1_0.UploadInvoiceByMobileRequestInvoices{
    InvoiceCode: tea.String("033002000712"),
    InvoiceNo: tea.String("20532643"),
    InvoiceType: tea.String("PLAIN"),
    InvoiceDate: tea.String("2022-02-21"),
    PayeeName: tea.String("小钉科技有限公司"),
    PayeeTaxNo: tea.String("91330100MA28XNB274"),
    PayerName: tea.String("小钉科技有限公司"),
    PayerTaxNo: tea.String("91330100MA28XNB274"),
    InvoiceAmount: tea.String("100.00"),
    WithoutTaxAmount: tea.String("99.50"),
    TaxAmount: tea.String("0.50"),
    VerifyCode: tea.String("52501101414266612380"),
    PdfUrl: tea.String("https://gw.alicdn.com/file.pdf"),
    LogoUrl: tea.String("https://gw.alicdn.com/image.png"),
  }
  uploadInvoiceByMobileRequest := &dingtalkfinance_1_0.UploadInvoiceByMobileRequest{
    Invoices: []*dingtalkfinance_1_0.UploadInvoiceByMobileRequestInvoices{invoices0},
    MobileStateCode: tea.String("86"),
    Mobile: tea.String("13600000000"),
  }
  tryErr := func()(_e error) {
    defer func() {
      if r := tea.Recover(recover()); r != nil {
        _e = r
      }
    }()
    _, _err = client.UploadInvoiceByMobileWithOptions(uploadInvoiceByMobileRequest, uploadInvoiceByMobileHeaders, &util.RuntimeOptions{})
    if _err != nil {
      return _err
    }

    return nil
  }()

  if tryErr != nil {
    var err = &tea.SDKError{}
    if _t, ok := tryErr.(*tea.SDKError); ok {
      err = _t
    } else {
      err.Message = tea.String(tryErr.Error())
    }
    if !tea.BoolValue(util.Empty(err.Code)) && !tea.BoolValue(util.Empty(err.Message)) {
      // err 中含有 code 和 message 属性,可帮助开发定位问题
    }

  }
  return _err
}


func main() {
  err := _main(tea.StringSlice(os.Args[1:]))
  if err != nil {
    panic(err)
  }
}
// This file is auto-generated, don't edit it
import Util, * as $Util from '@alicloud/tea-util';
import dingtalkfinance_1_0, * as $dingtalkfinance_1_0 from '@alicloud/dingtalk/finance_1_0';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import * as $tea from '@alicloud/tea-typescript';


export default class Client {

  /**
   * 使用 Token 初始化账号Client
   * @return Client
   * @throws Exception
   */
  static createClient(): dingtalkfinance_1_0 {
    let config = new $OpenApi.Config({ });
    config.protocol = "https";
    config.regionId = "central";
    return new dingtalkfinance_1_0(config);
  }

  static async main(args: string[]): Promise<void> {
    let client = Client.createClient();
    let uploadInvoiceByMobileHeaders = new $dingtalkfinance_1_0.UploadInvoiceByMobileHeaders({ });
    uploadInvoiceByMobileHeaders.xAcsDingtalkAccessToken = "<your access token>";
    let invoices0 = new $dingtalkfinance_1_0.UploadInvoiceByMobileRequestInvoices({
      invoiceCode: "033002000712",
      invoiceNo: "20532643",
      invoiceType: "PLAIN",
      invoiceDate: "2022-02-21",
      payeeName: "小钉科技有限公司",
      payeeTaxNo: "91330100MA28XNB274",
      payerName: "小钉科技有限公司",
      payerTaxNo: "91330100MA28XNB274",
      invoiceAmount: "100.00",
      withoutTaxAmount: "99.50",
      taxAmount: "0.50",
      verifyCode: "52501101414266612380",
      pdfUrl: "https://gw.alicdn.com/file.pdf",
      logoUrl: "https://gw.alicdn.com/image.png",
    });
    let uploadInvoiceByMobileRequest = new $dingtalkfinance_1_0.UploadInvoiceByMobileRequest({
      invoices: [
        invoices0
      ],
      mobileStateCode: "86",
      mobile: "13600000000",
    });
    try {
      await client.uploadInvoiceByMobileWithOptions(uploadInvoiceByMobileRequest, uploadInvoiceByMobileHeaders, new $Util.RuntimeOptions({ }));
    } catch (err) {
      if (!Util.empty(err.code) && !Util.empty(err.message)) {
        // err 中含有 code 和 message 属性,可帮助开发定位问题
      }

    }    
  }

}

Client.main(process.argv.slice(2));
// This file is auto-generated, don't edit it. Thanks.

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

using Tea;
using Tea.Utils;


namespace AlibabaCloud.SDK.Sample
{
    public class Sample 
    {

        /**
         * 使用 Token 初始化账号Client
         * @return Client
         * @throws Exception
         */
        public static AlibabaCloud.SDK.Dingtalkfinance_1_0.Client CreateClient()
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
            config.Protocol = "https";
            config.RegionId = "central";
            return new AlibabaCloud.SDK.Dingtalkfinance_1_0.Client(config);
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.SDK.Dingtalkfinance_1_0.Client client = CreateClient();
            AlibabaCloud.SDK.Dingtalkfinance_1_0.Models.UploadInvoiceByMobileHeaders uploadInvoiceByMobileHeaders = new AlibabaCloud.SDK.Dingtalkfinance_1_0.Models.UploadInvoiceByMobileHeaders();
            uploadInvoiceByMobileHeaders.XAcsDingtalkAccessToken = "<your access token>";
            AlibabaCloud.SDK.Dingtalkfinance_1_0.Models.UploadInvoiceByMobileRequest.UploadInvoiceByMobileRequestInvoices invoices0 = new AlibabaCloud.SDK.Dingtalkfinance_1_0.Models.UploadInvoiceByMobileRequest.UploadInvoiceByMobileRequestInvoices
            {
                InvoiceCode = "033002000712",
                InvoiceNo = "20532643",
                InvoiceType = "PLAIN",
                InvoiceDate = "2022-02-21",
                PayeeName = "小钉科技有限公司",
                PayeeTaxNo = "91330100MA28XNB274",
                PayerName = "小钉科技有限公司",
                PayerTaxNo = "91330100MA28XNB274",
                InvoiceAmount = "100.00",
                WithoutTaxAmount = "99.50",
                TaxAmount = "0.50",
                VerifyCode = "52501101414266612380",
                PdfUrl = "https://gw.alicdn.com/file.pdf",
                LogoUrl = "https://gw.alicdn.com/image.png",
            };
            AlibabaCloud.SDK.Dingtalkfinance_1_0.Models.UploadInvoiceByMobileRequest uploadInvoiceByMobileRequest = new AlibabaCloud.SDK.Dingtalkfinance_1_0.Models.UploadInvoiceByMobileRequest
            {
                Invoices = new List<AlibabaCloud.SDK.Dingtalkfinance_1_0.Models.UploadInvoiceByMobileRequest.UploadInvoiceByMobileRequestInvoices>
                {
                    invoices0
                },
                MobileStateCode = "86",
                Mobile = "13600000000",
            };
            try
            {
                client.UploadInvoiceByMobileWithOptions(uploadInvoiceByMobileRequest, uploadInvoiceByMobileHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
            }
            catch (TeaException err)
            {
                if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
                {
                    // err 中含有 code 和 message 属性,可帮助开发定位问题
                }
            }
            catch (Exception _err)
            {
                TeaException err = new TeaException(new Dictionary<string, object>
                {
                    { "message", _err.Message }
                });
                if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
                {
                    // err 中含有 code 和 message 属性,可帮助开发定位问题
                }
            }
        }


    }
}
// This file is auto-generated, don't edit it. Thanks.

#include <alibabacloud/dingtalkfinance__1__0.hpp>
#include <alibabacloud/open_api.hpp>
#include <boost/any.hpp>
#include <darabonba/core.hpp>
#include <darabonba/util.hpp>
#include <iostream>
#include <map>

using namespace std;

Alibabacloud_Dingtalkfinance_1_0::Client createClient() {
  shared_ptr<Alibabacloud_OpenApi::Config> config = make_shared<Alibabacloud_OpenApi::Config>();
  config->protocol = make_shared<string>("https");
  config->regionId = make_shared<string>("central");
  return Alibabacloud_Dingtalkfinance_1_0::Client(config);
}

int main(int argc, char *args[]) {
  args++;
  shared_ptr<Alibabacloud_Dingtalkfinance_1_0::Client> client = make_shared<Alibabacloud_Dingtalkfinance_1_0::Client>(createClient());
  shared_ptr<Alibabacloud_Dingtalkfinance_1_0::UploadInvoiceByMobileHeaders> uploadInvoiceByMobileHeaders = make_shared<Alibabacloud_Dingtalkfinance_1_0::UploadInvoiceByMobileHeaders>();
  uploadInvoiceByMobileHeaders->xAcsDingtalkAccessToken = make_shared<string>("<your access token>");
  shared_ptr<Alibabacloud_Dingtalkfinance_1_0::UploadInvoiceByMobileRequestInvoices> invoices0 = make_shared<Alibabacloud_Dingtalkfinance_1_0::UploadInvoiceByMobileRequestInvoices>(map<string, boost::any>({
    {"invoiceCode", boost::any(string("033002000712"))},
    {"invoiceNo", boost::any(string("20532643"))},
    {"invoiceType", boost::any(string("PLAIN"))},
    {"invoiceDate", boost::any(string("2022-02-21"))},
    {"payeeName", boost::any(string("小钉科技有限公司"))},
    {"payeeTaxNo", boost::any(string("91330100MA28XNB274"))},
    {"payerName", boost::any(string("小钉科技有限公司"))},
    {"payerTaxNo", boost::any(string("91330100MA28XNB274"))},
    {"invoiceAmount", boost::any(string("100.00"))},
    {"withoutTaxAmount", boost::any(string("99.50"))},
    {"taxAmount", boost::any(string("0.50"))},
    {"verifyCode", boost::any(string("52501101414266612380"))},
    {"pdfUrl", boost::any(string("https://gw.alicdn.com/file.pdf"))},
    {"logoUrl", boost::any(string("https://gw.alicdn.com/image.png"))}
  }));
  shared_ptr<Alibabacloud_Dingtalkfinance_1_0::UploadInvoiceByMobileRequest> uploadInvoiceByMobileRequest = make_shared<Alibabacloud_Dingtalkfinance_1_0::UploadInvoiceByMobileRequest>(map<string, boost::any>({
    {"invoices", boost::any(vector<Alibabacloud_Dingtalkfinance_1_0::UploadInvoiceByMobileRequestInvoices>({
      invoices0
    }))},
    {"mobileStateCode", boost::any(string("86"))},
    {"mobile", boost::any(string("13600000000"))}
  }));
  try {
    client->uploadInvoiceByMobileWithOptions(uploadInvoiceByMobileRequest, uploadInvoiceByMobileHeaders, make_shared<Darabonba_Util::RuntimeOptions>(Darabonba_Util::RuntimeOptions()));
  }
  catch (std::exception &err) {
    if (!Darabonba_Util::Client::empty(err.code) && !Darabonba_Util::Client::empty(err.message)) {
      // err 中含有 code 和 message 属性,可帮助开发定位问题
    }
  }
}

返回示例

HTTP/1.1 200 OK
Content-Type:application/json

{
  "result" : {
    "results" : [ {
      "invoiceCode" : "033002000712",
      "invoiceNo" : "20532643",
      "success" : true,
      "reason" : "",
      "errCode" : ""
    } ]
  }
}

错误码

HttpCode

错误码

错误信息

说明

400

invalid.mobileUserNotExist

mobile not exists

手机号对应用户不存在

400

duplicate.exist.expenseProcessing

invoice exists (expense processing)

发票已存在(报销中)

400

duplicate.exist.expenseFinish

invoice exists (expense finished)

发票已存在(已报销)

400

duplicate.exist.waitExpense

invoice exists (wait expense)

发票已存在(待报销)

400

duplicate.exist

invoice exists

发票已存在

400

invalid.titleNotMatch

title not match

发票抬头与用户抬头列表已有抬头不匹配

400

invalid.amountLimit

total amount limit

发票金额低于限制

400

invalid.param

%s

参数错误

500

unknow.error

unknow error

系统异常