创建和上传发票
了解如何在注册和不注册 VCS 的情况下创建和上传发票。
注册 VCS 后,您可以通过两种方式创建和上传发票:
- 允许亚马逊 自动创建和上传您的发票。
- 使用 用于创建您自己的发票的亚马逊计税数据,然后使用 SP-API 手动上传它们。
如果您不想使用 VCS,您可以使用自己的税务数据创建发票,然后使用 SP-API 或通过卖家平台手动上传。有关如何使用此方法的说明,请参阅 手动上传发票。
提示
不要在发票上向卖家提供汇款信息,因为这会使买家感到困惑。亚马逊直接向买家收取款项,并将款项支付给卖家。
有关发票合规要求和发票更正的信息,请参阅 VCS 发票合规与更正。
允许亚马逊为您创建发票
此选项适用于注册增值税计算服务 (VCS) 并选择 I want Amazon to generate invoices on my behalf 选项访问亚马逊增值税计算报告。该报告包含有关 VCS 订单的有用信息,包括:发票编号、发票链接、买家增值税和发货/收货信息。订单将在发货三天后显示在此报告中。使用下表中的信息,使用销售合作伙伴 API (SP-API) 请求 VCS 报告。
API | 报告 API |
---|---|
Operation | createReport |
ReportType | SC_VAT_TAX_REPORT |
VCS 计划影响以下报告的内容:
订单报告
包括增值税金额
您要求的订单报告 之后 您注册的 VCS 如下所示:
ItemTax
(在 XML 报告中)和item_tax
(在平面文件报告中)。包含亚马逊计算的增值税金额。ItemPrice
(在 XML 报告中)和item_price
(在平面文件报告中)。包含含增值税的价格。
不含增值税的金额是商品价格减去商品税。
注意
当商品税为零时,将为交易收取 0% 的增值税。在几种情况下可能会发生这种情况。例子包括国际交易和B2B欧盟跨境交易。有关更多信息,请参阅 VCS 计算方法。
包括增值税详情
您可以选择在订单报告中包括与 VCS 相关的属性。
使用以下步骤在订单报告中包括与 VCS 相关的属性:
-
转到卖家平台中的添加或移除订单报告列。
-
添加 VAT details 专栏。
完成此过程后,以下列将添加到您的订单报告中: Item price VAT exclusive, Shipping price VAT exclusive,以及 Gift wrap price VAT exclusive。
亚马逊配送订单报告
您请求的 FBA 订单报告 之后 您注册的 VCS 如下所示:
ItemTax
(在 XML 报告中)和item_tax
(在平面文件报告中)。包含亚马逊计算的增值税金额。ItemPrice
(在 XML 报告中)和item_price
(在平面文件报告中)。包含不含增值税的金额(改为含增值税的金额)。
含增值税的金额是商品价格加上商品税。
使用亚马逊计税数据创建发票
你只能使用这个选项 使用销售合作伙伴 API (SP-API) 并且您必须使用亚马逊提供的税务数据来创建发票。
步骤 1. 从增值税发票数据报告 (VIDR) 中提取所有订单的计税数据。
VIDR 是一份包含交易级别税务计算详细信息的报告,只有注册了 VCS 的卖家才能使用。此报告包含为每个货件生成准确增值税发票所需的所有信息,无论是卖家配送还是亚马逊物流 (FBA)。订单在发货后立即出现在此报告中。
使用 createReport
使用 GET_FLAT_FILE_VAT_INVOICE_DATA_REPORT
要么 GET_XML_VAT_INVOICE_DATA_REPORT
报告类型 (reportType
)。
reportOptions
+ pendingInvoices
- all
。
-
pendingInvoices
:布尔值。当没有ReportOption
参数已指定,默认为ReportOption=PendingInvoices
。示例:"reportOptions": {"ReportOption=pendingInvoices": "true"}
- 什么时候
true
,该报告仅包含发票和信用票据待处理的货件。此报告不包含已成功上传发票的货件。这包括在过去 90 天内下达的订单的配送。 - 什么时候
false
(或者,如果 reportOptions 中未包含 PendingInvoices),则报告的内容取决于以下值all
。
这些报告包括订单日期在过去 90 天内的已发货订单的配送详情,这些订单的发票到期且必须上传(发票状态为的所有货件)
InvoicePending
要么CreditNotePending
)。具有此选项的报告不包括已成功上传发票的货件。此选项的目的是允许卖方循环浏览所有订单项目并创建发票,而不必应用自己的业务逻辑。 - 什么时候
-
all
:布尔值。默认为。示例:"reportOptions": {"ReportOption=All": "true"}
- 什么时候
true
,该报告包含在您指定的日期范围内下达的订单的配送情况。这包括所有可能的发票状态的货件。你必须指定startDate
和endDate
的参数createReport
操作。这个dataStartTime
和dataEndTime
值必须对应于指定日期的有效第一天和最后一天reportPeriod
。例如,什么时候reportPeriod=WEEK
,dataStartTime
必须是星期日而且dataEndTime
必须是星期六。允许的最大日期范围为 30 天。 - 什么时候
false
,或者如果all
不包含在reportOptions
,报告的内容取决于的价值pendingInvoices
。默认值为"pendingInvoices" : "true"
。
这些报告包括所有可能的出货量
InvoiceStatus
价值观。这包括:- 配送时附带
InvoiceStatus=InvoiceCreatedByAmazon
。亚马逊为该交易开具发票,因此卖家无需上传发票。 - 与... 的交易
InvoiceStatus=NoTaxCalculated
。亚马逊没有为这笔交易进行税收计算。例如,当商品从卖家未在卖家平台上提供有效增值税税号的国家/地区发货时,就会发生这种情况。
- 什么时候
你可以决定何时 安排这些报告。为了满足 24 小时的 SLA,您可以创建每 12 小时的时间表。这可确保货件发货后的最长延迟时间为 12 小时。
发货后,每批货物(不是每笔订单)都要开具发票。货件可能具有以下状态之一:
发票状态 | 描述 | Action required |
---|---|---|
InvoicePending | 已发货。 | 卖家必须上传货件的发票。 |
InvoiceProcessing | 卖家已上传发票,亚马逊正在处理发票。 | 此时卖家无需采取任何行动。亚马逊将处理发票。 |
InvoiceUploaded | 卖家已上传发票,亚马逊已完成处理。未检测到错误。 | 卖家无需采取任何行动。发票已成功上传,买家可在您的订单页面中查看。客户可以随时下载发票。 |
InvoiceRejected | 卖家已上传发票,亚马逊已完成处理。上传过程中检测到错误。 | 卖家必须再次上传此货件的发票。 |
CreditNotePending | 如果是退款,则款项已退还给买家。如果是退货,亚马逊运营中心已收到商品(亚马逊物流订单),或者卖家已授权(卖家自配送订单)。 | 这笔交易的贷记单现已到期。 |
CreditNoteProcessing | 卖家已上传发票,亚马逊正在处理发票。 | 此时卖家无需采取任何行动。亚马逊将处理贷记单。 |
CreditNoteUploaded | 卖家已上传贷记单,亚马逊已完成处理。未检测到错误。 | 卖家无需采取任何行动。贷记单已成功上传,买家可在您的订单页面中查看。 |
CreditNoteRejected | 卖家已上传贷记单,亚马逊已完成处理。上传过程中检测到错误。 | 卖家必须再次上传这笔交易的贷记单。 |
CreditNoteCreatedByAmazon | 亚马逊为这笔交易创建了信用票据。 | 卖家无需采取任何行动。 |
NoTaxCalculated | 亚马逊无法为这笔交易计算任何税款。这通常发生在卖家未上传发货国家/地区的增值税税号时。 | 亚马逊不会计算增值税,卖家必须上传这笔交易的发票。卖家可以在卖家平台或 SP-API 上传发票。 |
InvoiceCreatedByAmazon | 亚马逊为此交易开具了发票。 | 卖家无需采取任何行动。 |
VIDR 列
下表说明了每个 VIDR 列:
字段名 | 定义 | 示例 |
---|---|---|
order-id | 亚马逊的唯一订单编号。用于发货确认和下单后处理。 | 736-3563777-5518068 |
order-item-id | 亚马逊的唯一订单商品编码。用于发货确认和下单后处理。 | 583563777345 |
shipping-id | 此货件的配送编号。 | 409302382 |
fulfilled-by | 此订单的配送渠道。 | MFN or FBA |
order-date | 下单日期。 | 17/05/2018 |
marketplace-id | 下单商城。 | DE, FR, IT, ES |
recipient-name | 收件人姓名。 | Mary Major |
buyer-name | 买家姓名。 | Diego Ramirez |
ship-service-level | 配送服务等级由买家在订购商品时支付。例如,标准或加急。 | Standard |
ship-address-1 | 收货地址第一行。 | 123 Any Street |
ship-address-2 | 收货地址第二行。 | Apt. 12 |
ship-address-3 | 收货地址第三行。 | c/o Example Corp. |
ship-city | 收货地址城市。 | Any City |
ship-state | 收货地址州/省。 | Any State |
ship-postal-code | 收货地址邮政编码。 | SL1 1QP |
ship-country | 国际标准双字母国家/地区代码(符合 ISO 3166)。 | 德国 |
ship-phone-number | 配送地址电话号码。 | 999999999 |
shipment-date | 此货件发货日期。 | 20/05/2018 |
billing-name | 账单名称。 | Márcia Oliveira |
bill-address-1 | 账单地址第一行。 | 100 Main Street |
bill-address-2 | 账单地址第二行。 | Apt. 12 |
bill-address-3 | 账单地址第三行。 | c/o AnyCompany |
bill-city | 账单地址城市。 | Any City |
bill-state | 账单地址州/省。 | Any State |
bill-postal-code | 账单地址邮政编码。 | U7D 294 |
bill-country | 国际标准双字母国家/地区代码(符合 ISO 3166)。 | 德国 |
bill-phone-number | 账单地址电话号码。 | 44234343 |
ship-from-city | 发货地址城市。 | Any City |
ship-from-state | 发货地址州/省。 | Any State |
ship-from-country | 发货地址国家/地区。 | 德国 |
ship-from-postal-code | 发货地址邮政编码。 | 10178 |
sku | 库存单位。卖家为商品定义的唯一识别号。 | sku123 |
product-name | 商品名称。 | DJI CP.PT.03342 Spark - Battery Charging Hub |
quantity-purchased | 购买数量。 | 1 |
currency | 交易货币。 | EUR |
asin | 商品 ASIN。 | AY39345YE8K |
item-vat-incl-amount | 含增值税的商品价格。 | 120.00 |
item-vat-amount | 商品价格的增值税金额。 | 20.00 |
item-vat-excl-amount | 不含增值税的商品价格。 | 100.00 |
item-vat-rate | 商品价格的增值税税率。 | 0.20 |
gift-wrap-vat-incl-amount | 含增值税的礼品装总额。 | 12.00 |
gift-wrap-vat-amount | 礼品装增值税总额。 | 2.00 |
gift-wrap-vat-excl-amount | 不含增值税的礼品装总额。 | 10.00 |
gift-wrap-vat-rate | 礼品价格的总增值税税率。 | 0.20 |
shipping-vat-incl-amount | 含增值税的运费。 | 6.00 |
shipping-vat-amount | 运费的增值税金额。 | 1.00 |
shipping-vat-excl-amount | 不含增值税的运费。 | 5.00 |
shipping-vat-rate | 运费的增值税税率。 | 0.20 |
item-promo-vat-incl-amount | 含增值税的商品促销总额。 | -0.12 |
item-promo-vat-amount | 商品促销的增值税总额。 | -0.02 |
item-promo-vat-excl-amount | 不含增值税的商品促销总额。 | -0.10 |
item-promo-vat-rate | 商品促销的总增值税税率。 | 0.20 |
item-promotion-id | 商品促销的促销 ID。由亚马逊生成的字母数字值。 | 136643052:AKY54VWVKS3JCY6T |
shipping-promo-vat-incl-amount | 含增值税的运费促销总额。 | -0.12 |
shipping-promo-vat-amount | 运费促销的增值税总额。 | -0.02 |
shipping-promo-vat-excl-amount | 不含增值税的运费促销总额。 | -0.10 |
shipping-promo-vat-rate | 运费促销的总增值税税率。 | 0.20 |
shipping-promotion-id | 配送促销的促销 ID。由亚马逊生成的字母数字值。 | 3943834723:BWJRJERIUDKERU |
gift-promo-vat-incl-amount | 含增值税的礼品装促销总额。 | -0.20 |
gift-promo-vat-amount | 礼品装促销的增值税总额。 | -0.12 |
gift-promo-vat-excl-amount | 不含增值税的礼品装促销总额。 | -0.02 |
gift-promo-vat-rate | 礼品装促销的总增值税税率。 | 0.10 |
gift-promotion-id | 礼品装促销的促销编号。 | 385934052:BWJRJDJSDS3JCY6T |
transaction-id | 对于货件,这是配送编号。对于退货,这是一个与配送编号不同的唯一交易编号。 | 409302382(用于配送);amzn1:crow: a0f6kwafsv6ymalmhe4VJW(用于退货或退款) |
transaction-type | 交易的类型。 | 配送、退货或退款 |
is-amazon-invoiced | 指示亚马逊是否为该交易创建发票。如果卖家使用 VCS 并选择允许亚马逊创建发票,或 Amazon World Imports 从卖家处购买,则为 true。卖方不应为这些交易创建发票。亚马逊将生成发票并提供给卖家。 | TRUE 或 FALSE |
invoice-status | 发票的状态。 | 请参阅 第 1 步 了解有关发票状态的详细信息。 |
invoice-status-description | 发票状态的描述。 | 请参阅 第 1 步 了解有关发票状态的详细信息。 |
is-business-order | 这是来自 Amazon Business 网站还是 B2C 网站的订单? | TRUE 或 FALSE |
purchase-order-number | 采购订单编号(如果由买家提供)。 | AB45-234934 (can be any string) |
seller-vat-number | 计算增值税时使用的卖家增值税税号。 | DE111111111 |
buyer-vat-number | 计算增值税时使用的买家增值税税号。 | DE22222222,或者如果买家在亚马逊上没有增值税税号,则为空。 |
buyer-company-name | 买家的公司名称。 | 任何公司 |
price-designation | 指示这是企业商品价格还是标准价格。 | Business Price or Standard Price |
invoice-number | 卖家提供的发票号码。如果是 PendingInvoices 视图,该列为空白,因为发票尚未上传。如果是 All 视图,该列将包含卖家上传的发票号码。 | XXXX |
legacy-customer-order-item-id | 此订单商品编号与亚马逊配送报告和卖家自配送报告中显示的编号相同。如果您想将 VIDR 中的单个行项目与亚马逊配送或卖家自配送报告进行匹配,则可以使用此列。 | 82840304120340 |
buyer-tax-registration-type | 买家的税务类型(如果买家有税务登记号) | 增值税、BusinessReg、citizenID。在西班牙和意大利商城中,企业可以拥有商业登记号 (BusinessReg),个人可以拥有纳税身份证 (citizenID)。 |
is-buyer-physically-present | 如果客户实际居住在提供税号的国家/地区,则为真 buyer-vat-number 专栏。 | TRUE 或 FALSE |
is-seller-physically-present | 如果卖家在提供增值税税号的国家/地区设有办事处,则为真 seller-vat-number 专栏。 | TRUE 或 FALSE |
buyer-e-invoice-account-id | 客户的电子发票账户 ID。如果客户提供了电子发票账户 ID(如有需要,可用于将发票发送至 Sistema di Interscambio (SdI)),则会填写此信息。此列是为 2019 年生效的意大利电子发票法特别添加的,以便卖家可以将发票上传到 SdI。 | XXXXXXXX |
recommended-invoice-format | 向税务机关提交的推荐发票格式。如果值为 PDF,则必须将 PDF 发票格式上传到亚马逊,并使用与真实发票副本相同的 PDF。如果推荐格式为XML,则亚马逊已确定该客户是IT领域的B2B客户,并且卖家实际上是在IT部门建立的,因此,根据意大利电子发票法,卖家必须在Sistema di Interscambio(SDi)中上传XML发票。SDi 上提供的 XML 发票被视为发票的真实副本。但是,您还必须向亚马逊上传 PDF 发票。PDF 必须包含额外的文本或水印,以表明它是重复的发票。客户可以从 SDi 检索原始发票。请注意,无论此列中的值是多少,卖家都必须始终使用发票上传输入数据类型向亚马逊上传 PDF 发票。 | PDF 或 XML。 |
Citation-en | 此列提供英文引文文本。 | 我们建议卖家使用发票上提供的引文文本。卖家可以根据发票上的语言自由选择他们想要用于引文的语言。 |
Citation-de | 此列提供德语引文文本。 | 我们建议卖家使用发票上提供的引文文本。卖家可以根据发票上的语言自由选择他们想要用于引文的语言。 |
Citation-es | 此列提供西班牙语引文文本。 | 我们建议卖家使用发票上提供的引文文本。卖家可以根据发票上的语言自由选择他们想要用于引文的语言。 |
Citation-fr | 此列提供法语引文文本。 | 我们建议卖家使用发票上提供的引文文本。卖家可以根据发票上的语言自由选择他们想要用于引文的语言。 |
Citation-it | 此列提供意大利语引文文本。 | 我们建议卖家使用发票上提供的引文文本。卖家可以根据发票上的语言自由选择他们想要用于引文的语言。 |
Is-invoice-corrected | 指示此交易是否涉及先前已更正的发票。如果此交易是对先前交易的更正,则为 true。 | TRUE 或 FALSE |
original-vat-invoice-number | 需要更正发票的原始货件的发票编号。 | 原始发票号码。 |
invoice-correction-details | 发票修改详情,描述对发票的更改。只适用于发票修改交易。 | 修改原始增值税发票上的账单地址后,将开具新发票;或者开具信用票据以修改原始增值税发票上的账单地址。 |
第 2 步。根据 VIDR 报告中的数据创建自己的发票
下载 VIDR 报告,并利用其中的信息开具增值税发票。
第 3 步。使用 Feeds API 向亚马逊上传发票
调用 createFeed
操作以验证 UPLOAD_VAT_INVOICE
和 feedType
。
提示
要获取您所在国家/地区的商城 ID,请参阅 商城 ID。
对于 feedOptions
,您必须在 PDF 发票上以 key: value 对的形式指定元数据。要么 OrderId
要么 ShippingId
上传发票时为必填项 (ShippingId
是首选)。
OrderId
:提交发票的订单的标识符。ShippingId
:提交发票的货件的识别码。
如果你包括 OrderId
和 ShippingId
,亚马逊会忽略订单编号并上传带有配送编号的发票。如果两者均未提供,则可能会出现错误。有关错误的帮助,请参阅 错误处理。
以下 feedOptions
是 规定的:
TotalAmount
。发票上的总金额。这是商品、礼品包装和运费的含增值税价格,减去所有促销的增值税。如果指定的总金额与亚马逊本次配送的总金额不符(小数点后两位),则发票上传将被拒绝。我们建议严格遵循VIDR中提供的税收计算方法。TotalVATAmount
。发票上的增值税总额。这是商品、礼品包装和运费的增值税,减去所有促销的增值税。如果增值税金额与亚马逊为此次配送计算的增值税金额不匹配(小数点后两位),则发票上传将被拒绝。我们建议严格遵循VIDR中提供的税收计算方法。InvoiceNumber
。发票上使用的发票编号。该发票号码与客户共享。卖家必须确保发票上显示相同的发票号码。
以下 feedOptions
是 可选的:
-
DocumentType
。可能的值:Invoice
。如果您要上传发票,请使用此选项。CreditNote
。如果您要上传退款或退货的信用票据,请使用此选项。
默认值为Invoice
。
-
TransactionId
现在是DocumentType=CreditNote
的一个值。
小心
不要在键或值周围添加引号。亚马逊仅接受以下字符:逗号 (
,
)、向前斜线 (/
)、反斜杠 (\
)、空格 ()、短划线 (-
)、下划线 (_
)、分号 (;
)、冒号 (:
)、哈希 (#
)、0-9、A-Z、a-z。亚马逊削减了额外空间。
发票上传数据的限制限制 (UPLOAD_VAT_INVOICE
) 是每三秒钟上传一张发票。
示例
发票上传:
{"OrderID":"206-2341234-3455465", "InvoiceNumber":"INT-3431-XJE3", "DocumentType":"Invoice"}
信用票据 (CN-123-ABC
是信用票据号码):
{"OrderID":"206-2341234-3455465", "InvoiceNumber":"CN-123-ABC", "DocumentType":"CreditNote"}
用于创建 Feed 选项的 Java 代码:
Map<String, String> feedOptions = new HashMap<>(); // building parameter map
feedOptions.put("metadata:OrderId", "XXX-XXXXXXX-XXXXXXX");
feedOptions.put("metadata:TotalAmount", String.format(TOTALAMMOUNT));
feedOptions.put("metadata:TotalVATAmount", String.format(TOTALVATAMMOUNT));
feedOptions.put("metadata:InvoiceNumber", INVOICE_NUMBER);
String options = feedOptions.entrySet().stream()
.map(e -> String.format("%s=%s", e.getKey(), e.getValue()))
.collect(Collectors.joining(";"));
File pdfD = new File("<PATH TO PDF>");
byte[] pdfDocument = FileUtils.readFileToByteArray(pdfD); // read pdf document to byte array
String contentMD5 = Base64.encodeBase64String(pdfDocument); // building hash code
InputStream contentStream = new ByteArrayInputStream(pdfDocument); // inputstream of
SubmitFeedResponse response = submitFeed(contentStream, contentMD5, "_UPLOAD_VAT_INVOICE_", options, ContentType.OctetStream);
public SubmitFeedResponse submitFeed(InputStream, String contentMD5, String feedType, String feedOptions, ContentType contentType)
{
SubmitFeedRequest request = new SubmitFeedRequest();
request.setContentMD5(contentMD5);
request.setFeedContent(inputStream);
request.setFeedOptions(feedOptions);
request.setFeedType(feedType);
request.setMarketplaceIdList(new IdList(Arrays.asList(getMarketPlaces());
request.setMerchant(configuration.getAmazon().getSellerId());
request.setMWSAuthToken(configuration.getAmazon().getMwsAuthToken());
request.setContentType(contentType);
return getMarketplaceWebServiceClient().submitFeed(request);
}
手动上传发票
所有选择的卖家 不 要注册 VCS,可以默认选择使用 API 或卖家平台将自己的发票上传到亚马逊。本节介绍如何使用 API。
要手动上传发票,您必须使用自己的税务数据来创建发票。你会的 不 有权获取 VIDR 报告。
调用 createFeed
操作以验证 UPLOAD_VAT_INVOICE
和 feedType
。
提示
要获取您所在国家/地区的商城 ID,请参阅 商城 ID。
对于 feedOptions
,您必须在 PDF 发票上以 key: value 对的形式指定元数据。要么 OrderId
要么 ShippingId
上传发票时为必填项 (ShippingId
是首选)。
OrderId
:提交发票的订单的标识符。ShippingId
:提交发票的货件的识别码。
如果你包括 OrderId
和 ShippingId
,亚马逊会忽略订单编号并上传带有配送编号的发票。如果两者均未提供,则可能会出现错误。有关错误的帮助,请参阅 错误处理。
以下 feedOptions
是 规定的:
InvoiceNumber
。发票上使用的发票编号。该发票号码与客户共享。卖家必须确保发票上显示相同的发票号码。DocumentType
。可能的值:Invoice
。如果您要上传发票,请使用此选项。CreditNote
。如果您要上传退款或退货的信用票据,请使用此选项。
默认值为Invoice
。
提示
通过手动上传,您可以根据同一个订单编号上传多张发票。但是,发票编号必须是唯一的。只有最新的发票才被视为有效。
以下 feedOptions
是 可选的:
TotalAmount
。发票上的总金额。这是商品、礼品包装和运费的含增值税价格,减去所有促销的增值税。如果指定的总金额与亚马逊本次配送的总金额不符(小数点后两位),则发票上传将被拒绝。我们建议严格遵循VIDR中提供的税收计算方法。TotalVATAmount
。发票上的增值税总额。这是商品、礼品包装和运费的增值税,减去所有促销的增值税。如果增值税金额与亚马逊为此次配送计算的增值税金额不匹配(小数点后两位),则发票上传将被拒绝。我们建议严格遵循VIDR中提供的税收计算方法。TransactionId
现在是DocumentType=CreditNote
的一个值。
小心
不要在键或值周围添加引号。亚马逊仅接受以下字符:逗号 (
,
)、向前斜线 (/
)、反斜杠 (\
)、空格 ()、短划线 (-
)、下划线 (_
)、分号 (;
)、冒号 (:
)、哈希 (#
)、0-9、A-Z、a-z。亚马逊削减了额外空间。
发票上传数据的限制限制 (UPLOAD_VAT_INVOICE
) 是每三秒钟上传一张发票。
示例
发票上传:
{"OrderID":"206-2341234-3455465", "InvoiceNumber":"INT-3431-XJE3", "DocumentType":"Invoice"}
信用票据 (CN-123-ABC
是信用票据号码):
{"OrderID":"206-2341234-3455465", "InvoiceNumber":"CN-123-ABC", "DocumentType":"CreditNote"}
您可以使用下面的示例代码来附加 PDF 文件。虽然本示例使用的是 Java,但您也可以将其作为其他编程语言的范例。
Map<String, String> feedOptions = new HashMap<>(); // building parameter map
feedOptions.put("metadata:OrderId", "XXX-XXXXXXX-XXXXXXX");
feedOptions.put("metadata:TotalAmount", String.format(TOTALAMMOUNT));
feedOptions.put("metadata:TotalVATAmount", String.format(TOTALVATAMMOUNT));
feedOptions.put("metadata:InvoiceNumber", INVOICE_NUMBER);
String options = feedOptions.entrySet().stream()
.map(e -\> String.format("%s=%s", e.getKey(), e.getValue()))
.collect(Collectors.joining(";"));
File pdfD = new File("\<PATH TO PDF\>");
byte\[\] pdfDocument = FileUtils.readFileToByteArray(pdfD); // read pdf document to byte array
String contentMD5 = Base64.encodeBase64String(pdfDocument); // building hash code
InputStream contentStream = new ByteArrayInputStream(pdfDocument); // inputstream of
SubmitFeedResponse response = submitFeed(contentStream, contentMD5, "\_UPLOAD_VAT_INVOICE\_", options, ContentType.OctetStream);
public SubmitFeedResponse submitFeed(InputStream, String contentMD5, String feedType, String feedOptions, ContentType contentType)
{
SubmitFeedRequest request = new SubmitFeedRequest();
request.setContentMD5(contentMD5);
request.setFeedContent(inputStream);
request.setFeedOptions(feedOptions);
request.setFeedType(feedType);
request.setMarketplaceIdList(new IdList(Arrays.asList(getMarketPlaces());
request.setMerchant(configuration.getAmazon().getSellerId());
request.setMWSAuthToken(configuration.getAmazon().getMwsAuthToken());
request.setContentType(contentType);
return getMarketplaceWebServiceClient().submitFeed(request);
}
Updated 28 days ago