2017-03-20 32 views
1

簡短問題:使用get_invoices endpoint,當我嘗試從InvoiceFiles.pdfFileUrl響應中訪問URL時,它彈出api.zuora登錄表單。我需要我的客戶能夠訪問這些PDF。Zuora - 如何獲得發票PDF並向用戶顯示

enter image description here

如果我輸入我的Zuora的creds,它會顯示在發票,但當然我的客戶沒有Zuora的creds。

是否有某種設置允許客戶從URL中查看PDF?

長的問題:

get_invoices endpoint回報2項的利息。

body是發票PDF文件的REST URL。

InvoiceFiles返回發票PDF文件的

  1. 的ID。這是文件對象的ID,與pdfFileUrl字段中的文件句柄ID不同。要打開文件,您需要使用文件句柄ID。
  2. versionNumber發票PDF文件的版本號
  3. pdfFileUrl發票PDF文件的REST URL。點擊URL打開發票PDF文件。

bodyInvoiceFiles.pdfFileUrl返回的結果是否有差異,以及如何正確使用它們?

pdfFileUrl可以返回多個文件。每次發票更新(客戶付款等)它會生成另一個文件。最近的是在索引0.

但試圖訪問任何的URL,我得到一個api.zuora登錄表單。如果我輸入我的Zuora信用卡,它會顯示發票,但我的客戶當然沒有Zuora信用卡。

端點頁面上的示例同時將body和pdfFiles返回爲空,所以沒有多大幫助。

通過他們的社區搜索了一段時間,沒有找到任何與我的問題類似的任何東西。

回答

1

最好的做法是使用授權cookie。該cookie授權用戶在Zuora設置中管理>安全策略>會話超時中指定的時間內調用REST API。在每次調用REST API之後,Cookie持續時間會隨着此持續時間重置。

爲了得到一個cookie,調用REST連接資源:

curl -X POST \ 
-H "apiAccessKeyId: dummyUser" \ 
-H "apiSecretAccessKey: dummyPassword" \ 
-H "Content-Type: application/json" \ 
-d '{}' \ 
"https://rest.zuora.com/v1/connections" 

一旦連接建立,後續API調用將沒有在標題中apiSecretAccessKey和apiAccessKeyId工作。

請從他們的新API文檔中找到更多詳細信息。 https://www.zuora.com/developer/api-reference/

2

我們終於想出瞭如何做到這一點。必須完成服務器端。

第一步是調用「/ transactions/invoices/accounts/{accountId}」來獲取發票清單。

其次,從列表中選擇與我們試圖查看的發票編號相匹配的發票。

在該對象上有一個名爲「invoiceFiles」的列表 - 如果它非空,則抓住第一個項目。

使用「pdfFileUrl」屬性上該項目作爲URL從,但在GET請求獲取PDF,包括頭「apiAccessKeyId」和「apiSecretAccessKey」設置爲我們的應用API密鑰的值。這消除了認證問題,但也使得它必須在後端執行此操作,以避免暴露您的apiAccessKeyId和Secret。

假設爲進入我們的PDF請求被驗證,我們會在未來的Zuora的返回到我們目前正在處理我們的服務器上的傳出響應響應做一個管道命令:zuoraResponse.pipe(ourOutgoingResponseObj)

這將直接向用戶顯示PDF。