diff options
Diffstat (limited to 'files/zh-tw/archive/mozilla/marketplace')
39 files changed, 6534 insertions, 0 deletions
diff --git a/files/zh-tw/archive/mozilla/marketplace/apis/index.html b/files/zh-tw/archive/mozilla/marketplace/apis/index.html new file mode 100644 index 0000000000..ead011ed63 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/apis/index.html @@ -0,0 +1,36 @@ +--- +title: 公用程式函式庫與 API +slug: Archive/Mozilla/Marketplace/APIs +translation_of: Archive/Mozilla/Marketplace/APIs +--- +<div class="summary"> +<p><span class="seoSummary">如果要將 Firefox Marketplace 的功能寫進 App 與 Web 頁面之中,就必須透過 Marketplace Utility Libraries、Web API、Marketplace API。本文將說明上述方式、使用時機,並提供進一步的說明文件連結。</span></p> +</div> + +<h2 id="Marketplace_Utility_Library">Marketplace Utility Library</h2> + +<p>Marketplace Utility Library 可讓開發者避開複雜的 Web API 與 Marketplace API,進而簡化每天的程式撰寫作業。目前雖然只有 1 組函式庫,但隨著 Marketplace 功能不斷擴充,將會陸續提供其他函式庫:</p> + +<ul> + <li><code><a href="https://github.com/mozilla/receiptverifier">receiptverifier</a></code> — 此函式庫可驗證付款收據。可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Monetization/Validating_a_receipt">驗證收據</a>》以了解使用方式。</li> +</ul> + +<h2 id="Web_API">Web API</h2> + +<p>Marketplace App 必須透過 Web API 才能提供特定功能:</p> + +<ul> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay">navigator.mozPay</a></code> 及其相關的<a class="external external-icon" href="https://wiki.mozilla.org/WebAPI/WebPaymentProvider"> Web Payment Provider</a> — 此 API 即用以處理 App 內的付款機制 (In-app payments)。同樣可參閱《<a href="/en-US/Marketplace/Monetization/In-app_payments">In-app payments</a>》以了解使用方式。</li> +</ul> + +<h2 id="Marketplace_API">Marketplace API</h2> + +<p>針對大多數的一般 App 撰寫需要,其實並用不到 Marketplace API。但某些 Activities (如<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Publishing/Creating_a_store">設立自己的 App 商店</a>) 就需要此 API。但根據開發者自己的需求,也許 Marketplace Utility Library 還是比較好用。</p> + +<p>Marketplace API 的相關說明文件,均已置於 readthedocs.org 的<a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/overview.html">這個網址上</a>。如果你需要進一步了解這些 API,亦可加入 <a href="https://lists.mozilla.org/listinfo/dev-marketplace">dev-marketplace</a> 郵件群組。</p> + +<div class="note"> +<p>Marketplace API 說明文件,均記錄了正在開發中的 Marketplace API。所以內含的 API 細節尚未公開於 Marketplace 之上。</p> +</div> + +<p> </p> diff --git a/files/zh-tw/archive/mozilla/marketplace/faq/index.html b/files/zh-tw/archive/mozilla/marketplace/faq/index.html new file mode 100644 index 0000000000..ba8aa7493a --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/faq/index.html @@ -0,0 +1,154 @@ +--- +title: Firefox Marketplace 常見問題 +slug: Archive/Mozilla/Marketplace/FAQ +translation_of: Archive/Mozilla/Marketplace/FAQ +--- +<div class="summary"> +<p>本篇文章將解答 <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 多個常見的發佈問題。</p> +</div> + +<h2 id="帳戶管理">帳戶管理</h2> + +<h3 id="我該如何變更開發者帳戶的資訊?">我該如何變更開發者帳戶的資訊?</h3> + +<p>進入 Firefox Marketplace 並登入自己的帳戶,將滑鼠游標置於齒輪圖示 (即設定選單) 之上,點選「Edit Account Settings」即可。</p> + +<h3 id="我該如何變更開發者付款的資訊?">我該如何變更開發者付款的資訊?</h3> + +<p>進入 Firefox Marketplace 並登入自己的帳戶,將滑鼠游標置於齒輪圖示 (即設定選單) 之上。點選「My Apps」之後,找到你想變更付款資訊的 App,再點擊「Set Up Payments」即可。</p> + +<h3 id="我該到哪找到自己的銷售報表與對帳資訊?">我該到哪找到自己的銷售報表與對帳資訊?</h3> + +<p>進入 Firefox Marketplace 並登入自己的帳戶,將滑鼠游標置於齒輪圖示 (即設定選單) 之上。點選「My Apps」之後,找到你需要相關資料的 App 即可。</p> + +<h3 id="如果我們是多人組成的開發團隊或公司,該如何管理帳戶資訊?">如果我們是多人組成的開發團隊或公司,該如何管理帳戶資訊?</h3> + +<p>進入 Firefox Marketplace 並登入自己的帳戶,將滑鼠游標置於齒輪圖示 (即設定選單) 之上。點選「My Apps」之後,找到你想變更團隊細節的 App 即可。</p> + +<h3 id="我該如何重新命名_App?">我該如何重新命名 App?</h3> + +<p>如果你想在 Marketplace 審查之後變更 App 的名稱,就必須再次提交 App 通過審查才行。請參閱<a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Updating_apps">更新 App</a> 以進一步了解。</p> + +<h3 id="我該如何進入_Firefox_Marketplace_除錯設定?">我該如何進入 Firefox Marketplace 除錯設定?</h3> + +<p>登入之後進入 Firefox Marketplace,在搜尋列中輸入「:debug」。</p> + +<p>接著你就會看到自己 Marketplace 帳戶的除錯畫面。你可在此畫面中清除 Marketplace 網站、提交記錄、檢視設定、活動記錄等等相關的 cookies<code> 與 localStorage。</code></p> + +<h3 id="如果我把_App_提交到自己目前所在地以外的地方,我該如何檢視這些_App?">如果我把 App 提交到自己目前所在地以外的地方,我該如何檢視這些 App?</h3> + +<p>如果你自己目前所在之處或擁有手機 SIM 卡的地區,和你 App 發佈地區並不相同,則可透過下列步驟檢視該 App:</p> + +<ol> + <li>進入 Firefox Marketplace 除錯設定 (可參閱上一題)。</li> + <li>透過「Region Override」與「Carrier Override」選項,選出自己的所在地區或營運商 (只要選完就會立刻更新這些設定)。</li> + <li>重新整理/載入 Marketplace。</li> +</ol> + +<p>你可以先試著為 App 隨便選個分類,確認系統更新過了相關設定。</p> + +<h2 id="App_提交與審查程序">App 提交與審查程序</h2> + +<h3 id="我該如何提交新的_App?">我該如何提交新的 App?</h3> + +<p>可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup/Publishing/Submitting_an_app">將 App 提交至 Firefox Marketplace</a>》中的詳細步驟。</p> + +<h3 id="App_核准程序為何?">App 核准程序為何?</h3> + +<p>請參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Submission/Marketplace_review_criteria">Marketplace 審查準則</a>》以了解審查程序的相關準則。</p> + +<h3 id="是否有快速審查程序?所採用的準則是否不同?">是否有快速審查程序?所採用的準則是否不同?</h3> + +<p>如果開發者正好有絕佳的商機需求,或必須儘快釋出重要修復檔案,即可申請快速審查 App。若需 Marketplace 進行快速審查,可寄發電子郵件到 <a href="https://groups.google.com/forum/#%21forum/mozilla.appreview" title="appreview@lists.mozilla.org">mozilla.appreview</a>,或加入 <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a> 中的「#app-reviewers」IRC 頻道。我們會儘快完成快速審查,但不保證審查人員能配合任何特定時間。</p> + +<div class="note"> +<p><strong>注意:</strong>對 App 審查團隊來說,「App 快速審查」也算是額外的工作之一。若你有興趣協助我們的審查作業,歡迎透過 <a href="https://docs.google.com/spreadsheet/viewform?formkey=dEdVWVhWUzdIZ1hWTzRvdkJiLXF5dHc6MQ">Firefox App 審查者申請表</a>申請。</p> +</div> + +<h3 id="我的_App_需要遵守內容政策嗎?">我的 App 需要遵守內容政策嗎?</h3> + +<p>當然!請參閱<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Submission/Marketplace_review_criteria#.E5.85.A7.E5.AE.B9">《Marketplace 審查準則》中的〈內容〉一章</a>,了解 Mozilla 的內容政策。</p> + +<h3 id="如果_App_遭退回或移除,我該如何上訴?">如果 App 遭退回或移除,我該如何上訴?</h3> + +<p>如果想為遭退回的 App 上訴,則可直接回覆 App 退回通知的電子郵件 (所有 Marketplace 通知郵件的末端,均告知開發者可直接回覆該電子郵件以提出問題);或可透過 <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a> 上的「#app-reviewers」IRC 頻道向我們溝通。</p> + +<h2 id="付款">付款</h2> + +<h3 id="Firefox_Marketplace_如何運作付款作業?">Firefox Marketplace 如何運作付款作業?</h3> + +<p>Mozilla 提供多種付款方式,包含付費 App、免費增值 (Freemium) App、App 內部付費機制 (In-app payments)。若需進一步資訊,可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Marketplace_Payments">Marketplace Payments guide</a>》。</p> + +<h3 id="開發者收益的拆帳方式為何?">開發者收益的拆帳方式為何?</h3> + +<p>開發者將收到預扣增值稅 (Value Added Tax,VAT) 與費用之後金額的 70%。我們先假設美金訂價 $.99 (Tier 10),歐元訂價則為 €.89;而增值稅率為 20% (根據英國標準增值稅率) 為例,則預扣增值稅之後的價格為 €.74,亦約為 $.99 (有時匯兌之後的價格點數可能變高,有時也會變低)。開發者最後將收到 €.74 的七成金額。</p> + +<p>若需價格點數與訂價的相關資訊,可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Monetization/App_pricing">制定 App 的價格</a>》。</p> + +<h3 id="Mozilla_也會拆得一部分的帳嗎?">Mozilla 也會拆得一部分的帳嗎?</h3> + +<p>會。為了維持 Firefox Marketplace 的運作、持續強化 App 平台、支付每次購買行為所產生的交易費用。Mozilla 將收取預扣增值稅後金額的三成,再拆分給 Mozilla、行動網路營運商、付款服務供應商 (如 Bango) 共三方收取。</p> + +<h3 id="我一定要使用_Firefox_Marketplace_的付款系統嗎?">我一定要使用 Firefox Marketplace 的付款系統嗎?</h3> + +<p>若要讓消費者從 Firefox Marketplace 下載付費 App,就必須使用 Firefox Marketplace 付款系統。我們不會要求 In-app payments 也同樣使用 Marketplace 付款系統,但目前 Firefox OS 中僅建構了 <a href="https://developer.mozilla.org/en-US/docs/Web/API/navigator.mozPay" title="The mozPay function is used to perform payments. It enables an app to use in-app payments."><code>navigator.mozPay()</code></a> 函式 (用於 In-app payments),而該函式就採用 Firefox Marketplace 付款系統。我們以後會讓開發者針對 In-app payments 選用任何付款系統。</p> + +<h3 id="將自己的_App_放上_Firefox_Marketplace_後的交易費用?">將自己的 App 放上 Firefox Marketplace 後的交易費用?</h3> + +<p>需支付預扣稅額訂價的 30%。換句話說,因為 Marketplace 提供的含稅價格點數已經納入了增值稅 (針對需課增值稅的地區),所以在完成交易之後隨即扣除增值稅,讓開發者取得訂價金額的 70%。</p> + +<h3 id="我需要自行設定銷售稅或增值稅率嗎?">我需要自行設定銷售稅或增值稅率嗎?</h3> + +<p>不用。針對需課稅的地區,Marketplace 的價格點數均已包含了增值稅。而銷售稅的部分,均另由付款服務供應商列入帳單之中。</p> + +<h3 id="我該如何分開付款?">我該如何分開付款?</h3> + +<p>Firefox Marketplace 目前尚未提供分開付款的功能。</p> + +<h3 id="我能提交免費_App_嗎?會向我收費嗎?">我能提交免費 App 嗎?會向我收費嗎?</h3> + +<p>當然。歡迎開發者在 Firefox Marketplace 中提交免費 App,且 Mozilla 不會對免費 App 收取任何費用。</p> + +<h3 id="付費_App_還能搭配_In-app_payments_嗎?">付費 App 還能搭配 In-app payments 嗎?</h3> + +<p>可以。</p> + +<h3 id="退款程序為何?">退款程序為何?</h3> + +<p>根據付款方式的不同,退款程序可能由電信營運商、信用卡公司,或付款服務供應商 (如 Bango) 進行。若消費者選用電信帳單代繳的方式,則依照電信營運商的退款政策處理。目前尚無營運商提供退款服務。Bango 則是針對信用卡提供前端支援服務。任何退款均將從開發者的收益之中扣除。</p> + +<p>服務條款與<a href="https://developer.mozilla.org/en-US/Marketplace/Submission/Submitting_an_app#Step_1.3A_Agreement">開發者協議</a>均提供了退款政策。一般來說,Marketplace 不會支付退款,但會要求 Bango 進行退款程序。若消費者選用電信帳單代繳的方式,就必須要求電信營運商退款並修正電信帳單。</p> + +<h3 id="如何處理詐騙的購買行為?">如何處理詐騙的購買行為?</h3> + +<p>尚待完善討論。</p> + +<h3 id="Marketplace_如何處理多樣的幣別?">Marketplace 如何處理多樣的幣別?</h3> + +<p>根據消費者所選的所在地區,即顯示該地區的預設幣別。另針對付款作業,若消費者目前身處於原本設定的地區之外,就會根據他們收取帳單的地區 (即 SIM 卡所在地),或根據其所在位置收款。如此可避免詐欺行為。</p> + +<h3 id="付款時程為何?開發者多久能收到銷售_App_的應得款項?">付款時程為何?開發者多久能收到銷售 App 的應得款項?</h3> + +<p>根據付款服務供應商而有所不同;而目前仍由 Bango 負責所有地區的付款作業。開發者可直接與 Bango 洽詢,且每個月均會收到自行對帳用的發票。因為行動服務營運商必須向消費者收取並匯出相關款項,所以支付日期也各有差異。各個國家又會有所不同。而消費者如果採用信用卡付款,都能讓開發者迅速收取款項。若選用電信帳單代繳方式,可能需時 30 ~ 90 天不等。</p> + +<h3 id="開發者應如何處理退款?">開發者應如何處理退款?</h3> + +<p>請參閱《<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Marketplace_Payments">Marketplace payments</a>》中的〈<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Marketplace_Payments#Refunds">Refunds</a>〉一章。</p> + +<h3 id="Firefox_Marketplace_可進行臨時銷售或變更訂價嗎?">Firefox Marketplace 可進行臨時銷售或變更訂價嗎?</h3> + +<p>我們正規劃價格點數的變更功能,讓開發者能針對「試用期」或「正式銷售」而設定不同的價格。</p> + +<h3 id="開發者能銷售_Firefox_的附加元件_(add-ons)_嗎?">開發者能銷售 Firefox 的附加元件 (add-ons) 嗎?</h3> + +<p>目前 Firefox Marketplace 僅供銷售 App。我們希望很快就能提供其他內容的銷售服務。</p> + +<h2 id="技術問題">技術問題</h2> + +<h3 id="誰將可托管_App?">誰將可托管 App?</h3> + +<p>開發者可在自己的伺服器上托管 App 的所有檔案。但將 App 提交到 Firefox Marketplace 之後,就必須提供 App 的 manifest 檔案網址,以利 Marketplace 進行讀取並檢驗。開發者另可上傳圖示、截圖等元素,以能順利在 Firefox Marketplace 推銷自己的 App。可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup/Publishing/Submitting_an_app">將 App 提交至 Firefox Marketplace</a>》進一步了解。</p> + +<h3 id="如何從_App_直接啟動_Marketplace?">如何從 App 直接啟動 Marketplace?</h3> + +<p>開發者可透過 <a href="https://developer.mozilla.org/en-US/docs/WebAPI/Web_Activities">Web Activities</a>,從自己的 App 或網站啟動 Marketplace。而 Marketplace 所支援的 activities 均<a href="https://github.com/mozilla/fireplace/wiki/Web-Activities">記錄於 Github 之上</a>。</p> diff --git a/files/zh-tw/archive/mozilla/marketplace/index.html b/files/zh-tw/archive/mozilla/marketplace/index.html new file mode 100644 index 0000000000..5ce3b790b0 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/index.html @@ -0,0 +1,159 @@ +--- +title: Firefox Marketplace +slug: Archive/Mozilla/Marketplace +tags: + - Apps + - B2G + - Firefox OS + - Marketplace + - Mobile + - NeedsTranslation + - TopicStub +translation_of: Archive/Mozilla/Marketplace +--- +<div class="summary">Firefox Marketplace 為開放且非專利的線上商城,針對以 HTML5 所撰寫的 Web App 所建構。若開發者準備在 Firefox Marketplace 上發佈 App,均可於此專區中找到相關資訊。另有其他指南可帶領你成功打造 App、提供其他選項、將自己的心血轉為實質收益、發佈\更新 App,更有函式庫與 API 可確實發揮 Marketplace 的特色。</div> + +<div class="row topicpage-table"> +<div class="section"> +<p class="Community">透過標準的 Web 技術、語言、工具,<a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 可供你發佈免費\付費的 <a href="https://developer.mozilla.org/en-US/Apps">Open Web App</a>。這些可為封裝式 (Packaged) App,於 Firefox 中執行;或可為托管\架設式 (Hosted) App,置於你自己的伺服器之上。已上架的 App 則可用於 Firefox 桌機版、Android 裝置、Firefox OS 手機。而使用者可透過 App 的精選、分類、搜尋等區塊,輕鬆找到自己喜愛的 App。接著就能立刻安裝免費 App,或透過目前持續成長中的信用卡付款\電信帳單代收的功能,購買付費 App。</p> + +<div class="row topicpage-table"> +<div class="section"> +<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare">準備發佈 App</a></h2> + +<dl> + <dd>不論你撰寫 App 是純粹好玩或想創造收益,你都會希望有許多人發現、使用、享受你的作品。本章節將解釋該如何拓展能見度,並建立消費者社群。</dd> +</dl> + +<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Options">App 發佈選項</a></h2> + +<dl> + <dd>到底要用封裝式或托管\架設式 App?了解應如何發表自己 App 的內容。且除了 Firefox OS 之外,亦可讓 App 躍上 Android 裝置與桌上型電腦。</dd> + <dt><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Creating_a_store">建立自己的 App 商城</a></dt> + <dd>你不一定要透過 Firefox Marketplace 發佈自己的 App。了解應如何建立自己的 App 商城,或為其他開發者的 App 建立商城。</dd> +</dl> + +<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Profiting_from_your_app">轉為實質收益</a></h2> + +<dl> + <dd>如果你負責撰寫 App,則可透過本章節了解 Open Web App 與 Firefox Marketplace 所提供的收益選項。另亦提供 App 內付款 (In-app payments) 的詳細資訊。</dd> +</dl> +</div> + +<div class="section"> +<h2 class="Community" id="Community" name="Community"><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Introduction">發佈 App</a></h2> + +<dl> + <dd>快向世界發佈你的 App。了解應如何讓 Firefox Marketplace 發佈 App,包含 App 提交程序、審查程序、更新程序、了解上架後的效益,並觀看消費者的反應意見。</dd> +</dl> + +<h2 class="Tools" id="Tools" name="Tools">App 開發工具</h2> + +<dl> + <dt><a href="https://developer.mozilla.org/en-US/Marketplace/APIs">Firefox Marketplace 函式庫與 API</a></dt> + <dd>概略了解目前可用的函式庫與 API,為自己在 Marketplace 上的 App 添增功能。</dd> + <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">Firefox OS 的「應用程式管理員 (App Manager)」</a></dt> + <dd>從桌上型電腦為 Open Web App 測試、佈署、除錯的主要工具。</dd> + <dt><a href="https://developer.mozilla.org/en-US/Apps/Tools_and_frameworks/App_developer_tools">App 開發工具</a></dt> + <dd>完整工具清單,可供你有效率的開發 Open Web App 並樂在其中。</dd> +</dl> +</div> +</div> +</div> +</div> + +<h2 id="Subnav">Subnav</h2> + +<ol> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare">準備發佈 App</a> + + <ol> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Introduction">介紹</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Deciding_what_to_build">決定所要撰寫的東西</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare_For_Success/Getting_to_know_your_users">了解目標消費者</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Choosing_your_business_model">選擇自己的營運模式</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare_For_Success/Quality_and_your_app">撰寫高品質 App</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Localizing_your_apps">當地語系的 App</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Promoting_your_app">推銷自己的 App</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Creating_your_community">建立自己的群組</a></li> + </ol> + </li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options">發佈選項</a> + <ol> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Introduction">介紹</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Packaged_apps">封裝式 (Packaged) App</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Hosted_apps">托管\架設式 (Hosted) App</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Packaged_or_hosted_">要封裝抑或托管?</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_android">適合 Android 的 Open Web App</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_desktop">適合桌上型電腦的 Open Web App</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">自行發佈 App</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Options/Creating_a_store">建立自己的商城</a></li> + </ol> + </li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization">產生實質收益</a> + <ol> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Introduction_Monetization">介紹</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Profiting_from_your_app" title="This guide contains introductory materials on how to monetize your apps, including tools needed, and a monetization calculator.">用自己的 App 創造收益</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/App_payments_guide">App 付款指南</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments_section/Introduction_In-app_Payments" title="A guide to implementing support for in-app payments in your Web app.">應用程式內付款 (In-app payments)</a> + <ol> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments_section/Introduction_In-app_Payments">介紹</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments_section/mozPay_iap">透過 mozPay</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments_section/fxPay_iap">透過 fxPay</a></li> + </ol> + </li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/validating_a_receipt" title="A guide to when—and how—to validate your app's purchase receipt.">驗證收據</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/App_pricing" title="A round up of fixed price points you can choose for your paid apps, and how these vary across different currencies, along with useful supporting information on dealing with app payments.">App 定價表</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Payments_Status" title="An at-a-glance summary of what countries have got our app payment services set up in them — where paid apps can be distributed">付款服務狀態</a></li> + </ol> + </li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing">App 發佈概述</a> + <ol> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Introduction">介紹</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submission_checklist">提交作業檢查清單</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Marketplace_review_criteria" title="An explanation of the criteria an app must meet in order to be published on the Firefox Marketplace">Marketplace 審查準則</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Adding_a_subdomain" title="For security reasons, each app must have its own domain (or subdomain) on the Web. This article covers how to go about creating a subdomain for your app.">為 App 添增子網域</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines">策略與指南</a> + <ol> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Introduction">介紹</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Marketplace_screenshot_criteria" title="Some guidelines on how to create an effective screenshot for marketplace submission">Marketplace 截圖準則</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies" title="Your users' privacy is very important, so you need to develop and adhere to a reasonable privacy policy to engender their trust. This article provides a guide to developing privacy policies.">隱私權政策</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting">App 測試與疑難排解</a></li> + </ol> + </li> + </ol> + </li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit">提交 App</a> + <ol> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Overview">概述</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Sign-in_to_your_developer_account" title="This step-by-step guide will help you successfully submit your app to the Firefox Marketplace.">Step 1:登入</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Load_your_app">Step 2:上傳</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Enter_your_apps_details">Step 3:列出細節</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Next_steps">Step 4:後續步驟</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Rating_Your_Content">Step 5:App 評分</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing">Step 6:制定 App 的價格</a> + <ol> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/Introduction">介紹</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/Payment_Accounts">付款帳戶</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/Providers/Bango">Bango</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/Providers/Boku">Boku</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/Promote_as_upgrade_to_free_version">用「升級」的方式推廣</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Pricing/In-app_products">fxPay 的 App 產品</a></li> + </ol> + </li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Define_your_team">Step 7:定義團隊成員</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/View_your_listing">Step 8:檢視列表</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Edit_other_localizations">Step 9:編輯其他本地化的內容</a></li> + </ol> + </li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps">管理並更新已發佈的 App</a> + <ol> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps/Introduction_Managing_your_apps">介紹</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps/Status___Versions">App 的狀態</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Updating_apps" title="Information about how both hosted and packaged app updates are handled, and what you need to do to ensure that your app properly supports updating.">更新 App</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Managing_your_apps/App_Statistics">App 狀態</a></li> + </ol> + </li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/APIs">函式庫與 API</a></li> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/FAQ">Firefox Marketplace 常見問題</a></li> +</ol> diff --git a/files/zh-tw/archive/mozilla/marketplace/marketplace_apis/index.html b/files/zh-tw/archive/mozilla/marketplace/marketplace_apis/index.html new file mode 100644 index 0000000000..372284a029 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/marketplace_apis/index.html @@ -0,0 +1,69 @@ +--- +title: Firefox Marketplace API +slug: Archive/Mozilla/Marketplace/Marketplace_APIs +translation_of: Archive/Mozilla/Marketplace/Marketplace_APIs +--- +<div class="summary"> + <p><span class="seoSummary">提供 Firefox Marketplace API 的主要參考文章,可協助你進行 App 提交作業、設定 App 的付款帳戶,及其他更多相關重要步驟。</span></p> +</div> +<div class="row topicpage-table"> + <div class="section"> + <dl> + <dt> + <a href="/en-US/docs/Web/Apps/Publishing/Marketplace_utility_library">Marketplace 公用程式函式庫</a></dt> + <dd> + 可協助你順利進行 Firefox Marketplace 的相關作業。你可將內含的 JavaScript 函式庫用於自己的 App 之內,以輕鬆處理應用程式內付款 (In-app payments) 並驗證付款收據。</dd> + <dt> + <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/submission.html" title="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/submission.html">Submission API</a></dt> + <dd> + Submission API 可讓你檢驗並更新 App,並在安裝之前提取 App 的可用資訊。</dd> + <dt> + <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/payment.html" title="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/payment.html">Payment API</a></dt> + <dd> + Payment API 可讓你取得 In-app payments 的資訊,以及不同國家的訂價情形。</dd> + <dt> + <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/overview.html" title="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/overview.html">其他 Marketplace API</a></dt> + <dd> + Firefox Marketplace API 的完整說明文件。</dd> + </dl> + </div> + <div class="section"> + <h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5> +<ul> + <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li> + <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li> + <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li> +</ul> +<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5> +<div class="twocolumns"> + <ul> + <li><a href="/en-US/docs/Web/CSS">CSS</a></li> + <li><a href="/en-US/docs/DOM">DOM</a></li> + <li><a href="/en-US/docs/Web/HTML">HTML</a></li> + <li><a href="/en-US/docs/JavaScript">JavaScript</a></li> + <li><a href="/en-US/docs/WebAPI">WebAPI</a></li> + <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li> + <li><a href="/en-US/docs/SVG">SVG</a></li> + <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li> + <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li> + </ul> +</div> +<h5 class="Community" id="Community" name="Community">Getting help from the community</h5> +<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p> +<ul> + <li>Consult the webapps forum: <ul> + <li><a href="https://lists.mozilla.org/listinfo/dev-webapps"> 郵件討論</a></li> + + + <li><a href="http://groups.google.com/group/mozilla.dev.webapps"> 新聞群組</a></li> + <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds"> feed 消息來源</a></li> +</ul> + <ul> + <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li> + </ul> + </li> +</ul> +<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p> + </div> +</div> +<p> </p> diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/app_payments_guide/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/app_payments_guide/index.html new file mode 100644 index 0000000000..a1f464f224 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/monetization/app_payments_guide/index.html @@ -0,0 +1,48 @@ +--- +title: 建構付費 App +slug: Archive/Mozilla/Marketplace/Monetization/App_payments_guide +translation_of: Archive/Marketplace/Monetization/App_payments_guide +--- +<div class="summary"> + <p style="margin: 0px 0px 1.286em; padding: 0px; line-height: 1.5em;">Firefox Marketplace 的消費者有兩種需要付款的情形:<br> + 1). 購買 App 需付款 (付費 App)<br> + 2). 在安裝 App 之後另外購買某樣東西需付款;即 App 內付款機制 (In-app payment)<br> + 本文即提供付費 App 所需的程式碼與作業流程,另外將有另一篇文章說明 <a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments">In-app payments</a>。</p> +</div> +<h2 id="選擇封裝方式_(Packaged_或_Hosted)"><strong>選擇封裝方式</strong> (Packaged <strong>或</strong> Hosted)</h2> +<p>在了解付款方式之前,先決定自己的 App 應該是封裝式 (Packaged),或架設/托管式 (Hosted)。如果想處理為封裝式 App,就必須遵守內容安全政策 (Content Security Policy,CSP)。可參閱下列說明以進一步了解。</p> +<ul> + <li><a href="https://developer.mozilla.org/zh-TW/Apps/Developing/Packaged_apps/Packaged_apps">封裝式 App</a>:了解封裝式與架設/托管式 App 之間的不同。其中也初步說明封裝式 App 所需的內容安全政策。</li> + <li><a href="https://wiki.mozilla.org/Apps/Security#Default_CSP_policy">內容安全政策 (CSP)</a>:解釋 CSP 之含意。</li> +</ul> +<h2 id="建構付費_App"><strong>建構付費 A</strong>pp</h2> +<div> + <p>任何 App 都能設定為付費 App,也都能是封裝式或架設/托管式 App;完全不需特別的權限。在將 App 提交到 Firefox Marketplace 時,只要勾選使其成為付費 App 即可。但開發者需讓 App 驗證自己的銷售收據,才能確認收到帳款。接下來就是應進行的步驟。</p> + <h3 id="將_installs_allowed_from_添增到_manifest.webapp"><strong>將</strong> installs_allowed_from <strong>添增到</strong> manifest.webapp</h3> + <p>首先必須將 <code>installs_allowed_from</code> 欄位添增到 <a href="/en-US/Apps/Developing/Manifest">App 的 manifest 檔案</a>中。另給予如下的 Firefox Marketplace 網址:</p> + <pre class="brush: js">"installs_allowed_from": [ "https://marketplace.firefox.com" ]</pre> + <p>這個步驟屬於收據驗證作業的一部分,才能讓系統確認 App 來自於收款的商店。</p> +</div> +<h3 id="驗證收據">驗證收據</h3> +<p>只要從 Marketplace 售出 App 之後,隨即會產生該筆銷售的數位收據。開發者應該為自己的 App 植入程式碼,讓 App 執行時能一併驗證銷售收據。我們強烈建議,但不強制驗證收據。此查核作業可避免消費者安裝了 App 卻未付費。</p> +<p>Mozilla 另負責維護 JavaScript 輔助函式庫 (Helper),即所謂的 <a href="https://github.com/mozilla/receiptverifier" title="https://github.com/mozilla/receiptverifier">receiptverifier</a>,只要少量程式碼即可驗證收據。只要將下列 <code>receiptverifier</code> 函式庫加入 App 即可:</p> +<ul> + <li><a href="https://github.com/mozilla/receiptverifier/blob/master/receiptverifier.js" style="line-height: 1.572;">receiptverifier.js</a></li> + <li><a href="https://github.com/mozilla/receiptverifier/blob/master/receiptverifier-ui.js">receiptverifier-ui.js</a></li> +</ul> +<p>再將下列程式碼加入 App (更改內文以符合自己的 App),即可驗證收據:</p> +<pre class="brush: js" style="font-size: 14px;">mozmarket.receipts.Prompter({ + storeURL: "https://marketplace.firefox.com/app/your-app", + supportHTML: '<a href="mailto:you@yourapp.com">email you@yourapp.com</a>', + verify: true +});</pre> +<p>正常只要啟動 App 就會開始驗證收據。如果確認收據有效,即可釋放 App 的資源;反之可停止 App 執行。</p> +<div class="note"> + <p><strong>注意:</strong>若要進一步建立自己的收據驗證器,可參閱<a href="/en-US/Marketplace/Monetization/Validating_a_receipt">驗證收據</a>。</p> +</div> +<h2 id="另可參閱">另可參閱</h2> +<ul> + <li><a href="https://hacks.mozilla.org/2013/02/building-a-paid-app-for-firefox-os" title="https://hacks.mozilla.org/2013/02/building-a-paid-app-for-firefox-os">建構 Firefox OS 的付費 App</a>:內有更多付費 App 相關資訊的連結。</li> + <li><a href="https://github.com/mozilla/receiptverifier" title="https://github.com/mozilla/receiptverifier">receiptverifier</a> 函式庫:使用上述函式庫的說明文件與範例。</li> + <li><a href="https://wiki.mozilla.org/Apps/WebApplicationReceipt" title="https://wiki.mozilla.org/Apps/WebApplicationReceipt">Web App 收據</a>:數位收據的詳細說明資訊。</li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/app_pricing/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/app_pricing/index.html new file mode 100644 index 0000000000..4d7c3fbc32 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/monetization/app_pricing/index.html @@ -0,0 +1,3698 @@ +--- +title: 制定 App 的價格 +slug: Archive/Mozilla/Marketplace/Monetization/App_pricing +translation_of: Archive/Marketplace/Monetization/App_pricing +--- +<div class="summary"> +<p>本文將為開發者說明在 Firefox Marketplace 中制定 App 價格與收款的方法。因為開發者可能在 Firefox Marketplace 中跨國制定不同的價格,所以定價方式有點複雜。本文即提供相關資訊,如訂價、拆帳、課稅、付款方式、應收帳款、防止詐騙等等。</p> +</div> + +<h2 id="以「價格點數」定價"><strong>以「價格點數」定價</strong></h2> + +<p>在 Firefox Marketplace 中,開發者必須透過固定的「價格點數 (Price point)」完成定價。開發者可選擇任一價格點數,而該價格點數隨即套用為各地區通用貨幣的等值定價。針對開發者所選定 App 或應用程式內部付費 (In-app Payments) 的販售地區,當地消費者就能透過系統得知 App 的定價。價格點數範圍從 US$0.10 (點數 1) 到 US$49.99 (點數 140)。Firefox Marketplace 中的 App 與 In-app Payments,均適用價格點數的定價方式。</p> + +<p><strong>範例:</strong>若 App 設定為「10」價格點數,則在流通美金的地區就是售價 US$0.99 (未含當地銷售稅);流通歐元的地區就是售價 €0.89 (已含歐洲增值稅)。在哥倫比亞的電信帳單代繳售價為 COP$2060.00 (包含哥倫比亞區的增值稅),信用卡繳款的售價則為 US$0.99。</p> + +<h3 id="價格點數表"><strong>價格點數表</strong></h3> + +<table class="standard-table"> + <thead> + <tr> + <th rowspan="2">Price point</th> + + <th>Austria</th> + + <th>Belgium</th> + + <th>Brazil</th> + + <th>Chile</th> + + <th>Colombia</th> + + <th>Cyprus</th> + + <th>Estonia</th> + + <th>Finland</th> + + <th>France</th> + + <th>Germany</th> + + <th>Greece</th> + + <th>Hungary</th> + + <th>Ireland</th> + + <th>Italy</th> + + <th>Latvia</th> + + <th>Lithuania</th> + + <th>Luxembourg</th> + + <th>Malta</th> + + <th>Mexico</th> + + <th>Netherlands</th> + + <th>Peru</th> + + <th>Poland</th> + + <th>Portugal</th> + + <th>Slovakia</th> + + <th>Slovenia</th> + + <th>Spain</th> + + <th>United Kingdom</th> + + <th>United States</th> + + <th>Uruguay</th> + + <th>Venezuela</th> + + <th>Rest of World</th> + + </tr><tr> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + <th></th> + + </tr> + </thead> + <tbody> + <tr> + <th>VAT/Tax included in price</th> + + <td>unknown</td> + + <td>unknown</td> + + <td>no</td> + + <td>yes&nbsp;(19%)</td> + + <td>yes&nbsp;(16%)</td> + + <td>unknown</td> + + <td>unknown</td> + + <td>unknown</td> + + <td>unknown</td> + + <td>yes&nbsp;(19%)</td> + + <td>yes&nbsp;(23%)</td> + + <td>yes&nbsp;(27%)</td> + + <td>unknown</td> + + <td>yes&nbsp;(22%)</td> + + <td>unknown</td> + + <td>unknown</td> + + <td>unknown</td> + + <td>unknown</td> + + <td>yes&nbsp;(16%)</td> + + <td>unknown</td> + + <td>yes&nbsp;(18%)</td> + + <td>yes&nbsp;(23%)</td> + + <td>unknown</td> + + <td>unknown</td> + + <td>unknown</td> + + <td>yes&nbsp;(21%)</td> + + <td>yes&nbsp;(20%)</td> + + <td>no</td> + + <td>yes&nbsp;(22%)</td> + + <td>yes&nbsp;(12%)</td> + + <td>no</td> + + </tr> + + + <tr> + <th>Tier 0</th> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + $0 + + </td> + + <td> + + $0 + + </td> + + <td> + + $0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + Ft&nbsp;0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + $0 + + </td> + + <td> + + €0 + + </td> + + <td> + + $0 + + </td> + + <td> + + 0&nbsp;zł + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + €0 + + </td> + + <td> + + £0 + + </td> + + <td> + + $0 + + </td> + + <td> + + $0 + + </td> + + <td> + + $0 + + </td> + + <td> + + $0 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 1</th> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + €0.1 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + €0.1 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + Ft&nbsp;25 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + 0.49&nbsp;zł + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + </tr> + + <tr> + <th>Tier 5</th> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + €0.25 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + €0.25 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + Ft&nbsp;70 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + $3.75 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + 0.98&nbsp;zł + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + </tr> + + <tr> + <th>Tier 7</th> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + €0.4 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + €0.4 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + Ft&nbsp;135 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + $7.51 + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + 1.99&nbsp;zł + <span class="footnote"><a href="#pricetable_fn_2" title="Purchase via carrier only">[2]</a></span> + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + <td> + + n/a + + </td> + + </tr> + + <tr> + <th>Tier 10</th> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $0.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $0.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $2060 + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + + </td> + + <td> + + €0.89 + + </td> + + <td> + + Ft&nbsp;270 + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $15 + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $0.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 3.99&nbsp;zł + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €0.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £0.75 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $0.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $0.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $0.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $0.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 20</th> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $1.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $1.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $4150 + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + + </td> + + <td> + + €1.89 + + </td> + + <td> + + Ft&nbsp;545 + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $30 + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $1.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 7.69&nbsp;zł + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €1.89 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £1.5 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $1.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $1.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $1.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $1.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 30</th> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $2.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $2.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $6240 + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + + </td> + + <td> + + €2.79 + + </td> + + <td> + + Ft&nbsp;820 + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $45 + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $2.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 11.59&nbsp;zł + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €2.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £2.25 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $2.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $2.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $2.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $2.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 40</th> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $3.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $3.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $8320 + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + + </td> + + <td> + + €3.79 + + </td> + + <td> + + Ft&nbsp;1095 + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $60 + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $3.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 15.49&nbsp;zł + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €3.79 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £3 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $3.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $3.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $3.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $3.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 50</th> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $4.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $4.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $10420 + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + + </td> + + <td> + + €4.69 + + </td> + + <td> + + Ft&nbsp;1360 + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $75 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $4.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 19.5&nbsp;zł + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €4.69 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £3.75 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $4.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $4.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $4.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $4.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 60</th> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $6.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $6.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $14600 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + + </td> + + <td> + + €6.59 + + </td> + + <td> + + Ft&nbsp;1900 + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $105 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $6.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 26.99&nbsp;zł + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €6.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £5.25 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $6.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $6.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $6.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $6.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 70</th> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $9.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $9.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $20840 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + + </td> + + <td> + + €9.49 + + </td> + + <td> + + Ft&nbsp;2720 + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $150 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $9.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 38.79&nbsp;zł + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €9.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £7.5 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $9.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $9.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $9.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $9.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 80</th> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $12.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $12.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $26070 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + + </td> + + <td> + + €11.59 + + </td> + + <td> + + Ft&nbsp;3400 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $185 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $12.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 48.49&nbsp;zł + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €11.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £9.5 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $12.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $12.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $12.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $12.49 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 90</th> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $14.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $14.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $31280 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + + </td> + + <td> + + €14.19 + + </td> + + <td> + + Ft&nbsp;4080 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $225 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $14.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 57.99&nbsp;zł + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €14.19 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £11.25 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $14.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $14.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $14.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $14.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 100</th> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $19.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $19.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $41720 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + + </td> + + <td> + + €18.99 + + </td> + + <td> + + Ft&nbsp;5450 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $300 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $19.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 77.49&nbsp;zł + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €18.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £15 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $19.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $19.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $19.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $19.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 110</th> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $24.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $24.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $52160 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + + </td> + + <td> + + €23.59 + + </td> + + <td> + + Ft&nbsp;6800 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $375 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $24.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 96.99&nbsp;zł + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €23.59 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £18.75 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $24.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $24.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $24.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $24.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + <tr> + <th>Tier 120</th> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $29.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $29.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $62580 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + + </td> + + <td> + + €28.39 + + </td> + + <td> + + Ft&nbsp;8170 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $450 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $29.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + 116.49&nbsp;zł + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + €28.39 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + £22.5 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $29.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $29.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $29.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + <td> + + $29.99 + <span class="footnote"><a href="#pricetable_fn_1" title="Credit card purchase only">[1]</a></span> + + </td> + + </tr> + + + </tbody> + <caption><small>Last updated: 1519101168023.</small></caption> + +</table> +<ul style="list-style-type: none;"> + <li id="pricetable_fn_1">[1] Credit card purchase only.</li> + <li id="pricetable_fn_1">[2] Carrier billing only, no credit card purchase.</li> + +</ul> + +<h2 id="制定自己產品的價格">制定自己產品的價格</h2> + +<p>如果要為自己的 App 或 In-app 產品定價,就必須選擇價格點數與想要銷售的地區。對 App 來說,選擇銷售國家並不會限制其他國家的消費者購買 App,只會決定 App 所將上架的國家 (可能不只一個國家)。即使消費者身處其他國家,只要付款方式亦適用 App 的上架國家,就同樣可購買該 App。</p> + +<h2 id="價格點數表如何運作?"><strong>價格點數表如何運作?</strong></h2> + +<p>Marketplace 將針對各種幣別預先設定匯率,再轉換為美金以外的計價並四捨五入,以更為貼近市場友善的數字。四捨五入的價格與外幣匯率的波動,都代表美金以外的定價不會隨時等值於美金現價。除非需穩定多國換匯之後的相對價格,否則美金以外的定價均將保持不動。Mozilla 也不會刻意常常調整定價,且最快每六個月才會調價一次。價格點數一般均保持在美金定價的 1% ~ 2% 之內。而由於某些國家定價另納入了增值稅,因此可能超出此範圍。</p> + +<h3 id="含稅價與未稅價的價格點數"><strong>含稅價與未稅價的價格點數</strong></h3> + +<p>顯示於不同地區的價格可能含稅或未稅。含稅價代表該價格已含稅 (一般為增值稅,VAT) 並顯示給消費者知道。未稅價則代表稅額 (若有對應稅額) 將另外再加至顯示的價格中。</p> + +<p>各國家與地區的增值稅略有不同,但一般均依照 App 販售國家 (由電信營運商收取) 的增值稅率而定;或是在英國適用增值稅的地區以信用卡付款,則為 20% 增值稅率。一旦消費者確定付款之後,就會根據其付款資訊中登記地區的幣別,或目前所在地區的幣別計算。</p> + +<p>如果消費者所在地區顯示的是未稅價,則當地稅額與費用將再加入 App 售價之中。消費者可能要收到發票,或由銀行/電信營運商寄發對帳單之後,才會看到實際的稅額。</p> + +<h2 id="如何拆帳?"><strong>如何拆帳?</strong></h2> + +<p>在將自己設定為「開發者」的付款帳戶之後,即可選擇往後收款的幣別。目前支援的付款幣別包含美金 ($)、歐元 (€)、英鎊 (£)。若是含稅價格,則開發者在正常情況下會收到「消費者購買 App 金額扣除稅額與特定費用」的 70%。若是未稅價格,則會收到「消費者針對 App 定價表付款」的 70%;應付稅額另再加到消費者實際付款額之中。由於匯率浮動與增殖稅率的差異,各地區的實收金額也有所變動。</p> + +<p>而上述金額的另外 30%,將由 Mozilla、電信營運商、第三方支付供應商拆帳。其內包含商業交易程序的相關交易與服務費用。根據目前既定的分配方式,Mozilla 約將收取 5% ~ 7.5%。</p> + +<div class="note"> +<p>若選用電信帳單代繳方式,則開發者所能收到的款項可能又有差異。請到<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Payments_Status">付款狀態</a>了解相關細節,進一步了解該國電信營運商的拆帳規定。</p> +</div> + +<h2 id="付款方式:電信帳單代繳與信用卡"><strong>付款方式:電信帳單代繳與信用卡</strong></h2> + +<p>透過 Firefox Marketplace 販售自己 App 的絕佳優點之一,就是能直接讓消費者透過行動電話帳單付款。對信用卡尚未普及的新興市場而言,此特色絕對是目前行動付款的重要媒介。</p> + +<p>目前為止,電信營運商必須與 Mozilla 簽訂合約之後,才能在所屬地區提供電信帳單代繳的服務。消費者必須申請該電信營運商的 SIM 卡並預繳特定金額,以順利支付 App 或 In-app Payment 的款項。當然,消費者亦可透過信用卡購買 App。</p> + +<p>針對客戶透過自己行動電話號碼付費的機制,某些電信營運商另設有最低與最高額度,而且各家營運商均有不同。若 App 定價超出該額度,則款項預設轉為信用卡支付;但又並非所有消費者均擁有信用卡。又有些地區並無法和營運商值接建立帳單服務,而必須透過信用卡付款,如此就限定需以美金、歐元、英鎊購買 App。</p> + +<div class="note"> +<p><strong>注意:</strong>針對信用卡部分,目前最低收費款項為 10 價格點數 (即美金 $0.99 元整);而最高款項為美金 $30.00 元整。接受 Visa® 與 MasterCard® 信用卡。</p> +</div> + +<h2 id="慎防詐騙"><strong>慎防詐騙</strong></h2> + +<p>第三方支付供應商應已有多種防止詐騙的方式。為了減少詐騙行為,目前僅限消費者實際所在地銀行發行的信用卡,才能用以支付 App 購買款項。因此,消費者若持巴西境內銀行所發行的信用卡,就只能在巴西國內使用該信用卡,而不能跑到哥倫比亞境內購買 App。</p> + +<h2 id="取得自己的收益:設定收款帳戶"><strong>取得自己的收益:設定收款帳戶</strong></h2> + +<p>開發者若要能確實收到自己 App 或 In-app Payments 所創造的營收,必須先針對自己所選擇的 App 販售地區,開好當地支付供應商所提供的帳戶。各家支付供應商都具備服務條款,與 Mozilla 的服務條款不盡相同。開發者必須同意供應商的條款之後,才能透過 Firefox Marketplace 銷售自己的 App 或取得 In-app Payments 款項。</p> + +<p>你也可在 Firefox Marketplace 中設定開發者的收款帳戶。先找到 App 的「Compatibility & Payments」之後,針對你所選擇的販售地區新增收款帳戶即可。</p> + +<div class="note"> +<p><strong>注意:</strong>Bango 則是 Firefox Marketplace 的支付供應商。</p> +</div> + +<h2 id="收取屬於自己的款項"><strong>收取屬於自己的款項</strong></h2> + +<p>開發者可直接與支付供應商往來,以順利取得屬於自己的款項。你會收到「自行對帳發票 (Self Billing Invoice,SBI)」,其中將列舉開發者銷售總額、消費者退費總額、開發者實際收取總額。若你的 App 販售地區可退增值稅,則總額也將包含增值稅額。</p> + +<p>你可透過自己在 Firefox Marketplace 中的開發者帳戶,找到支付供應商的付款入口網頁。由於各國電信營運商入帳時程各有不同,且消費法規也可能影響退款速度,所以帳戶的收款條件與時程也有所差異。請自行了解第三方支付供應商的相關條件與說明。</p> + +<h2 id="稅額"><strong>稅額</strong></h2> + +<p>本章節將說明銷售稅的處理方式。</p> + +<h3 id="增值稅_(Value_Added_Tax,VAT)"><strong>增值稅 (Value Added Tax,</strong>VAT<strong>)</strong></h3> + +<p>Bango 可針對當地的稅捐機關,處理增值稅 (VAT) 的退稅問題。根據各個國家與地區的法律規定,相關徵稅與退稅的條件均有不同。開發者可向會計師或稅捐機關諮詢。而自行對帳發票 (SBI) 將根據增值稅稅前金額,開立發票給 Bango。開發者到時候觀看支付清單即可了解運作情形。如果開發者身處不屬於「販售者需支付增值稅」的地區,則應該會收到當地稅捐機關的退稅。相關細節請向會計師諮詢。</p> + +<h3 id="預扣稅額與換匯費用"><strong>預扣稅額與換匯費用</strong></h3> + +<p>Bango 可支付美金 ($)、歐元 (€)、英鎊 (£),讓開發者自行選擇適合的幣別。Bango 可能會因法條規範,為開發者預扣或繳付當地稅額,因此會從支付帳款中扣除應付稅額。各國的預扣稅率均不相同,也可能必須支付換匯費用。在將當地貨幣換成等值的美金、歐元、英鎊時,就可能產生 1.9% ~ 2.5% 的換匯費用。這項費用對開發者並不友善,而 Mozilla 也正研究是否有替代方案。</p> + +<h2 id="開發者的收益"><strong>開發者的收益</strong></h2> + +<p>因所在國家、當地貨幣、付款方式的不同,開發者販售 App 所獲得的收益也有所差異。可參閱<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Payments_Status">付款狀態</a>以進一步了解各國的付款細節。</p> diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/in-app_payments/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/in-app_payments/index.html new file mode 100644 index 0000000000..35e3fe4117 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/monetization/in-app_payments/index.html @@ -0,0 +1,332 @@ +--- +title: 應用程式內部付費 (In-app payments) +slug: Archive/Mozilla/Marketplace/Monetization/In-app_payments +translation_of: Archive/Marketplace/Monetization/In-app_payments_section/mozPay_iap +--- +<div class="summary"> + <p><a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay">navigator.mozPay</a> API 可讓網頁內容執行數位貨品的付款作業,並能接收由付款服務商所傳來的購買確認訊息。我們也針對此 API 建構了 <a href="https://wiki.mozilla.org/WebAPI/WebPaymentProvider">Web 付款服務商</a>,讓你能取得數位貨品的款項。本文將說明該如何使用<span class="seoSummary"> <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay">navigator.mozPay</a> API 與 <a href="https://wiki.mozilla.org/WebAPI/WebPaymentProvider">Web 付款服務商</a>的服務,以達到應用程式內付款 (In-app payments)。</span></p> + <div class="note"> + <p>另外現正開發「<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/In-app_payments_section/fxPay_iap">fxPay</a>」付款處理機制。FxPay 不會要求開發者必須架設伺服器以進行購買行為驗證,可算是更完整的付款方式。</p> + </div> +</div> +<h2 id="In-app_payments_概述">In-app payments 概述</h2> +<p>讓你為自己的 App 添加 In-app payments 機制,與其運作的方法:</p> +<ul> + <li>登入 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心 (Developer Hub)。</a></li> + <li><a href="https://marketplace.firefox.com/developers/submit/">上傳 App</a>、將 App 設定為 Paid 或 In-app 付款、產生應用程式金鑰 (Application Key) 與應用程式安全金鑰 (Application Secret)。</li> + <li>App 將透過上述的安全金鑰 (Secret) 簽署 <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JWT</a> 請求,並呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay(...)</code></a> 而開始付款作業</li> + <li>系統將另開一個特殊視窗執行付款流程 + <ul> + <li>消費者若尚未登入,則以 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Persona">Mozilla Persona</a> 登入</li> + <li>消費者輸入自己的 PIN 碼</li> + <li>消費者透過電信帳單或信用卡付費</li> + </ul> + </li> + <li>消費者關閉視窗之後,你的 App 就會收到 JavaScript 回呼 (Callback)</li> + <li>你的 App <strong>伺服器</strong>將接收已簽署的 POST 請求,內含的 Mozilla 交易 ID 將指出已成功完成購買程序</li> + <li>所得金額將直接匯入你的銀行帳戶</li> +</ul> +<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay</code></a> API 目前限用於 <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS">Firefox OS</a>。你同樣可透過 <a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">Firefox OS 應用程式管理員 (App Manager)</a> 測試此 API。</p> +<div class="note"> + <p><strong>注意:</strong>如果是在 Firefox OS 1.2 裝置上測試,只要該裝置內並無 SIM 卡,則 <code>mozPay</code> 呼叫將失敗。但消費者只要裝入 SIM 卡就可解決此問題。目前市面上販售的 Firefox OS 裝置均未安裝 Firefox 1.2。若要進一步了解,可參閱 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=989022">bug 989022</a>。</p> +</div> +<h2 id="逐步設定_In-app_payment">逐步設定 In-app payment</h2> +<p>接著說明該如何設定 In-app payment。</p> +<h3 id="取得測試用的付款金鑰_(Payment_Key)"><strong>取得測試用的付款金鑰 (Payment Key)</strong></h3> +<p>在登入至 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心</a>時,可前往 <a href="https://marketplace.firefox.com/developers/in-app-keys/">In-App Payment Keys</a> 頁面取得應用程式金鑰與安全金鑰以利測試。雖然金鑰只能讓你<strong>模擬</strong> In-app payments,但已足以因應相關測試。在將自己的 App 提交至 Marketplace 審核之前,應該先多嘗試相關模擬。請參閱付款模擬的相關說明。</p> +<h3 id="取得真正的付款金鑰"><strong>取得真正的付款金鑰</strong></h3> +<p>在將自己的 App 提交至 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心</a>時, 系統將要求你設定付款條件。此時請選擇 App 的價格 (你也可能想免費提供),接著勾選你接受 In-app payments 的選項。在設定自己的銀行帳戶之後,前往「Manage In-App Payments」頁面取得應用程式金鑰與安全金鑰,才能執行真正的付款作業。</p> +<p>透過隱私設定或類似檔案,可在自己的 App 伺服器中儲存應用程式安全金鑰。</p> +<div class="note"> + <strong>重要:</strong>請確認沒有任何人可讀取你的應用程式安全金鑰。絕對不要在用戶端披露該項資訊。</div> +<h3 id="設定_App"><strong>設定 A</strong>pp</h3> +<p>先假設你在設計某個 <a href="https://developer.mozilla.org/en-US/docs/Web/Apps">Open Web App </a>的冒險遊戲,而你想販售「魔力獨角獸」物品,讓玩家能擁有遊戲優勢。你可設定美金 $1.99、歐元 €1.89,或任何幣值均可。接著將說明該如何設定後端伺服器,並撰寫前端程式碼而透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay">navigator.mozPay</a> 銷售產品。</p> +<h3 id="設定自己的伺服器以簽署_JWT"><strong>設定自己的伺服器以簽署</strong> JWT</h3> +<p>因為用來簽署的應用程式安全金鑰絕對不能公開,所以你必須在伺服端簽署 <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JSON Web Tokens (JWTs)</a>;而非用戶端。回到剛剛冒險遊戲要賣魔力獨角獸的例子,你要在自己的伺服器上建立如 <code>/sign-jwt</code> 的網址。如此可建立 JSON 物件以定義產品名稱、定價等。可參閱 <a href="https://wiki.mozilla.org/WebAPI/WebPayment">Web Payment API 規格</a>以了解完整的 JWT 格式。範例如下:</p> +<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span> + <span class="token string">"iss"</span><span class="token punctuation">:</span> APPLICATION_KEY<span class="token punctuation">,</span> + <span class="token string">"aud"</span><span class="token punctuation">:</span> <span class="token string">"marketplace.firefox.com"</span><span class="token punctuation">,</span> + <span class="token string">"typ"</span><span class="token punctuation">:</span> <span class="token string">"mozilla/payments/pay/v1"</span><span class="token punctuation">,</span> + <span class="token string">"iat"</span><span class="token punctuation">:</span> <span class="token number">1337357297</span><span class="token punctuation">,</span> + <span class="token string">"exp"</span><span class="token punctuation">:</span> <span class="token number">1337360897</span><span class="token punctuation">,</span> + <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"id"</span><span class="token punctuation">:</span> <span class="token string">"915c07fc-87df-46e5-9513-45cb6e504e39"</span><span class="token punctuation">,</span> + <span class="token string">"pricePoint"</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token punctuation">,</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magical Unicorn"</span><span class="token punctuation">,</span> + <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game item"</span><span class="token punctuation">,</span> + <span class="token string">"icons"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"64"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-64.png"</span><span class="token punctuation">,</span> + <span class="token string">"128"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-128.png"</span> + <span class="token punctuation">}</span><span class="token punctuation">,</span> + <span class="token string">"productData"</span><span class="token punctuation">:</span> <span class="token string">"user_id=1234&my_session_id=XYZ"</span><span class="token punctuation">,</span> + <span class="token string">"postbackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/postback"</span><span class="token punctuation">,</span> + <span class="token string">"chargebackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/chargeback"</span><span class="token punctuation">,</span> + <span class="token string">"defaultLocale"</span><span class="token punctuation">:</span> <span class="token string">"en"</span><span class="token punctuation">,</span> + <span class="token string">"locales"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"de"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magisches Einhorn"</span><span class="token punctuation">,</span> + <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game Artikel"</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span> +<span class="token punctuation">}</span></code></pre> +<p><a href="https://wiki.mozilla.org/WebAPI/WebPayment">Web Payment API 規格</a>將詳細解釋格式。此處列出幾個重點:</p> +<ul> + <li><code>iss</code> (issuer) 將對應你從 <a href="http://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心</a>所取得的 App 金鑰。</li> + <li><code>aud</code> (audience) 應設定為 <code>marketplace.firefox.com</code>。</li> + <li><code>request.id</code> 均專屬對應至你的各個 App 產品。</li> + <li>在購買當下,<code>request.pricePoint</code> 將展開為價格與幣別。你必須將之設定為有效的<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/App_pricing#Pricing_with_price_points" title="/en-US/docs/Web/Apps/Publishing/App_pricing#Pricing_with_price_points">價格點數</a>。</li> + <li><code>request.productData </code><code>最多</code><code>可容納 255 個字元的字串。當你接收到回傳的</code> postback 時,可讓你核對 App 的狀態。</li> + <li><code>request.postbackURL</code> 與 <code>request.chargebackURL</code> 需指向你伺服器網址的有效、絕對路徑。在 Mozilla 正式上線的服務環境中,網址均必須是 HTTPS。</li> + <li><code>request.icons</code> 物件 (選填) 是你販售商品的圖示網址,其值為寬/高像素值 (圖像需為正方形)。Mozilla 的付款服務商將於付款確認頁面上使用你的 64 像素圖像。若你並未指定 64 像素的圖像,則將依照字型取得最大的圖示並將之縮放。針對首次購買該 App 的消費者,則由付款服務商在背景取得圖示,所以消費者不會立刻看到圖示。若你變更圖示,則將於 24 小時之內顯示新圖示。</li> + <li><code>request.defaultLocale</code> 將敘述 In-app 產品目前的語言。除非必須定義 <code>locales</code> ,否則此亦為選填物件。</li> + <li><code>request.locales</code> 物件 (選填) 將對應一或多個地區而重新定義 In-app 產品所內含的資料,且此處 UI 將根據存取裝置的語言而提供翻譯過的內容。舉例來說,如果有義大利消費者安裝了你的 App,你應該也想提供義大利文的 UI 介面。各個地區語言的輸入項均已鍵入語言標籤 (<a href="http://www.ietf.org/rfc/rfc4646.txt">RFC 4646</a>) ,並包含你所要取代的標籤。你可以只重新定義 <code>name</code> 與 <code>description</code> 就好。但若定義了 <code>locales</code> 也就必須定義 <code>defaultLocale</code>。</li> +</ul> +<p>在 Python (使用 <a href="https://github.com/progrium/pyjwt">PyJWT</a>) 程式碼中,你可簽署並編碼上述的請求路徑如下:</p> +<pre class="brush: python language-html"><code class="language-python">import jwt +signed_request = jwt.encode(request_dict, application_secret, algorithm='HS256')</code></pre> +<p>此程式碼將為 JWT (使用應用程式安全金鑰) 進行簽章,並使用 HMAC SHA 256 演算法。在編碼過後就如下列:</p> +<pre class="language-html"><code class="language-html">eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.IntcImF1ZFwiOiBcIm1hcmtldHBsYWNlLm1vemlsbGEub3JnXCIsIFwiaXNzXCI6IFwiQVBQLTEyM1wiLCBcInJlcXVlc3RcIjoge1wiY3VycmVuY3lcIjogXCJVU0RcIiwgXCJwcmljZVwiOiBcIjAuOTlcIiwgXCJuYW1lXCI6IFwiVmlydHVhbCAzRCBHbGFzc2VzXCIsIFwicHJvZHVjdGRhdGFcIjogXCJBQkMxMjNfREVGNDU2X0dISV83ODkuWFlaXCIsIFwiZGVzY3JpcHRpb25cIjogXCJWaXJ0dWFsIDNEIEdsYXNzZXNcIn0sIFwiZXhwXCI6IFwiMjAxMi0wMy0yMVQxMTowOTo1Ni43NTMxNDFcIiwgXCJpYXRcIjogXCIyMDEyLTAzLTIxVDEwOjA5OjU2LjgxMDQyMFwiLCBcInR5cFwiOiBcIm1vemlsbGEvcGF5bWVudHMvcGF5L3YxXCJ9Ig.vl4E31_5H3t5H_mM8XA69DqypCqdACVKFy3kXz9EmTI</code></pre> +<p>如上面章節所述,在 JWT 經過編碼/簽章之後,即可透過其用戶端碼而供你的 App 所使用。</p> +<h3 id="設定購買按鈕">設定購買按鈕</h3> +<p>現在你已經有後端可為自己的產品產生 JWT 了。接著透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay</code></a> 提供前端程式碼的撰寫範例。請確實在自己的 App 中提供按鈕,以利消費者購買產品。例如:</p> +<pre class="brush: html language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>button</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>purchase<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Purchase Magical Unicorn<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>button</span><span class="token punctuation">></span></span></code></pre> +<p>點選購買按鈕之後,你的 App 應會簽署 <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JSON Web Token (JWT)</a> 並呼叫 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay</code></a>。下列為 <a href="http://jquery.com/">jQuery</a> 使用範例:</p> +<pre class="brush: js language-js"><code class="language-js">$<span class="token punctuation">(</span><span class="token string">'#purchase button'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">click<span class="token punctuation">(</span></span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> + <span class="token comment"> // The purchase is now pending... +</span> $<span class="token punctuation">.</span><span class="token function">post<span class="token punctuation">(</span></span><span class="token string">'/sign-jwt'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span> + <span class="token punctuation">.</span><span class="token function">done<span class="token punctuation">(</span></span><span class="token keyword">function</span><span class="token punctuation">(</span>signedJWT<span class="token punctuation">)</span> <span class="token punctuation">{</span> + <span class="token keyword">var</span> request <span class="token operator">=</span> navigator<span class="token punctuation">.</span><span class="token function">mozPay<span class="token punctuation">(</span></span><span class="token punctuation">[</span>signedJWT<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> + request<span class="token punctuation">.</span>onsuccess <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> + <span class="token function">waitForPostback<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> + <span class="token punctuation">}</span><span class="token punctuation">;</span> + request<span class="token punctuation">.</span>onerror <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> + console<span class="token punctuation">.</span><span class="token function">log<span class="token punctuation">(</span></span><span class="token string">'navigator.mozPay() error: '</span> <span class="token operator">+</span> <span class="token keyword">this</span><span class="token punctuation">.</span>error<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span><span class="token punctuation">)</span> + <span class="token punctuation">.</span><span class="token function">fail<span class="token punctuation">(</span></span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> + console<span class="token punctuation">.</span><span class="token function">error<span class="token punctuation">(</span></span><span class="token string">'Ajax post to /sign-jwt failed'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> + <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> +<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> + +<span class="token keyword">function</span> <span class="token function">waitForPostback<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span> + <span class="token comment"> // Poll your server until you receive a postback with a JWT. +</span> <span class="token comment"> // If the JWT signature is valid then you can dispurse the Magical Unicorn +</span> <span class="token comment"> // product to your customer. +</span> <span class="token comment"> // For bonus points, use Web Sockets :) +</span><span class="token punctuation">}</span></code></pre> +<p>上列程式碼將送出 Ajax 請求至你伺服器上的 <code>/sign-jwt</code> 網址。該網址所簽署的 JSON blob 將包含產品/價格資訊,並以純文字檔回傳 JWT。而 Ajax 處理器 (Handler) 將傳送該 JWT 進入 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay</code></a> 並等待,直到付款服務商將購買確認訊息送至你的伺服器上。若送過來的 JWT 簽章通過驗證為有效,你就可將虛擬商品交付給消費者。</p> +<h3 id="於伺服器上處理_Postback"><strong>於伺服器上處理</strong> Postback</h3> +<p>在正式販售出出自己的 App 產品之前,必須先等待 Marketplace 回傳購買確認訊息;此及所謂的「Postback」。此由 <code>marketplace.firefox.com</code> 傳送出「POST」確認通知 (即 1 組 <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JWT</a>),至原始付款請求所指定的 <code>request.postbackURL</code>。</p> +<p>而此「POST」具備 <code>application/x-www-form-urlencoded</code> 的 <code>Content-Type</code>,且亦可於 <strong><code>notice</code></strong> 參數中找到此 JWT。在你的伺服器框架中,你可透過如 <strong>request.POST['notice']</strong> 來存取此 JWT。</p> +<p>此 JWT 通知具備所有的付款請求欄位與 1 組交易 ID,並以 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心</a>取得的應用程式安全金鑰而完成簽章。當你收到 Postback 並驗證簽章之後,隨即完成購買程序。若你無法辨別 JWT 的簽章,就可能不是 Marketplace 所傳送的 JWT,你可逕行忽略。</p> +<p><a href="https://wiki.mozilla.org/WebAPI/WebPayment">Web Payment API 規格</a>即解釋了 Postback 的細節。Postback 內含原始請求,且添增的新反應參數亦包含 Mozilla 的特定交易 ID。範例如下:</p> +<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span> + <span class="token string">"iss"</span><span class="token punctuation">:</span> <span class="token string">"marketplace.firefox.com"</span><span class="token punctuation">,</span> + <span class="token string">"aud"</span><span class="token punctuation">:</span> APPLICATION_KEY<span class="token punctuation">,</span> + <span class="token string">"typ"</span><span class="token punctuation">:</span> <span class="token string">"mozilla/payments/pay/postback/v1"</span><span class="token punctuation">,</span> + <span class="token string">"exp"</span><span class="token punctuation">:</span> <span class="token number">1337370900</span><span class="token punctuation">,</span> + <span class="token string">"iat"</span><span class="token punctuation">:</span> <span class="token number">1337360900</span><span class="token punctuation">,</span> + <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"id"</span><span class="token punctuation">:</span> <span class="token string">"915c07fc-87df-46e5-9513-45cb6e504e39"</span><span class="token punctuation">,</span> + <span class="token string">"pricePoint"</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token punctuation">,</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magical Unicorn"</span><span class="token punctuation">,</span> + <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game item"</span><span class="token punctuation">,</span> + <span class="token string">"icons"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"64"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-64.png"</span><span class="token punctuation">,</span> + <span class="token string">"128"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-128.png"</span> + <span class="token punctuation">}</span><span class="token punctuation">,</span> + <span class="token string">"productData"</span><span class="token punctuation">:</span> <span class="token string">"user_id=1234&my_session_id=XYZ"</span><span class="token punctuation">,</span> + <span class="token string">"postbackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/postback"</span><span class="token punctuation">,</span> + <span class="token string">"chargebackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/chargeback"</span><span class="token punctuation">,</span> + <span class="token string">"defaultLocale"</span><span class="token punctuation">:</span> <span class="token string">"en"</span><span class="token punctuation">,</span> + <span class="token string">"locales"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"de"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magisches Einhorn"</span><span class="token punctuation">,</span> + <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game Artikel"</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span><span class="token punctuation">,</span> + <span class="token string">"response"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"transactionID"</span><span class="token punctuation">:</span> <span class="token string">"webpay:84294ec6-7352-4dc7-90fd-3d3dd36377e9"</span><span class="token punctuation">,</span> + <span class="token string">"price"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span><span class="token string">"amount"</span><span class="token punctuation">:</span> <span class="token string">"0.99"</span><span class="token punctuation">,</span> <span class="token string">"currency"</span><span class="token punctuation">:</span> <span class="token string">"CAD"</span><span class="token punctuation">}</span> + <span class="token punctuation">}</span> +<span class="token punctuation">}</span></code></pre> +<p>列出 Postback 的幾項重點:</p> +<ul> + <li>必將納入你的原始付款請求。</li> + <li><code>iss</code> (issuer) 必為 marketplace.firefox.com。</li> + <li><code>aud</code> (audience) 設定為你的應用程式金鑰。</li> + <li>以你的應用程式安全金鑰簽署 JWT。</li> + <li><code>response.transactionID</code> 專屬於 Mozilla 的 <a href="https://github.com/mozilla/webpay">Web Payment Provider。</a></li> + <li><code>response.price </code>則為客戶實際使用的金額與幣別。</li> +</ul> +<h3 id="回應_Postback">回應 Postback</h3> +<p>App 必須透過純文字的 HTTP 回應 (其內僅含交易 ID),對 Postback 做出回應。例如:</p> +<pre class="language-html"><code class="language-html">HTTP/1.1 200 OK +Content-Type: text/plain + +webpay:84294ec6-7352-4dc7-90fd-3d3dd36377e9</code></pre> +<h3 id="於伺服器上處理_Chargeback"><strong>於伺服器上處理</strong> Chargeback</h3> +<p>如果交易過程發生問題 (如消費者帳戶的餘額不足),則 Marketplace 將傳送退款通知 (即 POST 過的 <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JWT</a>)。Chargeback 與 Postback 同樣都會傳送到 App,但 Chargeback 送達的時間較晚。該 POST 具備 <code>application/x-www-form-urlencoded</code> 的 <code>Content-Type</code>,且可於 <code>notice</code> 參數中找到該 JWT。下列為解碼後的 Chargeback 通知範例:</p> +<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span> + <span class="token string">"iss"</span><span class="token punctuation">:</span> <span class="token string">"marketplace.firefox.com"</span><span class="token punctuation">,</span> + <span class="token string">"aud"</span><span class="token punctuation">:</span> APPLICATION_KEY<span class="token punctuation">,</span> + <span class="token string">"typ"</span><span class="token punctuation">:</span> <span class="token string">"mozilla/payments/pay/chargeback/v1"</span><span class="token punctuation">,</span> + <span class="token string">"exp"</span><span class="token punctuation">:</span> <span class="token number">1337370900</span><span class="token punctuation">,</span> + <span class="token string">"iat"</span><span class="token punctuation">:</span> <span class="token number">1337360900</span><span class="token punctuation">,</span> + <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"id"</span><span class="token punctuation">:</span> <span class="token string">"915c07fc-87df-46e5-9513-45cb6e504e39"</span><span class="token punctuation">,</span> + <span class="token string">"pricePoint"</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token punctuation">,</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magical Unicorn"</span><span class="token punctuation">,</span> + <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game item"</span><span class="token punctuation">,</span> + <span class="token string">"icons"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"64"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-64.png"</span><span class="token punctuation">,</span> + <span class="token string">"128"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-128.png"</span> + <span class="token punctuation">}</span><span class="token punctuation">,</span> + <span class="token string">"productData"</span><span class="token punctuation">:</span> <span class="token string">"user_id=1234&my_session_id=XYZ"</span><span class="token punctuation">,</span> + <span class="token string">"postbackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/postback"</span><span class="token punctuation">,</span> + <span class="token string">"chargebackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/chargeback"</span><span class="token punctuation">,</span> + <span class="token string">"defaultLocale"</span><span class="token punctuation">:</span> <span class="token string">"en"</span><span class="token punctuation">,</span> + <span class="token string">"locales"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"de"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magisches Einhorn"</span><span class="token punctuation">,</span> + <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game Artikel"</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span><span class="token punctuation">,</span> + <span class="token string">"response"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"transactionID"</span><span class="token punctuation">:</span> <span class="token string">"webpay:84294ec6-7352-4dc7-90fd-3d3dd36377e9"</span><span class="token punctuation">,</span> + <span class="token string">"reason"</span><span class="token punctuation">:</span> <span class="token string">"refund"</span> + <span class="token punctuation">}</span> +<span class="token punctuation">}</span></code></pre> +<p>此 JWT 和 Postback 類似,可於 <a href="https://wiki.mozilla.org/WebAPI/WebPayment">Web Payment API 規格</a>中參閱其定義細節。此處列出幾項重點:</p> +<ul> + <li>必納入原始付款請求。</li> + <li><code>iss</code> (issuer) 必為 <code>marketplace.firefox.com</code>。</li> + <li><code>aud</code> (audience) 需設為你的應用程式金鑰。</li> + <li>JWT 需以你的應用程式安全金鑰完成簽章。</li> + <li><code>response.transactionID</code> 專屬於 Mozilla 的 Web Payment Provider。</li> + <li><code>response.reason</code> 必設為 <code>refund</code> 或 <code>reversal。</code> + <ul> + <li><code>refund</code> 代表已根據消費者或管理員的要求而退回款項。</li> + <li><code>reversal</code>代表消費者要求信用卡發卡銀行取消交易。在爭議款項發生時,消費者亦可能透過信用卡公司取消交易。</li> + </ul> + </li> +</ul> +<div class="note"> + <p><strong>注意:</strong>目前 in-app payments 尚未支援退款作業。</p> +</div> +<p>App 必須透過純文字的 HTTP 回應 (其內僅含交易 ID),對 Chargeback 做出回應。舉例來說:</p> +<pre class="language-html"><code class="language-html">HTTP/1.1 200 OK +Content-Type: text/plain + +webpay:84294ec6-7352-4dc7-90fd-3d3dd36377e9</code></pre> +<h3 id="Postbackchargeback_錯誤">Postback/chargeback 錯誤</h3> +<p>若 App 伺服器是以不成功的狀態碼回應 HTTP 請求,則 Mozilla 的 Web Payment Provider 將重新嘗試 URL 數次。若仍未能接收成功回應,則 App 開發者就會收到通知,且該 App 將暫時停用。若 App 伺服器未能以交易 ID 回應 Postback 或 Chargeback,就會將該伺服器處理為錯誤並會重新嘗試。</p> +<h3 id="使用_HTTPS_Postbackchargeback_網址">使用 HTTPS Postback/chargeback 網址</h3> +<p>於正式環境中執行 App 時,可依需要而嘗試使用安全的 HTTPS 網址。如此一來,在將 Postbacks 從 Mozilla 伺服器傳輸至自己的 App 伺服器時,可避免 Postback 資料遭他人讀取。目前並未強制使用 HTTPS 來保護付款請求,其實 JWT 簽章即可達到相同效果。</p> +<div class="warning"> + <p><strong><strong>注意:</strong></strong>若你並未使用安全的 HTTPS Postback 網址,則請確認自己的付款請求<strong><strong><strong>並未包含個人識別資訊</strong></strong></strong>,以免遭第三方所攔截。舉例來說<strong><strong>,需確認自己的</strong></strong> <em>productData</em> 值並未揭露任何高敏感性的使用者資料。Mozilla 預設的付款請求亦未包含任何個人識別資訊。</p> +</div> +<h3 id="Postbackchargeback_IP">Postback/chargeback IP</h3> +<p>如果你依照上述方式而確實檢查了 JWT 簽章,就不需為 Firefox Marketplace 伺服器 (傳送 postback/chargeback 通知給你) 的 IP 設定許可清單。但如果你想再另加額外保險 (例如防止鍵盤側錄),則 Marketplace 也能從下列 IP 位址寄發 postback/chargeback 通知給你。只要這些 IP 位址變更,都會發佈到 <a href="https://lists.mozilla.org/listinfo/dev-marketplace">dev-marketplace 郵件群組</a>之中。</p> +<pre class="language-html"><code class="language-html">63.245.216.100</code></pre> +<h3 id="模擬付款">模擬付款</h3> +<p>上面的「概述」部分提到,你可從 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心</a>取得特殊的應用程式金鑰 (Application Key) 與應用程式安全金鑰 (Application Secret),進而模擬 In-app payments。而這個安全金鑰亦可簽署如下的客製 JWT:</p> +<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span> + <span class="token string">"iss"</span><span class="token punctuation">:</span> APPLICATION_KEY<span class="token punctuation">,</span> + <span class="token string">"aud"</span><span class="token punctuation">:</span> <span class="token string">"marketplace.firefox.com"</span><span class="token punctuation">,</span> + <span class="token string">"typ"</span><span class="token punctuation">:</span> <span class="token string">"mozilla/payments/pay/v1"</span><span class="token punctuation">,</span> + <span class="token string">"iat"</span><span class="token punctuation">:</span> <span class="token number">1337357297</span><span class="token punctuation">,</span> + <span class="token string">"exp"</span><span class="token punctuation">:</span> <span class="token number">1337360897</span><span class="token punctuation">,</span> + <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"id"</span><span class="token punctuation">:</span> <span class="token string">"915c07fc-87df-46e5-9513-45cb6e504e39"</span><span class="token punctuation">,</span> + <span class="token string">"pricePoint"</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token punctuation">,</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Magical Unicorn"</span><span class="token punctuation">,</span> + <span class="token string">"description"</span><span class="token punctuation">:</span> <span class="token string">"Adventure Game item"</span><span class="token punctuation">,</span> + <span class="token string">"icons"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"64"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-64.png"</span><span class="token punctuation">,</span> + <span class="token string">"128"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/img/icon-128.png"</span> + <span class="token punctuation">}</span><span class="token punctuation">,</span> + <span class="token string">"productData"</span><span class="token punctuation">:</span> <span class="token string">"user_id=1234&my_session_id=XYZ"</span><span class="token punctuation">,</span> + <span class="token string">"postbackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/postback"</span><span class="token punctuation">,</span> + <span class="token string">"chargebackURL"</span><span class="token punctuation">:</span> <span class="token string">"https://yourapp.com/payments/chargeback"</span><span class="token punctuation">,</span> + <span class="token string">"simulate"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"result"</span><span class="token punctuation">:</span> <span class="token string">"postback"</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span> +<span class="token punctuation">}</span></code></pre> +<p>額外的 <code>request.simulate</code> 屬性可要求 Payment Provider 模擬相關結果,而不會真正收費。使用者介面亦不會要求登入或 PIN 碼。在開發 App 時,可透過此屬性而確認「購買」鈕已正確掛上 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay">navigator.mozPay</a>,且自己的伺服器可正確運作 Postbacks 與 Chargebacks 的網址。</p> +<p>下列範例將模擬 1 筆成功的購買作業,並傳送簽署過的通知至你的 Postback 網址:</p> +<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span> + <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> + <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> + <span class="token string">"simulate"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"result"</span><span class="token punctuation">:</span> <span class="token string">"postback"</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span> +<span class="token punctuation">}</span></code></pre> +<p>下列則模擬 1 筆 Chargeback 退款:</p> +<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span> + <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> + <span class="token string">"request"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> + <span class="token string">"simulate"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"result"</span><span class="token punctuation">:</span> <span class="token string">"chargeback"</span><span class="token punctuation">,</span> + <span class="token string">"reason"</span><span class="token punctuation">:</span> <span class="token string">"refund"</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span> +<span class="token punctuation">}</span></code></pre> +<p>將如同真正的購買作業一般,將有 1 筆 JWT 通知傳送到你的處理器,但不會有隨機產生的 transactionID。模擬作業亦可使用 non-HTTPS 網址。</p> +<div class="note"> + <p><strong>注意:</strong>模擬的付款 JWT 不該用於正式的服務環境中,否則你的消費者將免費取得產品。</p> +</div> +<h2 id="除錯">除錯</h2> +<p>如果你並未正確使用 in-app payment API,則付款畫面將顯示錯誤訊息,以協助使用者進行後續步驟。付款畫面亦將提供錯誤程式碼,協助開發者找出相關錯誤。你可透過 Mozilla 的 <a href="https://webpay.readthedocs.org/en/latest/services.html#error-legend">Error Legend API</a>,在自己慣用的程式語言中觀看錯誤代碼。舉例來說,錯誤代碼 <code>INVALID_JWT</code> 即表示 JWT 簽章無效,或 JWT 格式混亂。</p> +<h2 id="保護應用程式安全金鑰"><strong>保護應用程式安全金鑰</strong></h2> +<div class="warning"> + <p><strong><strong>警告:</strong></strong>請確認沒有任何人可讀取你的應用程式安全金鑰。<strong>絕對不要在用戶端披露該項資訊</strong>。</p> +</div> +<h3 id="撤銷遭盜用的應用程式安全金鑰"><strong>撤銷遭盜用的應用程式安全金鑰</strong></h3> +<p>雖然遭盜用的機率極低,但你的安全金鑰仍可能外洩或遭盜用,這時應儘快進行下列撤銷步驟:</p> +<ol> + <li>登入 <a href="https://marketplace.mozilla.org/">Firefox Marketplace</a>。</li> + <li>前往「My Submissions」並找到自己的 App。</li> + <li>前往「Manage In-App Payments」頁面;就是產生自己所屬憑證 (Credentials) 的相同頁面。</li> + <li>點擊「Reset Credentials」按鈕。</li> +</ol> +<p>在重設自己的憑證之後,其他人就無法以舊憑證處理付款作業。你會看到新的應用程式金鑰與安全金鑰,並可立刻用來處理自己 App 中的付款流程。</p> +<p>若要回報任何安全性問題,請<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Marketplace;component=Payments%2FRefunds">填寫 Payments/Refunds 分類下的錯誤</a>。</p> +<h2 id="程式碼函式庫"><strong>程式碼函式庫</strong></h2> +<p>下列為 Mozilla 的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.mozPay"><code>navigator.mozPay</code></a> 專屬函式庫:</p> +<ul> + <li>Python: <a href="https://mozpay.readthedocs.org/en/latest/">mozpay</a> module</li> + <li>node.js: <a href="https://github.com/mozilla/mozpay-js">mozpay</a> module</li> +</ul> +<p>Here are some generic <a href="http://openid.net/specs/draft-jones-json-web-token-07.html">JSON Web Token</a> (JWT) libraries for encoding/decoding and signature verification:</p> +<ul> + <li>Python: <a href="https://pypi.python.org/pypi/PyJWT-mozilla">PyJWT-mozilla</a></li> + <li>Ruby: <a href="https://github.com/progrium/ruby-jwt">ruby-jwt</a></li> + <li>node.js: <a href="https://github.com/hokaccha/node-jwt-simple">node-jwt-simple</a></li> + <li>PHP: <a href="https://github.com/luciferous/jwt">luciferous/jwt</a></li> + <li>Java: <a href="http://code.google.com/p/jsontoken/">jsontoken</a></li> + <li>.NET: <a href="https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet">IdentityModel Extensions for .Net</a></li> +</ul> +<h2 id="範例程式碼"><strong>範例程式碼</strong></h2> +<ul> + <li>這裡提供 <a href="https://github.com/jlongster/webfighter">Web Fighter</a> 原始碼。此遊戲是以 NodeJS 建構 In-app payments 功能。你可到 Marketplace 的<a href="https://marketplace.firefox.com/app/webfighter?src=search">這裡</a>安裝。</li> + <li>此為診斷與測試用 App,將呈現 JWT 請求的簽署方式,並以 Python 撰寫 Postbacks 與 Chargebacks 的檢驗器 (Verifier) 程式碼:<a href="https://github.com/kumar303/inapp-pay-test">In-app Payment Tester</a></li> +</ul> +<h2 id="尋求協助"><strong>尋求協助</strong></h2> +<ul> + <li>你可透過 <a href="https://lists.mozilla.org/listinfo/dev-webapps">dev-webapps</a> 郵件群組,或在 <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a> 的 #payments 頻道上討論 In-app payments 的相關問題。</li> + <li>若發現任何錯誤,請在 Payments/Refunds 分類下回報 <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Marketplace;component=Payments%2FRefunds">Marketplace bug</a>。</li> +</ul> +<h2 id="類似的付款系統"><strong>類似的付款系統</strong></h2> +<ul> + <li><a href="https://developers.google.com/commerce/wallet/digital/docs/">Google 的 In-App Payments API</a></li> + <li><a href="http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/APIOverview/OverviewoftheStoreKitAPI.html">iOS 的 in-app purchases</a></li> + <li><a href="http://developer.android.com/google/play/billing/billing_overview.html">Android 的 in-App billing API</a></li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/index.html new file mode 100644 index 0000000000..ed0b227445 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/monetization/index.html @@ -0,0 +1,80 @@ +--- +title: 讓 App 產生實質收益 +slug: Archive/Mozilla/Marketplace/Monetization +tags: + - NeedsTranslation + - TopicStub +translation_of: Archive/Marketplace/Monetization +--- +<div class="summary"> + <p>你努力打造出自己的 App,又該如何在發佈之後取得實質收益呢?不論你選用 Marketplace 付款或應用程式內部付費機制 (In-app payments),本頁將提供所有相關的 App 付款資訊。</p> +</div> +<div class="row topicpage-table"> + <div class="section"> + <dl> + <dt> + <a href="https://developer.mozilla.org/en-US/docs/Apps/Tutorials/General/Profiting_from_your_app">用自己的 App 獲益</a></dt> + <dd> + 透過自己 App 獲益的相關要素介紹,包含所需的工具。</dd> + <dt> + <a href="/en-US/docs/Web/Apps/Publishing/Marketplace_Payments">Marketplace 付款</a></dt> + <dd> + 了解 App 將如何搭配 Firefox Marketplace,以強化自己的銷售模式 (如果你的是付費 App,更能提升自己的收入)。</dd> + <dt> + <a href="/en-US/docs/Web/Apps/Publishing/In-app_payments">In-app payments</a></dt> + <dd> + 說明應如何在自己的 Web App 中建構 In-app payments</dd> + <dt> + <a href="/en-US/docs/Web/Apps/Publishing/Validating_a_receipt">檢驗收據</a></dt> + <dd> + 檢驗自己 App 購買收據的時機與方式。</dd> + <dt> + <a href="/en-US/docs/Web/Apps/Publishing/App_pricing" title="/en-US/docs/Web/Apps/Publishing/App_pricing">App 定價列表</a></dt> + <dd> + 內有價格點數 (Price point),可讓開發者為自己的付費 App 設定售價,並根據不同的幣別各對應不同的價格點數;另有處理 App 付款的相關資訊。</dd> + <dt> + <a href="/en-US/docs/Web/Apps/Publishing/Payments_Status" title="/en-US/docs/Web/Apps/Publishing/Payments_Status">付款狀態</a></dt> + <dd> + 提供目前有哪些國家已經設定 Marketplace 的 App 付款服務完畢,基本上也代表這些國家已可銷售付費 App。</dd> + </dl> + </div> + <div class="section"> + <h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5> +<ul> + <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li> + <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li> + <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li> +</ul> +<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5> +<div class="twocolumns"> + <ul> + <li><a href="/en-US/docs/Web/CSS">CSS</a></li> + <li><a href="/en-US/docs/DOM">DOM</a></li> + <li><a href="/en-US/docs/Web/HTML">HTML</a></li> + <li><a href="/en-US/docs/JavaScript">JavaScript</a></li> + <li><a href="/en-US/docs/WebAPI">WebAPI</a></li> + <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li> + <li><a href="/en-US/docs/SVG">SVG</a></li> + <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li> + <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li> + </ul> +</div> +<h5 class="Community" id="Community" name="Community">Getting help from the community</h5> +<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p> +<ul> + <li>Consult the webapps forum: <ul> + <li><a href="https://lists.mozilla.org/listinfo/dev-webapps"> 郵件討論</a></li> + + + <li><a href="http://groups.google.com/group/mozilla.dev.webapps"> 新聞群組</a></li> + <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds"> feed 消息來源</a></li> +</ul> + <ul> + <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li> + </ul> + </li> +</ul> +<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p> + </div> +</div> +<p> </p> diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/introduction_monetization/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/introduction_monetization/index.html new file mode 100644 index 0000000000..1c5993a876 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/monetization/introduction_monetization/index.html @@ -0,0 +1,77 @@ +--- +title: 介紹 ─ 應如何讓 App 創造收益 +slug: Archive/Mozilla/Marketplace/Monetization/Introduction_Monetization +translation_of: Archive/Marketplace/Monetization/Introduction_Monetization +--- +<div class="summary"> + <p>你努力打造出自己的 App,又該如何在發佈之後取得實質收益呢?不論你選用 Marketplace 付款,或是應用程式內部付費機制 (In-app payments),本頁將提供所有相關的 App 付款資訊。</p> +</div> +<div class="row topicpage-table"> + <div class="section"> + <dl> + <dt> + <a href="https://developer.mozilla.org/en-US/docs/Apps/Tutorials/General/Profiting_from_your_app">用自己的 App 創造收益</a></dt> + <dd> + 將說明該如何用自己的 App 創造收益,包含付費式 App、定價、付款作業處理。</dd> + <dt> + <a href="/en-US/Marketplace/Monetization/App_payments_guide">App 付款指南</a></dt> + <dd> + 說明付費式 App 的相關技術。</dd> + <dt> + <a href="/en-US/docs/Web/Apps/Publishing/In-app_payments">應用程式內付款 (In-app payments)</a></dt> + <dd> + 說明該如何在自己的 Web App 中建構 In-app payments 功能。</dd> + <dt> + <a href="/en-US/docs/Web/Apps/Publishing/Validating_a_receipt">檢驗收據</a></dt> + <dd> + 檢驗自己 App 購買收據的時機與方式。你可自行建構檢驗機制,亦可使用現有的函式庫。</dd> + <dt> + <a href="/en-US/docs/Web/Apps/Publishing/App_pricing" title="/en-US/docs/Web/Apps/Publishing/App_pricing">制定 App 的價格</a></dt> + <dd> + 可為自己的 App 選擇固定的「價格點數 (Price points)」,且價格點數跨不同幣別也有所差異。本文將提供 App 付費資訊。</dd> + <dt> + <a href="/en-US/docs/Web/Apps/Publishing/Payments_Status" title="/en-US/docs/Web/Apps/Publishing/Payments_Status">付款服務狀態</a></dt> + <dd> + 總結目前有哪些國家已經支援我們的 App 付款服務。另提供可發佈 App 上架的國家列表。</dd> + </dl> + </div> + <div class="section"> + <h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5> +<ul> + <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li> + <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li> + <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li> +</ul> +<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5> +<div class="twocolumns"> + <ul> + <li><a href="/en-US/docs/Web/CSS">CSS</a></li> + <li><a href="/en-US/docs/DOM">DOM</a></li> + <li><a href="/en-US/docs/Web/HTML">HTML</a></li> + <li><a href="/en-US/docs/JavaScript">JavaScript</a></li> + <li><a href="/en-US/docs/WebAPI">WebAPI</a></li> + <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li> + <li><a href="/en-US/docs/SVG">SVG</a></li> + <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li> + <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li> + </ul> +</div> +<h5 class="Community" id="Community" name="Community">Getting help from the community</h5> +<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p> +<ul> + <li>Consult the webapps forum: <ul> + <li><a href="https://lists.mozilla.org/listinfo/dev-webapps"> 郵件討論</a></li> + + + <li><a href="http://groups.google.com/group/mozilla.dev.webapps"> 新聞群組</a></li> + <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds"> feed 消息來源</a></li> +</ul> + <ul> + <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li> + </ul> + </li> +</ul> +<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p> + </div> +</div> +<p> </p> diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/payments_status/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/payments_status/index.html new file mode 100644 index 0000000000..25726a4fb5 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/monetization/payments_status/index.html @@ -0,0 +1,30 @@ +--- +title: 付款服務狀態 +slug: Archive/Mozilla/Marketplace/Monetization/Payments_Status +translation_of: Archive/Marketplace/Monetization/App_pricing +--- +<div class="summary"> + <p><span class="seoSummary"><a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 付款服務均以「國家」為單位進行,且各國有不同的定價與付款方式。本文列出已開始 Marketplace 付款服務的國家,並附上進一步資訊的連結。</span></p> +</div> +<div class="note"> + <p><strong>注意:</strong>另請參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Monetization/App_pricing">制定 App 的價格</a>》以了解價格點數,並<a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/payment.html#pay-tiers">可透過 API 取得</a>。</p> +</div> +<h2 id="各國的付款服務">各國的付款服務</h2> +<p>下列為 Marketplace 目前提供付款服務的國家。我們亦隨時努力於更多國家提供付款服務。若需要現已支援付款服務的國家清單,可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Monetization/App_pricing">制定 App 的價格</a>》。</p> +<h2 id="App_支付">App 支付</h2> +<p>下列頁面將提供各國的付款服務資訊。另請注意,目前出帳作業僅支援當地貨幣;信用卡付款僅接受英鎊、美金、歐元計價。</p> +<ul> + <li><a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/App_pricing/Payout_Brazil">Brazil (洽談中)</a></li> + <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Colombia">哥倫比亞</a></li> + <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Germany">德國</a></li> + <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Hungary">匈牙利</a></li> + <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Mexico">墨西哥</a></li> + <li><a href="/Marketplace/Monetization/App_pricing/Payout_Poland">波蘭</a></li> + <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Spain">西班牙</a></li> + <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_UK">英國</a></li> + <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_US">美國</a></li> + <li><a href="/en-US/Marketplace/Monetization/App_pricing/Payout_Venezuela">委內瑞拉</a></li> +</ul> +<h2 id="進一步了解收費費率">進一步了解收費費率</h2> +<p>若要進一步了解收費費率,請至 Firefox Marketplace 找到你自己的 App 頁面。點擊「相容性與付款 (<em>Compatibility & Payments)</em>」→「新增、管理或檢視您的付款帳號中的交易 (<em>Add manage or view transactions for your payment account</em>)」→「檢視交易 (<em>View Transactions)</em>」連結,即如下所示。</p> +<p><img alt="Transactions link" src="https://mdn.mozillademos.org/files/6567/transactions.png" style="width: 600px; height: 104px;"></p> diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/profiting_from_your_app/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/profiting_from_your_app/index.html new file mode 100644 index 0000000000..b66295dcee --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/monetization/profiting_from_your_app/index.html @@ -0,0 +1,95 @@ +--- +title: 用自己的 App 創造收益 +slug: Archive/Mozilla/Marketplace/Monetization/Profiting_from_your_app +translation_of: Archive/Marketplace/Monetization/Profiting_from_your_app +--- +<div class="summary"> +<p>開發 Web App 不只有趣,也是將自己熱情轉為實質收益的絕佳方式!本篇文章將介紹 App 付款的相關主題、說明目前已經建構的付款類型 ─ 包含付款購買 App 與應用程式內部付費 (In-app payments),以及該如何處理不同國家內所發生的交易。</p> +</div> + +<p><a class="link-https" href="https://marketplace.firefox.com/">Firefox Marketplace</a> 是專為 Web App 開發者所設計的絕佳市集,可支援付費/免費 App 與 In-app payments、多款裝置平台的 App,還有更多特色。Firefox Marketplace 具備高競爭力的定價系統,讓消費者能選用自己喜歡的付款方式。並由付款服務供應商處理付款程序,可透過消費者的信用卡或行動電話帳單收取款項。</p> + +<div class="note"> +<p><strong>注意:</strong>可參閱<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/FAQ">《Marketplace 常見問題》的〈付款〉一章</a>,了解 Marketplace 付款方面的常見問題。</p> +</div> + +<h2 id="設定付費_App">設定付費 App</h2> + +<p>完全可由開發者自行決定 App 收費與否,而且<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup/Publishing/Submitting_an_app">將 App 提交至 Firefox Marketplace</a> 的程序極為相似。Firefox Marketplace 目前支援二種 App 付款模式:</p> + +<ul> + <li>付費 App或免費增值 App (免費下載之後再購買 App 內建的物品);消費者在安裝 App 之前即付費完畢</li> + <li>續約訂閱 (已規劃完畢)</li> +</ul> + +<p>若將 App 定位為付費 App,則開發者會有不同的選擇並需制定價格;消費者也會在開始下載時完成付費。另請注意,因為必須經過 Marketplace 驗證並正確安裝 App,所以目前僅有 Firefox OS 才支援付費 App。在建構付費 App 時,可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/App_payments_guide">App 付款指南</a>》進一步了解其內部的必要程式碼。</p> + +<p>如果開發者是透過 Marketplace 收款,則消費者付款之後即可收到電子收據。開發者必須負責查驗電子收據,確認自己的 App 已正確收款。一般只要啟動 App 時就完成了查驗作業。可參閱《<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Validating_a_receipt">查驗收據</a>》以進一步了解。</p> + +<p>Mozilla 強烈建議開發者應在收費之前,讓消費者能預覽/試用 App 的功能。只要同時提供單一 App 的免費與付費版本,或透過 In-app payments 都能達到上述目的。</p> + +<h3 id="In-app_payments">In-app payments</h3> + +<p>In-app payments 讓消費者可在 App 中付款,亦即透過 App 而靈活收取多樣數位版商品與服務的款項。且 In-app payments 讓開發者強化現有 App 即可獲得更高收益;而消費者也不需再另外購買新的 App。</p> + +<p>舉例來說,In-app payments 可用於:</p> + +<ul> + <li>在遊戲中銷售特殊的功能、物品、升級系統</li> + <li>升級或解鎖額外的 App 功能</li> + <li>建構有時間限制的免費試用版</li> + <li>補充 App 中的虛擬貨幣或儲值金額</li> +</ul> + +<p>Mozilla 與 <a href="https://developers.google.com/in-app-payments/docs/">Google 的 In-Apps Payments</a> 系統運作模式極為相似。Firefox Marketplace 系統如下:</p> + +<ul> + <li>App 將簽署 JWT 請求並呼叫 JavaScript 函式,即開始付款程序。</li> + <li>將在 <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe" title="The HTML <iframe> Element (or HTML inline frame element) represents a nested browsing context, effectively embedding another HTML page into the current page. In HTML 4.01, a document may contain a head and a body or a head and a frame-set, but not both a "><code><iframe></code></a> 中啟動購買流程: + <ul> + <li>消費者透過 Mozilla Persona 登入</li> + <li>消費者完成購買程序</li> + </ul> + </li> + <li>消費者關閉視窗時,App 隨即收到 JavaScript 的回呼 (callback)</li> + <li>App 伺服器將接收簽署過的 <code>POST</code> 請求,其內並包含 Mozilla 交易 ID,確認本次購買行為完成</li> +</ul> + +<p>Firefox Marketplace 另提供 JavaScript 公用程式函式庫,可協助完成購買程序。</p> + +<h3 id="免費增值_(Freemium)_App">免費增值 (Freemium) App</h3> + +<p>若開發者想將付費版本的 App 拿掉數項功能而成為免費版本,以供消費者可預覽/試用該 App,則 Mozilla 也同樣支援此一需求。開發者可在「免費版 App」的「詳細資訊」區塊中,找到「upsell」加入付費升級的功能,即可銜接免費與付費版本的 App 並簡化此「免費增值」模式。</p> + +<h3 id="退款">退款</h3> + +<p>一旦消費者要求退款,則可能由 Mozilla、付款服務供應商,或電信營運商授權退款作業。根據各地的消費規範、信用卡退款政策、電信營運商退款政策等的差異,退款授權方式亦有所不同。此外,Mozilla 並無法處理 In-app payments 的退款作業。</p> + +<p>一旦 App 購買行為退款完畢,所對應的收據也隨即失效。因此,開發者應隨時<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Validating_a_receipt">查驗收據</a>以確保 App 是否正確授權批准。若任何 App 發生不尋常的大量退款要求,將由 Mozilla 進一步查驗。</p> + +<div class="note"> +<p><strong>注意:</strong>《<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup/Publishing/In-app_payments">應用程式內部付費 (In-app payments)</a>》提供 In-app payments 作業的豐富訊息與範例程式碼。目前 In-app payment 程序尚在實測階段,請隨時參閱更新訊息。</p> +</div> + +<div class="note"> +<p><strong>注意:</strong>若 App 使用 In-app payments 機制,則 Mozilla 建議該 App 可設定為免費下載 App。當然付費 App 同樣可使用此機制。</p> +</div> + +<h2 id="定價與款項給付">定價與款項給付</h2> + +<p>App 內部應使用正確的程式碼,且最好透過 Marketplace 檢驗 App 較為穩當。但你心裡可能還是會想著系統是如何跨國處理這些款項。</p> + +<p>Firefox Marketplace 所列出的 App,都是由付款服務供應商負責販售。這些付款服務供應商將負責處理交易、收取營業稅與增值稅 (VAT)、確認符合當地消費法規、相關出納/退款作業,以及其他應盡的零售作業。Mozilla 則是提供買家 (即 App 使用者) 與賣家 (App 開發者) 的交流場所,但完全不參與交易活動。而 <a href="http://www.bango.com">Bango</a> 則是 Firefox Marketplace 的付款服務開發商。</p> + +<p>付款處理商另負責買家 (即 App 使用者) 與賣家 (App 開發者) 之間的交易過程,包含信用卡處理在內的大小事。付款處理商一般會逐筆交易收取服務費用。開發者必須透過 <a href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心 (Firefox Marketplace Developer Hub)</a>,於各家付款處理商建立自己的帳戶。</p> + +<p>為了維持 Firefox Marketplace 的運作、不斷提升 App 平台、實踐<a href="http://www.mozilla.org/about/">我們的使命</a>,Mozilla 與合作夥伴將針對各筆交易拆帳,並另外支付交易費用。目前,若開發者是透過 Marketplace 進行交易,則每筆 App 或 In-app 銷售活動均可獲得 70% 的銷售金額 (此為必要費用與稅後總額,均已包含於消費者所看到價格之中)。而 Mozilla 與合作夥伴則收取 30%。</p> + +<p>Firefox Marketplace 未來將支援更多國家、語言、幣別。我們亦將設法提供多個語系的 Marketplace,並搭配各國所適用的付款方式。</p> + +<p>進一步了解:</p> + +<ul> + <li>《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Monetization/App_pricing">制定 App 的價格</a>》將進一步說明應如何透過「價格點數」定價,以及定價將如何搭配信用卡並扣繳稅額等事項。</li> + <li>《<a href="https://developer.mozilla.org/en-US/Marketplace/Monetization/Payments_Status">Payments status</a>》可了解目前哪些國家已經開始 App 付款作業、使用的匯率為何、開發者在各國所應注意的事項。</li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/monetization/validating_a_receipt/index.html b/files/zh-tw/archive/mozilla/marketplace/monetization/validating_a_receipt/index.html new file mode 100644 index 0000000000..8ad877280b --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/monetization/validating_a_receipt/index.html @@ -0,0 +1,132 @@ +--- +title: 驗證收據 +slug: Archive/Mozilla/Marketplace/Monetization/Validating_a_receipt +translation_of: Archive/Marketplace/Monetization/Validating_a_receipt +--- +<div class="summary"> + <p><span class="seoSummary">如果你的是付費 App,就應該檢查消費者的收據是否有效。如果開發者完全不檢查,則可能會有消費者購買 App 之後立刻退款,就變成免費取得 App 了;或可能直接從你的網站參照 manifest 檔案,就能安裝 App。如果開發者要建構收據驗證機制,可參閱本文提供的程式碼與作業流程。</span></p> +</div> +<p>收據 (Receipt) 即為消費者的 App 購買證明。收據將經由付款處理機制 (由消費者完成的交易) 產生確認資料 (Affirmation),以取得特定的數位產品。在消費者付費購買 <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 上的 App 之後,收據就隨即傳送到消費者的裝置之中。位於消費者裝置上的收據,將用在 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.install"><code>mozApps.install()</code></a> 函式的第二組參數之上。Firefox Marketplace 將使用該筆收據資料,進而呼叫 <code>install() 以完成 </code>App 的安裝。</p> +<h2 id="驗證收據的時機">驗證收據的時機</h2> +<p>開發者必須決定 App 該何時驗證收據。一般都是在消費者啟動 App 時開始驗證。如果是屬於長時間執行 App,則可以定時/定期進行驗證。例如影片串流 App 就可以每隔 20 分鐘檢查收據 1 次。</p> +<p>另請注意,如果消費者為離線狀態,App 也就無法驗證收據。開發者可決定 App 在離線時所進行的作業。為了避免打擾某些消費者,開發者可停止強制的收據驗證作業 (消費者可能進入隧道而暫時離線),只要等消費者上線時再次檢查即可。</p> +<h2 id="如何驗證收據">如何驗證收據</h2> +<p>最簡單就是使用 Firefox Marketplace 的驗證服務即可。如果你的 App 屬於「HTML-only」,也就是伺服器只會提供靜態檔案,則可使用 Mozilla 的<a href="https://github.com/mozilla/receiptverifier">「receiptverifier」JavaScript 函式庫</a>。此函式庫基本上只會將 <code>receiptverifier.js</code> 指令碼加入 App 之中,並使用 <code>verifyReceipts()</code> 函式。可參閱上述連結以進一步了解。</p> +<h2 id="收據內容">收據內容</h2> +<p>Open Web App 所使用的收據,均為可攜式、可驗證的「Token」購買證明,即所謂 <a href="http://self-issued.info/docs/draft-jones-json-web-token.html">JSON Web Token</a> (JWT) 的數位簽署 JSON 資料架構,且此格式可讓所有用戶端與伺服器讀取。許多程式語言均提供 JWT 函式庫。</p> +<h2 id="應接受的收據">應接受的收據</h2> +<p>收據就是付款的證明,但 App 開發者可決定自己想要的收據類型。以下是你該檢查的要項:</p> +<ul> + <li>收據來自於售出 App 的商店。請檢查自己清單中的 <code>iss</code> 欄位。</li> + <li>自己 App 的專屬收據。如果是架設/托管式 (Hosted) App,可檢查 <code>product</code> <code>URL</code> 欄位是否正確。如果是封裝式 (Packaged) App,可檢查 <code>product storeData</code> 是否正確,直到 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=867265" title="FIXED: Identifying your packaged app from a receipt">bug 867265</a> 解決為止。除非已發出收據,否則 <code>storeData</code> 均為未知值,且發出收據之後將不再變動。</li> + <li>驗證作業的網址是位於商店的網域或子網域之下。可檢查 <code>verify</code> 的網址是否為 <code>iss</code> 欄位的子網域。</li> + <li>收據真正用於購買活動,而非測試用收據。請檢查 <code>typ</code> 欄位。</li> +</ul> +<p><a class="link-https" href="https://github.com/mozilla/receiptverifier">receipt verifier</a> 函式庫可進行其中數項檢查。</p> +<h2 id="測試用收據">測試用收據</h2> +<p>在開發期間,Firefox Marketplace 即可協助發出測試用收據,以供完整測試 App 的相關付款程序。可透過 Firefox 開發者交流中心 (Firefox Developer Hub) 的<a href="https://marketplace.firefox.com/developers/test/receipts/">公用程式頁面</a>產生測試用收據。此種收據將具備「<code>test-receipt</code>」的 <code>typ</code>。且 App 只會在開發期間接收這類收據,一旦上架之後就<b>停止接收</b>;否則消費者可略過 App 銷售程序,直接使用測試用收據。</p> +<p><a class="link-https" href="https://github.com/mozilla/receiptverifier">receipt verifier</a> 函式庫預設不會接收 <code>test-receipts</code>。</p> +<h2 id="收據驗證">收據驗證</h2> +<p>在沒有 JWT 函式庫的情況下,開發者也能在收據的 <code>verify</code> 欄位中,找到驗證服務的對應網址,並將收據傳送給驗證服務。各個 App 均具備不同的 Firefox Marketplace 驗證服務網址。</p> +<p>下列範例程式碼可於收據中顯示 <code>verify</code> 網址。該程式碼將用於 Firefox 的「網頁主控台 (Web console)」開發者工具。</p> +<pre class="brush: js"><span class="kd">var</span> <span class="nx">request</span> <span class="o">=</span> <span class="nx">navigator</span><span class="p">.</span><span class="nx">mozApps</span><span class="p">.</span><span class="nx">getSelf</span><span class="p">();</span> +request.onsuccess = function() { + // Get the app's receipt and decode it + console.log(atob(request.result.receipts[0].split('~')[1].split('.')[1])); +};</pre> +<p>為了取得 <code>verify</code> 網址,此範例將近行下列作業:</p> +<ul> + <li>針對由 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.getSelf">mozApps.getSelf()</a> (對目前 App 的參照) 所回傳的物件,將之儲存於 <code>request</code> 變數中。</li> + <li>如果請求成功,則會檢索 App 的第一筆收據,且將切割由 JWT 送進的值,以取得包含收據的實際部位。</li> + <li>透過 JavaScript 的 <code>{{ domxref("Window.atob") }}</code> 函式,而解碼 Base64-encoded 的收據。</li> +</ul> +<p>接著是上述程式碼結果的完整範例。此即為扣除 JWT 部分的完整收據。</p> +<pre class="brush: js">{ + "product": { + "url": "http://example.com", + "storedata": "id=111111" + }, + "iss": "https://marketplace.mozilla.org", + "verify": "https://receiptcheck.marketplace.mozilla.org/verify/111111", // The verify URL + "detail": "https://marketplace.mozilla.org/en-US/purchases/111111", + "reissue": "https://marketplace.mozilla.org/en-US/app/example/purchase/reissue", + "user": { + "type": "directed-identifier", + "value": "1234-abcd99ef-a123-456b-bbbb-cccc11112222" + }, + "exp": 1353028900, + "iat": 1337304100, + "typ": "purchase-receipt", + "nbf": 1337304100 +}</pre> +<p>在開發者取得 <code>verify</code> 網址之後,就可透過 <code>POST</code> 函式,在訊息主體之內傳送完整的 JWT。驗證服務的回應即如上方所述。下列程式碼片段 (snippet),將從上列範例中取得 App 第一筆收據的完整 JWT。</p> +<pre>request.result.receipts[0]</pre> +<p>請注意,上述程式碼並不會處理 JWT 的加密部分。如果你要透過 Marketplace 驗證收據,則收據將檢查本身的加密簽章。</p> +<div class="note"> + <p><strong>注意:</strong>可在 Kumar McMillan 提供的 <a href="https://github.com/kumar303/yacht/blob/master/www/js/server-app.js">Private Yacht</a> 範例中,找到其他更高擴充性的收據驗證範例。</p> +</div> +<h2 id="App_盜版問題">App 盜版問題</h2> +<p>即使你驗證了自己付費 App 的收據,還是可能有人繞過收據機制而盜用 App。上列的收據驗證函式並無法避免此問題。</p> +<p>如果想要更好的防盜版機制,就必須設定代理伺服器,將之作為 App 與 Firefox Marketplace 之間的媒介。代理伺服器可檢查收據、IP 位址,還有更多物件。如果單一收據來自於不同的 IP 位址,且能一樣執行正確動作,則伺服器就可進行類似通知的作業。如果是大型、複雜、使用伺服器處理功能的 App,就能達到更適當、更正確的設定。</p> +<p><a class="link-https" href="https://github.com/andymckay/receipts">此 Python 程式碼</a>仍是開發中的專案,可提供某些代理伺服器的靈感。<a class="external" href="http://django-receipts.herokuapp.com/">Django Receipts</a> 則是測試用的代理伺服器,可驗證收據。開發者最好不要直接將之作為正式運行的代理伺服器,但可進行測試以了解相關機制。<a class="link-https" href="https://wiki.mozilla.org/Apps/WebApplicationReceipt">另可參閱更多資訊</a>,讓自己了解收據驗證作業。</p> +<h2 id="收據欄位">收據欄位</h2> +<p>收據應包含下列欄位:</p> +<dl> + <dt> + <code>typ</code></dt> + <dd> + 可供識別收據類型的字串,必為以下之一: + <ul> + <li><code>purchase-receipt</code> ─ 交易完成之後隨即發出的收據。這類收據應隨時能由 App 接收。</li> + <li><code>developer-receipt</code> ─ 由 App 開發者所發出的收據。一般是開發者交由自己使用的 App 商店所發出。這類收據有效期較短。</li> + <li><code>reveiwer-receipt</code> ─ 由 App 審查者所發出的收據。一般是 App 審查者透過其所位於的商店發出。這類收據只需要在審查期間接收即可,有效期較短。</li> + <li><code>test-receipt</code> ─ 在開發期間用以測試 App 所發出的收據。只要是開發期間以外,<strong>均不應該</strong>接收這類收據,有效期較短。</li> + </ul> + </dd> + <dt> + <code>product</code></dt> + <dd> + JSON 物件在識別產品時,包含收據所囊括的範圍,以及任何特定商店的資料。包含下列欄位: + <ul> + <li><code>url</code> ─ 代表該網址的根網域 (root of a domain),且沒有最後的斜線 (例如「<a class="link-https" href="https://someapp.com" rel="freelink">https://someapp.com</a>」)。一般這樣就代表了 Web App。如果是以根網域開頭的其他網址,則代表「App 內購買」。只要開發者或收據開立者覺得方便,則可使用各種路徑規則 (Path scheme)。</li> + <li><code>storedata</code> ─ 此字串為 App 所獨有,將提供給收據驗證器 (Verifier) 所用。</li> + </ul> + </dd> + <dt> + <code>user</code></dt> + <dd> + 針對完成購買作業的消費者,此 JSON 物件包含了使用者 ID,並包含下列欄位: + <ul> + <li><code>type</code> ─ 此字串內有「<code>directed-identifier</code>」值。</li> + <li><code>value</code> ─ 此字串即為消費者的專屬 ID。消費者每次購買 App,都會擁有不同的 ID。</li> + </ul> + </dd> + <dt> + <code>iss</code></dt> + <dd> + 發出收據的商店,其所屬之網域。</dd> + <dt> + <code>nbf</code></dt> + <dd> + 完成購買程序之後,顯示「Not-before」的時間戳記。時間戳記是從 1970-01-01T00:00:00Z (UTC, RFC 3339) 開始的秒數。</dd> + <dt> + <code>iat</code></dt> + <dd> + 發出收據之後,顯示「Issued-at」的時間戳記。此時間戳記的格式如同 <code>nbf</code>。可透過此數值決定收據的存在時間。</dd> + <dt> + <code>exp</code></dt> + <dd> + (選填) 代表收據過期的時間戳記。此時間戳記的格式如同 <code>nbf</code>。</dd> + <dt> + <code>detail</code></dt> + <dd> + (選填) 網址包含額外人、機均可讀取的購買細節。如果另提供購買行為的交易記錄或退款功能,則本頁亦應包含相關函式。</dd> + <dt> + <code>verify</code></dt> + <dd> + (選填) 由經過授權的 App 使用此網址,以驗證收據。另請注意,Firefox Marketplace 一定會為 App 提供此欄位。如果開發者想自己建立 App 的商城,就可能不需使用此欄位。</dd> + <dt> + <code>reissue</code></dt> + <dd> + (選填) 網址可重新發出新收據。</dd> +</dl> diff --git a/files/zh-tw/archive/mozilla/marketplace/options/hosted_apps/index.html b/files/zh-tw/archive/mozilla/marketplace/options/hosted_apps/index.html new file mode 100644 index 0000000000..69614f7cf4 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/options/hosted_apps/index.html @@ -0,0 +1,69 @@ +--- +title: 托管\架設式 (Hosted) App +slug: Archive/Mozilla/Marketplace/Options/Hosted_apps +translation_of: Archive/Mozilla/Marketplace/Options/Hosted_apps +--- +<div class="summary"> +<p><span class="seoSummary">托管\架設式 (Hosted) App 即為 Open Web App,將其所有資源 (HTML、CSS、JavaScript、manifest 檔案等) 儲存於 Web 伺服器上。本文將簡介托管\架設式 App,另有相關連結讓你從開發者的角度進一步了解相關資訊。</span></p> +</div> + +<p>與一般網站相同,托管的 Open Web App 亦透過 Web 伺服器提供其所有內容,另於 App 的根目錄中提供 <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest">App 的 manifest 檔案</a>。manifest 檔案則具備 App 的詳細資料,如相關說明、代表 App 的圖示等等。且不論是 Firefox OS 裝置、<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_android">Android 裝置</a>,或<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_desktop">桌上型電腦</a>,這些詳細資料都會用於 App 的安裝作業。一旦安裝完畢,App 就會從原本的托管伺服器動態載入其內容,並可存取 Web 上的其他資源,如 Web 伺服器上的資料庫。</p> + +<p>在 <a href="/en-US/Firefox_OS/Security/Security_model#App_Security">Firefox OS 安全模型</a>中,托管式 App 均定義為 Web App,意即這類 App 無法利用 <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">Privileged 與內部 (即 Certified) API</a>。若要利用這些 API,則必須以<a href="/en-US/Marketplace/Options/Packaged_apps">封裝式 (Packaged) App</a> 的方式來提供 App。</p> + +<div class="note"> +<p><strong>注意:</strong>Firefox Marketplace 僅支援 Firefox OS 的付費托管式,以及 Firefox OS、Firefox for Android、Firefox 的免費托管式 App。目前正開發所有平台的付費 App 支援功能。</p> +</div> + +<h2 id="App_托管選擇">App 托管選擇</h2> + +<p>開發者可自行選擇 App 的托管之處。如果你還沒選擇托管方式,則可考慮本段說明的常見托管選擇。</p> + +<h3 id="GitHub">GitHub</h3> + +<p>如果你的 Open Web App 為靜態內容 (HTML/CSS/JavaScript,但無伺服器端的處理作業),那<a class="external external-icon" href="http://pages.github.com" rel="external">GitHub Pages</a> 應該是你的不二選擇。如果你的 manifest 檔案是 <code>.webapp</code> 為附檔名,則 GitHub 就能用 <a href="https://developer.mozilla.org/en-US/Apps/Developing/Manifest#Serving_from_GitHub">correct MIME type</a> 提供 manifest 檔案。</p> + +<h3 id="一般托管解決方案">一般托管解決方案</h3> + +<p>動態的 Open Web App 需要伺服器端的處理作業,所以你可用任何常見的托管選擇 (像是你自己架設或可存取的 Web 伺服器)。你必須先確認 Web 伺服器具備相關功能。另有許多托管服務供應商已針對托管式 App 的需求 (如 <a class="external external-icon" href="http://www.heroku.com" rel="external">Heroku</a>、<a class="external external-icon" href="http://code.google.com/appengine" rel="external">Google App Engine</a>、<a class="external external-icon" href="http://aws.amazon.com/application-hosting" rel="external">Amazon App Hosting</a>),量身打造出 Web 伺服器。</p> + +<div class="note"> +<p><strong>注意:</strong>之前在安裝 Open Web App 時,必須滿足「一組來源僅能提供一個 App」的安全規範。但這項條件到 Firefox 34/Firefox OS 2.1 (可參閱<a href="https://developer.mozilla.org/en-US/Apps/Build/installable_apps_for_Firefox_OS/App_manifest_FAQ#Can_I_have_more_than_one_app_at_my_origin.3F">此 FAQ</a> 以獲得更多資訊) 已經移除。如果你仍要支援較舊版本,則可試試看在不同來源托管不同的 App (如測試\正式版本)。其中一個方法就是為 App <a href="/en-US/Marketplace/Publishing/Adding_a_subdomain">建立不同的子網域</a>,或可透過 <a href="/en-US/docs/Tools/WebIDE">WebIDE</a> 測試 App。可參閱<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/FAQs/About_app_manifests">〈manifest 檔案常見問題〉</a>以進一步了解。</p> +</div> + +<h2 id="測試托管式_App">測試托管式 App</h2> + +<p>若要將托管式 App 安裝至 Firefox OS 模擬器或實體裝置上,以利進行測試,請參閱《<a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">應用程式管理員 (App Manager)</a>》。你也可觀看《<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">自行發佈 App</a>》中所說明的步驟,透過 Web 伺服器將 App 安裝到裝置之上。</p> + +<h2 id="發佈托管式_App">發佈托管式 App</h2> + +<p>現有 2 種方式可發佈托管式 App:1). 透過 Firefox Marketplace 或 2). 自行發佈。</p> + +<h3 id="發佈於_Firefox_Marketplace">發佈於 Firefox Marketplace</h3> + +<p>你可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Publishing">App 發佈流程</a>》,了解應如何將托管式 App 提交到 Firefox Marketplace 之上。</p> + +<p>在你提交自己的托管式 App 之後,Marketplace 隨即根據你放在 Web 伺服器上的 manifest 檔案,產生新的「<strong>mini-manifes</strong>」檔案。只要消費者決定要安裝 App,則 mini-manifest 就會傳送到 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.install"><code>Apps.install()</code></a> 函式以安裝該 App。mini-manifest 僅會用於 App 的安裝與更新作業,並不會用於 App 執行期間。</p> + +<h3 id="自行發佈">自行發佈</h3> + +<p>你當然也能在 Firefox Marketplace 以外發佈托管式 App,也就是透過自己架設的 Web 伺服器。可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Publishing/Publish_options">自行發佈 App</a>》。</p> + +<h2 id="更新托管式_App">更新托管式 App</h2> + +<p>共有 2 種方式可更新托管式 App:</p> + +<ul> + <li>在 App 所托管的 Web 伺服器上進行變更,消費者在下次執行 App 時就能獲得更新檔案。</li> + <li>將新版 App 提交到 Firefox Marketplace 之後,就會隨之更新 mini-manifest 所控制的裝置內容,如如 App 的圖示或名稱。</li> +</ul> + +<p>若要進一步了解在 Firefox Marketplace 上更新 App 的方法,可參閱《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Publishing/Updating_apps">更新 App</a>》;若是自行發佈的 App,則可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">自行發佈 App</a>》。</p> + +<h2 id="另請參閱">另請參閱</h2> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Security_model">Firefox OS 安全性概述</a></li> + <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Application_security">App 安全性</a></li> + <li><a class="external external-icon" href="https://github.com/robnyman/Firefox-OS-Boilerplate-App" title="https://github.com/robnyman/Firefox-OS-Boilerplate-App">Firefox OS 的「Boilerplate」App</a></li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/adding_a_subdomain/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/adding_a_subdomain/index.html new file mode 100644 index 0000000000..27d7c108df --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/adding_a_subdomain/index.html @@ -0,0 +1,40 @@ +--- +title: 為 App 添增子網域 +slug: Archive/Mozilla/Marketplace/Publishing/Adding_a_subdomain +translation_of: Archive/Mozilla/Marketplace/Publishing/Adding_a_subdomain +--- +<div class="summary"> + <p>一組來源網域僅限容納一個 App。但若要打破此限制,則可為 App 新增子網域。每個子網域就代表不同的來源,例如 <code>app1.example.com 或 </code><code>app2.example.com</code>。建立子網域很簡單,而且大多數的網域托管服務供應商也都不額外收費。服務供應商一般會免費提供特定數量的子網域。以下即為子網域的新增範例。</p> +</div> +<h2 id="新增子網域的常見步驟">新增子網域的常見步驟</h2> +<ol> + <li>登入托管服務供應商的管理介面,找到自己所使用的網域。</li> + <li>找到設定網域的頁面。</li> + <li>找到可新增子網域的功能。</li> + <li>新增子網域、指定子網域檔案的儲存路徑、儲存你所完成的變更。</li> + <li>將自己的 App 檔案放進你在上個步驟所指定的伺服器路徑中。</li> + <li>實際以瀏覽器開啟該路徑,檢驗新的子網域已確實產生。</li> +</ol> +<p>接著將說明該如何透過特定托管工具新增子網域。</p> +<h2 id="以_cPanel_新增子網域">以 cPanel 新增子網域</h2> +<p>這裡提供 cPanel 建立子網域的範例。cPanel 是 Web 托管控制台,已有多家托管服務供應商採用。每個開發者的 cPanel 頁面可能因設定方式而略有不同。這裡僅提供整個介面的基本概念。</p> +<ol> + <li>登入 cPanel。</li> + <li>往下捲動找到「Domains」區塊。 + <p><img alt="" src="/files/4007/cpanel-domains1.png" style="width: 527px; height: 181px;"></p> + </li> + <li>點擊「<em>Subdomains</em>」即開啟「<em>Subdomains</em>」頁面。 + <p><img alt="" src="/files/4011/subdomain.png" style="width: 802px; height: 300px;"></p> + </li> + <li>在「<em>Subdomain</em>」文字框中輸入子網域名稱。我們這裡先以「newsubdomain」為例。</li> + <li>再點入「<em>Document Root</em>」文字框。隨著顯示的路徑,就是儲存新子網域檔案的路徑。我們這裡先以「<code>/public_html/newsubdomain</code><code>」為例。如果開發者想把 App 檔案儲存到其他位址,亦可依自己需要更改。假設你的 App 檔案位於「</code><code>public_html/gamedev_com/games/coolgame/</code><code>」,則可於「</code>Document Root<code>」文字框中鍵入該路徑。</code><img alt="Document root" src="/files/4035/subdomain2.png" style="width: 768px; height: 163px;"></li> + <li>點擊「<em>Create</em>」按鈕,即可收到確認訊息。</li> + <li>將 App 檔案放進你指定的子網域路徑中。我們這裡先使用名為「<code>index.html</code>」的簡單 HTML,將顯示「This is on a new subdomain!」。</li> + <li>確認新的子網域現已存在。開啟瀏覽器並輸入新的網域名稱。根據我們所使用的範例,即如下圖所示: + <p><img alt="New subdomain in browser" src="/files/4037/subdomain3.png" style="width: 696px; height: 204px;"></p> + </li> +</ol> +<h2 id="以_Go_Daddy_新增子網域">以 Go Daddy 新增子網域</h2> +<p>可觀看此<a href="http://www.youtube.com/watch?v=Nw5mi8ihA5A" title="http://www.youtube.com/watch?v=Nw5mi8ihA5A">影片</a>,為 Go Daddy 所托管的網域添增子網域。</p> +<div> + </div> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/creating_a_store/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/creating_a_store/index.html new file mode 100644 index 0000000000..968dce2720 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/creating_a_store/index.html @@ -0,0 +1,22 @@ +--- +title: 設立自己的 App 商店 +slug: Archive/Mozilla/Marketplace/Publishing/Creating_a_store +translation_of: Archive/Marketplace/Options/Creating_a_store +--- +<div class="summary"> + <p>任何 Web 網站若具備豐富的圖片與互動經驗,則 Web 瀏覽器可透過Mozilla 的 App 專案平台,將這類網站識別為「Web App」,進而能跨裝置安裝並同步這些網站。開發者現可透過此項特性,將已發佈的 App 整理到目錄與商店中。接著說明相關步驟。</p> +</div> +<h2 id="與瀏覽器整合">與瀏覽器整合</h2> +<p>App 平台即提供「<a href="https://developer.mozilla.org/en-US/docs/Web/API/navigator.mozApps" title="Returns an Apps object you can use to install, manage, and control Open Web Apps in the browser."><code>navigator.mozApps</code></a>」這個 JavaScript 物件,可作為商店與瀏覽器之間的溝通橋樑。</p> +<p>Web App 是根據其網域所辨識而得。而一個來源網域就只會有一個 App。針對目錄或商店,開發者可透過 <a href="https://developer.mozilla.org/en-US/Apps/Developing/JavaScript_API">App Installation API 與 App Management API</a>,讓瀏覽器觸發 <a href="https://developer.mozilla.org/en-US/docs/Web/API/apps.install" title="Triggers the installation of an app. During the installation process, the app is validated and the user is prompted to approve the installation."><code>apps.install</code></a> 函式並提示 App 的安裝作業,另提供 App 的 manifest 檔案網址,以及任何想要補充的後設資料 (metadata)。開發者可存取此筆後設資料,以查閱消費者的購買資訊、確認單一登入狀態 (SSO),或其他服務。</p> +<h3 id="使用_getInstalled()">使用 getInstalled()</h3> +<p>只要 App 是根據你的網域而安裝於目前的瀏覽器上,均可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.getInstalled"><code>navigator.mozApps.getInstalled()</code></a> 函式取得此類 App 的清單。另請注意,開發者不會看到其他網域所安裝的 App,只會看到放在自己網域中的 App。</p> +<p>開發者可透過此函式而了解消費者安裝的 App 是否符合你的預期。即使消費者是以新帳戶登入你的網站,亦可透過「resync」功能而再次安裝既有的 App。</p> +<h2 id="到底該不該托管?">到底該不該托管?</h2> +<p>針對托管式 App,商店只需該網站的 manifest 網址,即可觸發 App 的安裝作業 (<a href="https://developer.mozilla.org/en-US/docs/Web/API/apps.install" title="Triggers the installation of an app. During the installation process, the app is validated and the user is prompted to approve the installation."><code>apps.install</code></a>)。該 App 檔案不一定要儲存於商店或目錄之下。</p> +<p>如果 App 沒有伺服器的邏輯元件 (也就是完全以用戶端 JavaScript、HTML、CSS 所建構的 App),開發者就可能會想建構出托管功能。此時必須為各 App 指派不同的網域名稱,並針對各 App 的 manifest 檔案建構伺服邏輯,才能使用托管功能。</p> +<p>如果你現在正自行托管 App 邏輯,則可輕鬆維護和消費者之間的會話 (Session),進而追蹤消費者的喜好、購買證明,或其他服務。如果你要針對遠端網站提供服務,就必須完成額外作業,才能支援分散式的認證系統。</p> +<div class="note"> + <p><strong>注意:</strong><a href="http://firefox-marketplace-api.readthedocs.org/en/latest/">Firefox Marketplace API</a> 內含的功能,讓開發者只耗費最小程度的心血,即可迅速設立自己的 App 商店。</p> +</div> +<p> </p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/index.html new file mode 100644 index 0000000000..280345b59e --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/index.html @@ -0,0 +1,9 @@ +--- +title: Publishing +slug: Archive/Mozilla/Marketplace/Publishing +tags: + - NeedsTranslation + - TopicStub +translation_of: Archive/Mozilla/Marketplace/Publishing/Introduction +--- +<p>Marketplace publishing</p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/introduction/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/introduction/index.html new file mode 100644 index 0000000000..0cdc397b2e --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/introduction/index.html @@ -0,0 +1,87 @@ +--- +title: 介紹 — App 發佈流程 +slug: Archive/Mozilla/Marketplace/Publishing/Introduction +translation_of: Archive/Mozilla/Marketplace/Publishing/Introduction +--- +<div class="summary"> + 你到這裡應該已經知道該如何<a href="/en-US/Marketplace/Prepare/Introduction">打造成功的 App</a>、選擇 <a href="/en-US/Marketplace/Options/Introduction">App 發佈平台 (甚或發佈到 Firefox OS 以外的平台)</a>、撰寫並側試過自己的程式碼。現在應該著手將 App 發表給全球的使用者知道,並於 Firefox Marketplace 上發佈。本文將引導你<span class="seoSummary">完成相關程序,讓你順利於 Firefox Marketplace 上發佈自己的 Open Web App,並能隨時更新檔案及有用的附加資訊。 </span></div> +<div class="column-container"> + </div> +<div class="row topicpage-table"> + <div class="section"> + <h2 class="Community" id="Community" name="Community">發佈指南</h2> + <dl> + <dt> + <a href="/en-US/Marketplace/Publishing/Submission_checklist">提交作業檢查清單</a></dt> + <dd> + 提交 App 前的準備工作。</dd> + <dt> + <a href="/en-US/Marketplace/Publishing/Marketplace_review_criteria">Marketplace 審查</a></dt> + <dd> + 審查 App 時的程序與準則。</dd> + <dt> + <a href="/en-US/Marketplace/Publishing/Pricing/Introduction">設定付費 App 與應用程式內付款 (In-app payment)</a></dt> + <dd> + Marketplace 的相關功能,可設定付費式 App 與應用程式內的付款項目。另將說明 Firefox Marketplace 是如何使用第三方的付費服務,並建立廠商的帳戶。</dd> + </dl> + <h2 class="Community" id="Community" name="Community">策略與指南</h2> + <dl> + <dt> + <a href="/en-US/Apps/Build/Icon_implementation_for_apps#Firefox_OS">圖示 (應用程式中心)</a></dt> + <dd> + 根據 Firefox OS 的不同版本,取得詳細的圖示尺寸。</dd> + </dl> + <dl> + <dt> + <a class="external external-icon" href="https://www.mozilla.org/en-US/styleguide/products/firefox-os/icons/">圖示設計 (Mozilla 風格指南)</a></dt> + <dd> + 你的 App 或 In-app 產品圖示,必須符合圓形或方形設計。進一步參閱 Mozilla 風格指南。</dd> + </dl> + <dl> + <dt> + <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies#Mozilla_Marketplace_privacy_requirements">隱私權政策</a></dt> + <dd> + 如果你的 App 會取得使用者的個人資料,就必須另外具備隱私權政策。指南內所提供的資訊,均必須納入你的 App 隱私權政策之中。</dd> + </dl> + <dl> + <dt> + <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Marketplace_screenshot_criteria">擷圖指南</a></dt> + <dd> + 若要讓自己的 App 在 Marketplace 順利上架,所提供的擷圖必須符合相關規範。</dd> + <dt> + <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting">App 測試與疑難排解</a></dt> + <dd> + 帶領你設定測試環境、實際測試 App,並解決你所發現的問題或錯誤。</dd> + </dl> + </div> + <div class="section"> + <h2 class="Community" id="Community" name="Community">提交 App</h2> + <dl> + <dt> + <a href="/en-US/Marketplace/Publishing/Submit/Overview">App 提交程序指南</a></dt> + <dd> + 你已經準備好發佈第一個 App;也可能要以自己沒用過的方式封裝/發佈 App。到這裡了解該如何將 App 提交到 Firefox Marketplace 之上。</dd> + </dl> + <h2 class="Community" id="Community" name="Community">更新 App</h2> + <dl> + <dt> + <a href="/en-US/Marketplace/Publishing/Updating_apps">更新 App</a></dt> + <dd> + 不論是要添增新功能或是修正錯誤 (當然最好不要是錯誤),定期提供 App 更新檔,才能保持 App 的能見度。本文將說明應如何透過 Firefox Marketplace 遞交 App 的更新檔案。</dd> + </dl> + <h2 class="Community" id="Community" name="Community">管理已發佈的 App</h2> + <dl> + <dt> + <a href="/en-US/Marketplace/Publishing/Managing_your_apps/Introduction_Managing_your_apps">App 管理指南</a></dt> + <dd> + 在發佈 App 之後,你可能想更改某個地方,或了解消費者對該 App 的接受度為何。本文將帶領你變更 App 的狀態、檢視統計資料、檢查於 Firefox Marketplace 上所獲得的評價。</dd> + </dl> + <h2 id="更多工具">更多工具</h2> + <dl> + <dt> + <a href="/en-US/Marketplace/Publishing/Adding_a_subdomain">為自己的 App 添增子網域</a></dt> + <dd> + 如果要從自己的網站上提供超過 1 個的架設/托管式 (Hosted) App,就必須逐一建立子網域。本文將說明添增子網域的方式。</dd> + </dl> + </div> +</div> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/managing_your_apps/app_statistics/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/managing_your_apps/app_statistics/index.html new file mode 100644 index 0000000000..6454ca8f31 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/managing_your_apps/app_statistics/index.html @@ -0,0 +1,66 @@ +--- +title: App 統計資料 +slug: Archive/Mozilla/Marketplace/Publishing/Managing_your_apps/App_Statistics +translation_of: Archive/Mozilla/Marketplace/Publishing/Managing_your_apps/App_Statistics +--- +<div class="summary"> +<p>Firefox Marketplace 可提供 App 的多樣統計資料。本文將說明應如何取得自己<span class="seoSummary"> App 在 Firefox Marketplace 上的統計資料、報表資料的呈現方式,另可審閱報表內的特定資訊、可用的報表,並使用已匯出的報表資料。</span></p> +</div> + +<h2 id="取得_App_的狀態">取得 App 的狀態</h2> + +<p>若要取得任何已發佈 App 的狀態,須先到 Firefox Marketplace 點擊「<strong>開發者交流中心 (Developer Hub)</strong>」,再進入「我的提交 (<strong>My Submissions)</strong>」。所有已發佈的 App 都能看到 (1)「統計資訊 (<strong>Statistics</strong>)」連結。</p> + +<p><img alt="In My Submissions, for each published app you will find a link to the app's stats page" src="https://mdn.mozillademos.org/files/8281/Stats%20link.png" style="width: 990px; height: 210px;"></p> + +<h2 id="報表介紹">報表介紹</h2> + +<p>在開啟了 App 的統計資訊之後,就會進入下方的統計資料表。此頁將摘要呈現目前可用的統計報表資料。</p> + +<p><img alt="The stats dashboard provides a visual summary of your app's stats and links to the 5 reports" src="https://mdn.mozillademos.org/files/8285/Stats%20Dashboard.png" style="width: 1041px; height: 723px;"></p> + +<p>開發者可在此頁看到下列報表:</p> + +<ul> + <li><strong>Installs</strong>:App 完整安裝的次數</li> + <li><strong>Visits</strong>:App 在 Marketplace 列表頁面受消費者瀏覽的次數</li> + <li><strong>Ratings</strong>:提交給 App 的評分</li> + <li><strong>Abuse Reports</strong>:提交給 App 的濫用回報次數</li> + <li><strong>Average Rating</strong>:App 目前所接收的平均評分</li> +</ul> + +<p>每組報表均為相同的基礎架構,如下所示:</p> + +<p><img alt="All reports follow the same basic structure with date selector, region selector (Installs report only) graph, JSON export option and daily summary." src="https://mdn.mozillademos.org/files/8287/Report%20layout%20overview.png" style="width: 1045px; height: 1026px;"></p> + +<ol> + <li>日期選擇 — 可設定報表應顯示的開始\結束日期。</li> + <li>地區選擇 (僅 Installs 報表) — 可設定報表應顯示全世界活動資料,或個別國家\地區的資料。 + <div class="warning">在本文撰寫期間,此功能因資料加總功能的問題,先予以關閉。可參閱 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1028448">Bug 1028448</a>。</div> + </li> + <li>「更新」按鈕 — 依照目前日期與地區設定,重新整理報表內容。</li> + <li>按每日顯示的活動圖表。</li> + <li>JSON 匯出選項。</li> + <li>其他按每日顯示的活動圖表。</li> +</ol> + +<h2 id="使用匯出的資料">使用匯出的資料</h2> + +<p>你可能想在其他試算表應用中使用匯出的資料。目前尚無主流的試算表應用程式 (Microsoft 的 Excel、Apple 的 iWorks Numbers、OpenOffice 的 Calc) 能支援 JSON 格式的資料匯入功能。解決方案就是將 JSON 轉檔為 CSV 格式。此檔案格式可用於大多數的試算表應用程式。目前有許多 JSON to CSV 的線上轉檔功能:</p> + +<ul> + <li><a href="http://www.convertcsv.com/json-to-csv.htm">Convert JSON to CSV</a> 有多樣的 CSV 輸出選項,可轉換檔案或黏貼文字 (例如冒號與分號可用其他分隔符號替代),並針對轉換完成的資料提供文字顯示與 CSV 檔案下載。</li> + <li><a href="https://json-csv.com/">JSON to CSV - Online converter</a> 有多樣的 CSV 輸出選項,可轉換檔案或黏貼文字 (冒號、標籤、分號),並可顯示格式化的表格,亦可下載轉換過的資料與 CSV 檔案。另可針對轉換過的 JSON 資料建立永久連結。但免費版本將限制來源檔案須 1Mb 以下。</li> + <li><a href="http://konklone.io/json/">JSON to CSV</a> - 可將 JSON 資料貼上頁面並顯示資料表格。而資料即可下載為 CSV 檔案。你也可依照自己需要,建立 JSON\頁面的永久連結。其原始碼<a href="https://github.com/konklone/json">架設於 GitHub</a> 上,且該作者另透過<a href="http://sunlightfoundation.com/blog/2014/03/11/making-json-as-simple-as-a-spreadsheet/">此部落格文章說明此專案的背景。</a></li> +</ul> + +<p>此外還有下列資源提供程式碼,讓你能針對不同的試算表應用程式,建立自動匯入功能:</p> + +<ul> + <li>Excel + <ul> + <li><a href="https://code.google.com/p/vba-json/">VBA-JSON</a></li> + <li><a href="http://www.ediy.co.nz/vbjson-json-parser-library-in-vb6-xidc55680.html">VB-JSON</a></li> + </ul> + </li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/marketplace_screenshot_criteria/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/marketplace_screenshot_criteria/index.html new file mode 100644 index 0000000000..76f2576eff --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/marketplace_screenshot_criteria/index.html @@ -0,0 +1,80 @@ +--- +title: Marketplace 截圖準則 +slug: Archive/Mozilla/Marketplace/Publishing/Marketplace_screenshot_criteria +translation_of: >- + Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Marketplace_screenshot_criteria +--- +<div class="summary"> + <p>在將 App 提交至 Firefox Marketplace 時,開發者必須提供 1 幅或更多截圖以供使用。Marketplace 另提供此類截圖的非硬性規範,可作為開發者截圖時的準則。如果 App 截圖均未能符合本篇文章所載明的規範,則可能會要求開發者提交新的截圖。</p> +</div> +<h2 id="截圖概述">截圖概述</h2> +<ul> + <li>開發者所上傳的截圖會出現在 + <ul> + <li>各個 App 的頁面</li> + <li>如果 App 榮獲編輯或館長推薦,也會出現在「精選 App」的類似區塊中</li> + <li>Marketplace 中的多樣選單或動態播放區</li> + </ul> + </li> + <li>Marketplace 接受 3 種不同規格,共 1 ~ 6 組截圖: + <ul> + <li>手機 (直幅或橫幅)</li> + <li>平板電腦</li> + <li>桌上型電腦 (一般應達 1024x768 或以上)</li> + </ul> + </li> + <li>根據 App 所支援裝置的規格,至少各需提供 1 組截圖。</li> +</ul> +<h2 id="截圖重點">截圖重點</h2> +<ul> + <li>應要儘量呈現自己的 App 特色與功能</li> + <li>可能的話,應移除狀態列 (一般均位於手機畫面最上方,顯示時間、電池電量、電信營運商名稱等硬體資訊)</li> + <li>儘量以實體裝置取得截圖,較模擬器取得的截圖為佳</li> + <li>避免將 App 放入裝置或桌機的圖片中 + <ul> + <li>若將 App 放入裝置或桌機的圖片中,就必須縮小 App 的介面而看不清楚</li> + <li>你所呈現的裝置或桌機介面,極可能與消費者本身所使用的介面有所不同</li> + </ul> + </li> + <li>避免「手拿」手機、螢幕、平板電腦的照片</li> + <li>Marketplace 中的 App 不會用於瀏覽器中,所以避免呈現出瀏覽器的介面 (工具列、網址列、上/下一頁等)</li> + <li>儘量以最少的文字解釋該介面,而不要淪為打廣告</li> + <li>避免使用與 App 本身無關的圖素</li> + <li>避免出現邊框</li> + <li>截圖將依照上傳的順序來呈現。開發者應先上傳最漂亮的截圖</li> +</ul> +<p>總而言之,截圖應該以 App 為重點,而不是 App 周圍的情境。</p> +<h2 id="尺寸與格式">尺寸與格式</h2> +<p>截圖可為 JPG 與 PNG 格式。若是較能保有原來解析度的 PNG-24 最好。如果是 JPG 格式,則應儘量使用最小幅度的壓縮並設定為最高圖像品質。</p> +<h3 id="建議尺寸">建議尺寸</h3> +<table class="standard-table"> + <thead> + <tr> + <th scope="col">裝置規格</th> + <th scope="col">建議的解析度</th> + </tr> + </thead> + <tbody> + <tr> + <td>手機</td> + <td> + <p>320x480 的倍數、720x1280 的倍數;或 480x320 的倍數、1280x720 的倍數</p> + </td> + </tr> + <tr> + <td>平板電腦</td> + <td>1024x768 的倍數、1280x800 的倍數</td> + </tr> + <tr> + <td>桌上型電腦</td> + <td>1280x800 的倍數、1440x900 的倍數</td> + </tr> + </tbody> +</table> +<h2 id="範例">範例</h2> +<p>不要出現與 App 無關的圖素,如廣告或商標。</p> +<p><img alt="" src="https://mdn.mozillademos.org/files/6313/no-ads.png" style="width: 640px; height: 360px;"></p> +<p>不要提供「手拿著裝置」的照片,或將截圖編輯到實體裝置之上。</p> +<p><img alt="" src="https://mdn.mozillademos.org/files/6315/no-hand.png" style="width: 640px; height: 360px;"></p> +<p>截圖不需使用/添加裝置的邊框、不必要的文字、其他不必要的特色。</p> +<p><img alt="" src="https://mdn.mozillademos.org/files/6317/no-simulated-device.png" style="width: 640px; height: 360px;"></p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/packaged_apps/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/packaged_apps/index.html new file mode 100644 index 0000000000..cf9937c110 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/packaged_apps/index.html @@ -0,0 +1,75 @@ +--- +title: 封裝式 (Packaged) App +slug: Archive/Mozilla/Marketplace/Publishing/Packaged_apps +translation_of: Archive/Mozilla/Marketplace/Options/Packaged_apps +--- +<p><span class="seoSummary"><strong>封裝式</strong><strong> (Packaged) App</strong> 屬於 Open Web App,即以 ZIP 壓縮檔納入其 HTML、CSS、JavaScript、manifest 檔案等所有資源,不像之前必須將資源置於網路伺服器之中。本篇文章將為開發者提供封裝式 App 的相關說明 。</span></p> +<p>封裝式 App 為 ZIP 壓縮檔,內含 Open Web App 能夠運作的所有資源,並將 <a href="https://developer.mozilla.org/docs/Apps/Manifest">manifest</a> 檔案置於其根目錄之下,且此 manifest 檔案將提供 App 本身的說明、圖示等資訊,以利辨識出已安裝的 App。此封包接著可將 App 安裝到 Firefox OS 裝置、<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_android">Android 裝置</a>、<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_desktop">桌機</a>之中。一旦在裝置上安裝 App 之後,仍可存取 Web 上的資源,如伺服器上的資料庫。</p> +<p><a href="https://developer.mozilla.org/zh-TW/Apps/Developing/Packaged_apps/Packaged_apps$edit#types_of_packaged_apps">封裝式 App 另可分為三類:</a>Web App、Privileged App、Certified App。封裝式 App 可作為任何形式的 Open Web App;Privileged 與 Certified App 則是透過數位簽章的方式,啟動 <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">Privileged 與 Certified API</a>。Privileged App 簽章之後即成為 Marketplace 審查流程的一部分;Certified App 則是由裝置製造商或電信營運商進行簽章。</p> +<p>封裝式 App 除了能使用 Privileged 與 Certified API 之外,也能在安裝之後更快取得裝置的資源,達到更快的首次啟動速度。基於這些特色,我們也針對 Firefox OS 裝置、<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_android">Android 裝置</a>、<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Open_web_apps_for_desktop">桌機</a>,均建議以封裝式 App 的形式提供 Open Web App。</p> +<div class="note"> + <p><strong>注意:</strong>目前 Firefox Marketplace 上所支援的付費封裝式 App,僅限為 Firefox OS App。而免費封裝式 App 已可支援 Firefox OS、行動版 Firefox (Firefox for Android)、桌面版 Firefox。現正開發可支援所有平台的付費 App。</p> +</div> +<div class="note"> + <p><strong>注意:</strong>你會在 Firefox 開發者工具的「應用程式管理員 (App Manager)」看到「manifest」中文翻譯為「安裝資訊檔」。</p> +</div> +<h2 id="封裝式_App_的類型"><strong>封</strong>裝<strong>式</strong><strong> App </strong><strong>的類型</strong></h2> +<p>封裝式 App 可分為 Web App、Privileged App、Certified App,且均可對應 Firefox OS 不同程度的 <a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Security_model#App_Security">App 安全性</a>模式。接著將提供進一步資訊。</p> +<h3 id="Web_app">Web app</h3> +<p>Web App 不會使用 Privileged 或 Certified API。在提交到 Marketplace 之後,App 的封包隨即簽章完成,但仍尚未執行 Privileged 或 Certified App 所使用的特殊授權程序。也因此 Web App 不能使用 Privileged 或 Certified API。這些 App 也不需要 Privileged 與 Certified App 所必備的<a href="https://developer.mozilla.org/en-US/Apps/CSP">內容安全政策</a> (CSP)。</p> +<p>這種封裝式 App 的 <code>manifest.webapp</code> 檔案中,不需要 <code>type</code> 欄位。其 <code>type</code> (<code>web</code>) 的預設值就是正確的值。</p> +<p>Web App 可<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">自行發佈</a>,或可透過 Firefox Marketplace 發佈。Web App 亦可透過<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Hosted_apps">架設/托管式 App</a> 的機制對外提供。</p> +<h3 id="Privileged_app">Privileged app</h3> +<dl> + <dt> + </dt> + <dd> + Privileged app 是由 Firefox OS Marketplace 以特殊程序核准之後發出。如果任一 App 要存取裝置上的特定 Sensitive API,則可為使用者提供更高的安全性。此種 App 即等同 iOS 或 Android 平台上的原生 App。若要指定為 Privileged App,必須在其 <code>manifest.webapp 檔案中添增</code> <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#type"><code>type</code></a> 欄位並設定為 <code>privileged</code>。App 所要存取的 privileged API,均必須加入 <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest">manifest</a> 檔案的 <code>permissions</code> 欄位中。</dd> + <dd> + Firefox OS、Web runtimes for Android、桌機,將針對 Privileged App 強制使用下列 <a href="https://developer.mozilla.org/en-US/docs/Security/CSP/Introducing_Content_Security_Policy">CSP</a>:</dd> +</dl> +<dl> + <dd> + <pre>"default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'"</pre> + <p>Privileged App 僅能透過 Firefox Marketplace 發佈。</p> + </dd> + <dt> + </dt> +</dl> +<h3 id="Certified_app">Certified app</h3> +<dl> + <dt> + </dt> + <dd> + <div class="geckoVersionNote"> + <p>一般第三方開發者並不會接觸到 Certified App;且 Certified App 也不會透過 Firefox Marketplace 發佈。這類 API 的長遠目標,就是要讓本身的憑證更完善、更具公信力,進而也能作為 Privileged API。如果你不是很想架構特定的 API,也可直接在 <a href="https://lists.mozilla.org/listinfo/dev-webapps">dev-webapps</a> 郵件群組中反應。</p> + </div> + </dd> + <dd> + Certified App 將透過 Certified API 而存取重要的系統功能,如智慧型手機上預設的撥號鍵盤,或系統設定 App。與 Privileged App 相較,並不會用於第三方 App,所以大多數的 App 開發者可忽略此類 App。除了所有的裝置許可均為隱式許可 (Implicit permission,意即不需要外部的使用者許可) 之外,Certified 與 Privileged App 大部分均屬於相似的封裝式 App。而 Certified App 必須取得 OEM 裝置或電信營運商裝置的許可,才能讓此隱式 App 使用重要 API。若要將 App 指定為 Certified App,則需於其 <code>manifest.webapp</code> 檔案中添增 <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#type"><code>type</code></a> 欄位並設定為 <code>certified</code>。</dd> + <dd> + Firefox OS 則針對 Certified App 建構了下列 CSP: + <pre>"default-src *; script-src 'self'; object-src 'none'; style-src 'self'"</pre> + 與 Certified App 相較,Privileged App 則是針對 inline CSP 的影響而稍微放寬了限制。進一步了解其原因,可參閱<a href="https://wiki.mozilla.org/Apps/CSP">預設 CSP</a> 與 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=768029">Bug 768029</a>。<br> + <br> + OEM 廠商與電信營運商均已將 Certified App 安裝到裝置之上。</dd> + <dt> + </dt> +</dl> +<h2 id="測試封裝式_App"><strong>測試封</strong>裝<strong>式</strong><strong> App</strong></h2> +<p>如果要透過 Firefox OS 模擬器 (Firefox OS Simulator),測試 Firefox OS 裝置在安裝封裝式 App 的情形,可參閱<a href="https://developer.mozilla.org/zh-TW/Firefox_OS/Using_the_App_Manager">《應用程式管理員 (App Manager)》</a>。開發者也能透過《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Publishing/Publish_options">App 發佈方式</a>》中的步驟,從一般網頁伺服器上安裝該 App 到裝置上。另請注意,如果你要自己發佈 App,就只能安裝封裝式 Web App。</p> +<h2 id="發佈封裝式_App">發佈封裝式 App</h2> +<p>有兩種方式可發佈封裝式 App:透過 Firefox Marketplace 或自行發佈。</p> +<h3 id="透過_Firefox_Marketplace_發佈">透過 Firefox Marketplace 發佈</h3> +<p>可參閱 <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing">App Publishing</a>,將封裝式 App 提交到 Firefox Marketplace 之上。</p> +<p>在提交封裝式 App 時,其 zip 檔案即儲存於 Marketplace 伺服器之上,且 Marketplace 將根據封裝式 App 的 zip 檔案中的 manifest,產生新的「<strong>mini-manifest</strong>」檔案。在消費者安裝 App 時,隨即將 mini-manifest 傳送至 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.installPackage"><code>Apps.installPackage()</code></a> 函式以安裝該 App。僅安裝與更新程序才會使用 mini-manifest。App 執行期間並不會使用此檔案。</p> +<h3 id="自行發佈">自行發佈</h3> +<p>當然也能在 Firefox Marketplace 之外,也就是自己的網路伺服器上發佈封裝式 App。可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">自行發佈 App</a>》。</p> +<h2 id="更新封裝式_App"><strong>更新封</strong>裝<strong>式 A</strong>pp</h2> +<p>若要進一步了解更新作業,請參閱《<a href="https://developer.mozilla.org/docs/Apps/Updating_apps">更新 App</a>》。</p> +<h2 id="更多資訊">更多資訊</h2> +<ul> + <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Security_model">Firefox OS 安全性概述</a></li> + <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Security/Application_security">應用程式安全性</a></li> + <li><a href="https://github.com/robnyman/Firefox-OS-Boilerplate-App" title="https://github.com/robnyman/Firefox-OS-Boilerplate-App">Firefox OS Boilerplate App</a></li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/index.html new file mode 100644 index 0000000000..d914835648 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/index.html @@ -0,0 +1,10 @@ +--- +title: Policies and Guidelines +slug: Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines +tags: + - NeedsTranslation + - Structure + - TopicStub +translation_of: Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines +--- +<p>This section contains Firefox Marketplace policies and guidelines</p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/introduction/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/introduction/index.html new file mode 100644 index 0000000000..230c5d714a --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/policies_and_guidelines/introduction/index.html @@ -0,0 +1,39 @@ +--- +title: 簡介 ─ 政策與指南 +slug: Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Introduction +translation_of: Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Introduction +--- +<div class="summary"><span class="seoSummary">本文將提供 Firefox Marketplace 所用的多項政策與指南。</span></div> + +<div class="column-container">下列政策與指南均為 Firefox Marketplace 所用:</div> + +<div class="column-container"> </div> + +<div class="row topicpage-table"> +<div class="section"> +<h2 class="Community" id="Community" name="Community">政策</h2> + +<dl> + <dt><a href="/en-US/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies#Mozilla_Marketplace_privacy_requirements">隱私權政策</a></dt> + <dd>如果 App 需用到消費者的個人資料,就必須提供隱私權政策。</dd> +</dl> +</div> + +<div class="section"> +<h2 class="Tools" id="Tools" name="Tools">指南</h2> + +<dl> + <dt><a href="/en-US/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies">隱私權政策</a></dt> + <dd>如果 App 需用到消費者的個人資料,則相關指南可提供 App 隱私權政策中所需的資訊。</dd> +</dl> + +<dl> + <dt><a href="/en-US/Marketplace/Publishing/Policies_and_Guidelines/Marketplace_screenshot_criteria">截圖指南</a></dt> + <dd>為 App 截圖的相關指南,且截圖亦可用於 Marketplace 上架展示。</dd> + <dt><a href="/en-US/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting">App 測試與疑難排解</a></dt> + <dd>相關資訊將說明測試環境的設定方式,以利測試 App 並解決可能發現的問題。</dd> +</dl> +</div> +</div> + +<p> </p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/introduction/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/introduction/index.html new file mode 100644 index 0000000000..6c505166dd --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/introduction/index.html @@ -0,0 +1,57 @@ +--- +title: 簡介 — 制定 App 的價格 +slug: Archive/Mozilla/Marketplace/Publishing/Pricing/Introduction +translation_of: Archive/Marketplace/Publishing/Pricing/Introduction +--- +<div class="warning"> +<p>本文將陸續新增相關內容,請隨時注意更新資訊。</p> +</div> + +<div class="summary">要讓自己的 App 透過 Firefox Marketplace 獲得收益很簡單:為自己的帳戶設定 1 或更多的付款服務供應商,再設定 App 價格與發售國家 (免費 App 也能讓消費者升級為付費版本)。如果你要使用「應用程式內付款 (In-app payment)」功能,就必須取得 API 金鑰並定義 App 內販售的產品。本文將帶領你在 <span class="seoSummary">Firefox Marketplace</span> 中設定付費的<span class="seoSummary">Open Web App 及其內部販售產品,另提供有用的相關資訊。</span></div> + +<div class="column-container"> </div> + +<div class="row topicpage-table"> +<div class="section"> +<h2 class="Community" id="Community" name="Community">設定付費 App</h2> + +<dl> + <dt><a href="/en-US/Marketplace/Publishing/Pricing/Payment_Accounts">付費帳戶</a></dt> + <dd>設定帳戶的付款服務供應商,才能收取 App 售出及其內部付款的收益。</dd> + <dt>訂價 (敬請期待)</dt> + <dd>設定 App 價格與銷售國家等選項。</dd> + <dt><a href="/en-US/Marketplace/Publishing/Pricing/Promote_as_upgrade_to_free_version">以「升級」方式推廣</a></dt> + <dd>免費 App 亦可升級為付費 App。</dd> +</dl> + +<h2 class="Community" id="Community" name="Community">更多資訊</h2> + +<dl> + <dt> </dt> + <dt><a href="/en-US/Marketplace/Monetization/Validating_a_receipt">檢驗收據</a></dt> + <dd>該如何檢查消費者是否付款購買 App。</dd> + <dt><a href="/en-US/Marketplace/Monetization/App_pricing">價格點數</a></dt> + <dd>依國家訂價的相關資訊。</dd> +</dl> +</div> + +<div class="section"> +<h2 class="Community" id="Community" name="Community">設定應用程式內付款</h2> + +<dl> + <dt>取得自己的 API 金鑰 (敬請期待)</dt> + <dd>為自己的 App 取得 API 金鑰。</dd> + <dt><a href="/en-US/Marketplace/Publishing/Pricing/In-app_products">定義應用程式內販售的產品</a></dt> + <dd>於 Marketplace 上設定 fxPay 的應用程式內產品。</dd> +</dl> + +<h2 id="更多資訊">更多資訊</h2> + +<dl> + <dt><a href="/en-US/Marketplace/Monetization/Validating_a_receipt">檢驗收據</a></dt> + <dd>該如何檢查消費者是否付款購買 App 內販售的產品。</dd> +</dl> +</div> +</div> + +<p> </p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/payment_accounts/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/payment_accounts/index.html new file mode 100644 index 0000000000..e6938f4336 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/payment_accounts/index.html @@ -0,0 +1,61 @@ +--- +title: 付款帳號 +slug: Archive/Mozilla/Marketplace/Publishing/Pricing/Payment_Accounts +translation_of: Archive/Marketplace/Publishing/Pricing/Payment_Accounts +--- +<div class="summary"> +<p>如果要在 Firefox Marketplace 設定付款 App 或應用程式內付款 (In-app payment) 產品,首先就是設定 1 家或更多的付款服務供應商。本文將說明 Firefox Marketplace 搭配多家供應商的理由、提交程序中所應完成的設定,另提供各家供應商的<strong>帳號</strong>資訊。</p> +</div> + +<h2 id="付款服務供應商">付款服務供應商</h2> + +<p>目前配合 Firefox Marketplace 活躍中的付款服務供應商就是「Bango」,當然 Firefox Marketplace 未來將支援其他供應商。付款服務供應商可新增其他付款選項,如付款類型、電信營運商、收款國家等。另間「Boku」供應商很快就會加入 Marletplace。供應商另可透過 Marketplace 讓消費者選用其服務;但目前尚未有供應商支援此一選項。</p> + +<div class="note"> +<p>在交易付費 App 時,均必須透過 Firefox Marketplace 中的付款服務供應商之一。如果 App 亦提供應用程式內付款的產品,也可配合其他供應商,但開發者必須自行滿足必要的推銷與技術需求。</p> +</div> + +<h2 id="供應商的功能">供應商的功能</h2> + +<p>所有的付款服務供應商必須達到下列:</p> + +<ul> + <li>只要消費者購買 App 或其內付款的產品,必須能透過消費者的信用卡或電信帳單收取款項。</li> + <li>將款項分配給開發者與 Mozilla (相關收入僅用以支付 Marketplace 發展與運作費用),並收取本次交易的費用。</li> + <li>提供開發者的收益報表。</li> +</ul> + +<h2 id="設定自己的付款帳號">設定自己的付款帳號</h2> + +<p>在<strong> </strong>Marketplace<strong> </strong>提交程序的「<strong>相容性與付款 (Compatibility & Payments)</strong>」頁面上,找到「<strong>付款帳號 (Payment Accounts)</strong>」區塊並設定付款服務供應商。</p> + +<p><img alt="The Payment Accounts section of the Compatibility and Pricing page" src="https://mdn.mozillademos.org/files/8031/Payment%20accounts.png" style="width: 1001px; height: 920px;"></p> + +<p>在設定付款帳號與供應商兩者時,所需的資訊有所不同。但同樣必備的資訊如下:</p> + +<ul> + <li>開發者的詳細資訊:姓名、地址、稅務編號、(如果你是以法人型態運作) 當地的公司登記資訊。</li> + <li>詳細的銀行帳號資訊:銀行名稱、分行地址、匯款代碼或類似編號、自己的銀行帳號。</li> +</ul> + +<div class="note"> +<p>在大多數的情況下,付款服務供應商也有在其他國家運作,因此會透過某些形式的國際銀行轉帳作業支付款項給開發者。這類交易都會需要收款銀行的識別代碼。常用的代碼有:</p> + +<ul> + <li>SWIFT/BIC — 此代碼可識別收款銀行。開發者可能必須另外提供分行撥款的帳號。</li> + <li>IBAN — 此代碼可一併識別收款銀行與你的帳號。</li> +</ul> + +<p>其實只要透過 Google 查詢自己開戶的銀行名稱與匯款代碼 (可能是 SWIFT 或 BIC 或 IBAN),往往都能找到銀行的相關資訊。可在你開戶銀行的網站上尋找「跨國轉帳」、「收取海外匯款」或類似字眼。此外還有某些工具可協助你找到相關代碼:</p> + +<ul> + <li><a href="https://ipsosepaservice.sentenial.com/ipso/">Irish Payment Services Organisation (IPSO) BIC and IBAN conversion tool</a> (僅限愛爾蘭銀行的帳號)。</li> +</ul> +</div> + +<p>以下連結可找到付款服務供應商的設定資訊:</p> + +<ul> + <li><a href="/en-US/Marketplace/Publishing/Pricing/Providers/Bango">Bango</a></li> + <li><a href="/en-US/Marketplace/Publishing/Pricing/Providers/Boku">Boku</a> (尚未啟用)</li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/promote_as_upgrade_to_free_version/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/promote_as_upgrade_to_free_version/index.html new file mode 100644 index 0000000000..d0eb6c32a4 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/pricing/promote_as_upgrade_to_free_version/index.html @@ -0,0 +1,26 @@ +--- +title: 建議升級 App 的免費版本 +slug: >- + Archive/Mozilla/Marketplace/Publishing/Pricing/Promote_as_upgrade_to_free_version +translation_of: Archive/Marketplace/Publishing/Pricing/Promote_as_upgrade_to_free_version +--- +<div class="summary"> +<p><span class="seoSummary">談到 App 的相容性與付款選項時,可讓 App 的免費版本升級為付費版本,並透過 Firefox Marketplace 提出此一推銷建議。此一選項可供消費者先體驗功能有所限制的 App,在決定是否購買完整功能的版本。或是免費版本會顯示廣告,付費版本則無廣告;或可為其他類似的組合。本文章說明設定方式,並讓 Firefox Marketplace 顯示升級資訊。</span></p> +</div> + +<p>在「相容性與訂價 (<strong>Compatibility & Pricing</strong>)」頁面底部,可看到「以升級至免費版本促銷 (<strong>Promote as upgrade to free version)</strong>」區塊。而在「<strong>這個付費版本升級此附加元件 (This is a paid upgrade of)</strong>」方塊中,你可選擇要哪些免費 App 可升級為付費 App。一旦選擇對應的免費版本 App 之後,就點擊「儲存變更 (<strong>Save Changes)</strong>」。</p> + +<p><img alt="Promote as upgrade to free version section of the Compatibility & Pricing page" src="https://mdn.mozillademos.org/files/8025/Promote%20as%20Paid.png" style="width: 749px; height: 196px;"></p> + +<p>一旦 App 通過審查並發佈於 Firefox Marketplace 之上,則免費 App 列表中就會出現下列附加資訊:</p> + +<ul> + <li>在手機上為:<br> + <img alt="The Premium version available notice and link in the listing of a free app on a Firefox OS device." src="https://mdn.mozillademos.org/files/8029/Premium%20version%20available%20(phone).png" style="width: 480px; height: 853px;"></li> + <li>在桌機上為:<br> + <img alt="The Premium version available notice and link in the listing of a free app." src="https://mdn.mozillademos.org/files/8027/Premium%20version%20available.png" style="width: 740px; height: 220px;"></li> +</ul> + +<p>若要進一步了解 App 的銷售方式,可參閱〈<a href="/en-US/Marketplace/Prepare/Choosing_your_business_model">選擇自己的商業模式〉。</a></p> + +<p> </p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/privacy_policies/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/privacy_policies/index.html new file mode 100644 index 0000000000..80c1bc6b62 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/privacy_policies/index.html @@ -0,0 +1,28 @@ +--- +title: 隱私權政策制定指南 +slug: Archive/Mozilla/Marketplace/Publishing/Privacy_policies +translation_of: >- + Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies +--- +<p>隱私權極難以界定,且牽涉到法律、社會規範、使用者期望等複雜的概念。不論是 App、網站、網頁、附加元件的開發者,都必須謹慎對待使用者的隱私權以獲得信賴。Mozilla 集結相關指南並制定極佳的隱私權政策,以協助開發者建構出注重隱私權的 App。但請注意,本文並無法取代真正律師所提供的實質法律服務。</p> +<h2 id="隱私權政策">隱私權政策</h2> +<p>隱私權政策用以闡述你對資料的處理方式。關鍵在於開發者<strong>蒐集</strong>、<strong>使用</strong>、<strong>儲存</strong>、<strong>共用</strong>、<strong>揭露</strong>個人資訊的方法。Mozilla 則集結成隱私權政策範本,讓開發者能簡單說明自己的隱私權政策。</p> +<pre><a href="https://github.com/flamsmark/privacy-policy-template" title="https://github.com/flamsmark/privacy-policy-template">https://github.com/flamsmark/privacy-policy-template</a> +</pre> +<p>首先請參閱 <a class="link-https" href="https://github.com/flamsmark/privacy-policy-template#readme" title="https://github.com/flamsmark/privacy-policy-template#readme">README</a>。此範本僅可協助你制定部分的隱私權政策。Mozilla 前提是協助開發者能更輕鬆制定隱私權政策,但無法保證此範本已經面面俱到。至少此範本能讓你注意到主要的隱私權問題並進一步思考。敬請使用該範本並自行強化不足的部份。</p> +<p>此範本也是很好的實作機會 (某些情況下必須兼顧適法性的問題)。開發者可透過隱私權政策讓消費者知道自己的資訊將何去何從。全世界有這麼多不同的國家,對使用者資料的蒐集、使用、儲存、揭露方式的要求也有所差異。開發者應透過律師了解不同的隱私權政策,並確實讓消費者得知自己應熟悉的要點。</p> +<h2 id="Mozilla_Marketplace_的隱私權要求">Mozilla Marketplace 的隱私權要求</h2> +<p>如果任一 App 或附加元件 (Add-on) 將蒐集消費者的資料,則開發者就必須提供隱私權政策並將之列於 Mozilla Marketplace 之中。</p> +<h2 id="設計_App_的隱私權要點">設計 App 的隱私權要點</h2> +<ul> + <li>設計自己的 App 或附加元件,而處理消費者資料的方式,務必與消費者心中所認知的方式一致。</li> + <li>儘量讓消費者能控制自己的資料,例如讓他們自行選擇是否允許資料蒐集作業。</li> + <li>限制自己的資料蒐集作業,只使用必要的資料。</li> + <li>設計自己的 App 與服務,以保護消費者資料在蒐集、儲存、使用過程中的安全性。</li> + <li>回答消費者對於隱私權的問題與懷疑之處。</li> + <li>避免不為消費者所知的更新作業。</li> + <li>將相關社交功能攤在陽光下,讓消費者確實知道自己正分享資料出去。</li> + <li>讓消費者能關閉自動分享的功能,或針對資料分享提供更多樣的選項。</li> + <li>必要時應取得消費者的許可,特別是當事人的地理位置或其他敏感資訊。</li> + <li>提供自己隱私權政策的連結。若有「使用條款」亦可於 App 內提供。</li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/publish_options/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/publish_options/index.html new file mode 100644 index 0000000000..c7b213c18c --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/publish_options/index.html @@ -0,0 +1,145 @@ +--- +title: 自行發佈 App +slug: Archive/Mozilla/Marketplace/Publishing/Publish_options +translation_of: Archive/Mozilla/Marketplace/Options/Self_publishing +--- +<div class="summary"> + <p>開發者可能不想透過 Firefox Marketplace 發佈 App,例如你只想提供給組織內的成員、執行測試版 App,或只是自己試好玩的。本篇文章將說明開發者如何在 Firefox Marketplace 之外自行發佈 App。</p> +</div> +<h2 id="sect1"> </h2> +<p>Open Web App 可透過 {{ domxref("Apps.install") }} 或 {{ domxref("Apps.installPackage") }},安裝到 Firefox OS、執行 Firefox for Android 的裝置,或是執行桌面版 Firefox 的桌機之上。而這些 API 均會送出 manifest 檔案的網址,其內將敘述所將安裝的 App。因此要自行發佈 App 就必須滿足下列基本要求:</p> +<ol> + <li>伺服器必須裝載 App 的 manifest 檔案</li> + <li>伺服器必須裝載 (架設/托管式) App,或 (封裝式) App 的 ZIP 檔案</li> + <li>置於網站上的程式碼必須觸發合適的 {{ domxref("Apps.install") }} 或 {{ domxref("Apps.installPackage") }}</li> +</ol> +<h2 id="限制">限制</h2> +<p>在自己發佈 Open Web App 之前,必須注意下列限制:</p> +<ul> + <li>自行發佈的 App 不能使用 <a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">Privileged API</a>。若要使用這類 API,則必須為封裝式 (Packaged) App 並具備自己的 ZIP 檔案,另需經由 Firefox Marketplace 提交程序而完成簽署。</li> + <li>你的 App 不能使用 Firefox Marketplace 的 App 內購買功能。</li> + <li>由於 App 無法在 Firefox Marketplace 上曝光,所以開發者必須自行研究 App 的發佈技術。</li> +</ul> +<h2 id="自行發佈封裝式_App"><strong>自行發佈封裝式</strong> App</h2> +<p>只要在伺服器上架設/托管 ZIP 檔案與其 mini-manifest,就能自行發佈封裝式 App。而 mini-manifest 必須置於 ZIP 相同的目錄之下,以利安裝程序能識別 App。接著可建立指令碼以觸發 {{ domxref("Apps.installPackage") }},送出 mini-manifest 的細節。可參閱下方以了解:</p> +<ol> + <li> + <p>將 App 的內容壓縮為 ZIP 並命名為 <code>package.zip</code>。 此檔案應容納 App 的所有資源檔案,並包含 (主要) <a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest" title="Manifest documentation">manifest</a> 檔案。</p> + <div class="warning"> + <p>重要:請注意封裝式 App 所要壓縮的內容,不要包含檔案本身的目錄。如果你連母目錄都壓縮進去,則 manifest 檔案就位於錯誤地方,整個封裝式 App 隨即無效。</p> + </div> + </li> + <li>建立名為 <code>manifest.webapp</code> 的檔案,並加入以下內容。此檔案即所謂的 mini-manifest,也是封裝式 App 壓縮檔內的精簡版 manifest 檔案。而 {{ domxref("Apps.installPackage") }} 將使用 mini-manifest,以進行 App 的安裝程序。若要進一步了解細節,可參閱下方的 <a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Publishing/Publish_options$edit#Mini-manifest_fields">Mini-manifest 欄位</a>。<br> + <pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"My sample app"</span><span class="token punctuation">,</span> + <span class="token string">"package_path"</span> <span class="token punctuation">:</span> <span class="token string">"http://my-server.com/my-app-directory/package.zip"</span><span class="token punctuation">,</span> + <span class="token string">"version"</span><span class="token punctuation">:</span> <span class="token string">"1"</span><span class="token punctuation">,</span> + <span class="token string">"developer"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"A. Developer"</span><span class="token punctuation">,</span> + <span class="token string">"url"</span><span class="token punctuation">:</span> <span class="token string">"http://my-server.com"</span> + <span class="token punctuation">}</span> +<span class="token punctuation">}</span></code></pre> + </li> + <li>建立可安裝 App 的指令碼。這裡我們使用了名為「<code>index.html</code>」的簡易 HTML 檔案。但你也可將指令碼新增至按鈕,或使用任何適當的函式,以於自己的網站上觸發作業。此頁面上的 JavaScript 將呼叫 Packaged App installer API ({{ domxref("Apps.installPackage") }}),並針對安裝作業的成功與否進行回呼 (Callback)。 + <pre class="brush: html language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>html</span><span class="token punctuation">></span></span> + <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span><span class="token punctuation">></span></span> + <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span>Packaged app installation page<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span> + <span class="token script"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span><span class="token punctuation">></span></span> + <span class="token comment"> // This URL must be a full url. +</span> <span class="token keyword">var</span> manifestUrl <span class="token operator">=</span> <span class="token string">'http://my-server.com/my-app-directory/manifest.webapp'</span><span class="token punctuation">;</span> + <span class="token keyword">var</span> req <span class="token operator">=</span> navigator<span class="token punctuation">.</span>mozApps<span class="token punctuation">.</span><span class="token function">installPackage<span class="token punctuation">(</span></span>manifestUrl<span class="token punctuation">)</span><span class="token punctuation">;</span> + req<span class="token punctuation">.</span>onsuccess <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> + <span class="token function">alert<span class="token punctuation">(</span></span>this<span class="token punctuation">.</span>result<span class="token punctuation">.</span>origin<span class="token punctuation">)</span><span class="token punctuation">;</span> + <span class="token punctuation">}</span><span class="token punctuation">;</span> + req<span class="token punctuation">.</span>onerror <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> + <span class="token function">alert<span class="token punctuation">(</span></span>this<span class="token punctuation">.</span>error<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span> + <span class="token punctuation">}</span><span class="token punctuation">;</span> + <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span></span> + <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span> +<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span></code></pre> + </li> + <li>將「<code>package.zip</code>」、「<code>package.manifest</code>」、「<code>index.html」</code>複製到你指定的目錄中 (此範例則為 <code>my-app-directory</code>),即可在自己的伺服器或網站上設定檔案。</li> + <li>以相容設備 (如 Firefox OS 手機) 安裝 App。只要開啟 <code>index.html</code> 檔案 (此範例的路徑為 <code> <a class="LinkyMobile-ext" href="http://my-server.com/my-app-directory/package.manifest" title="Linkification: http://my-server.com/my-app-directory/package.manifest">http://my-server.com/my-app-directory/index.html</a></code>) 就會看到系統詢問是否要安裝該 App。繼續執行安裝步驟直到完畢,接著網頁指令就會顯示安裝作業是否成功。</li> +</ol> +<div class="note"> + <p>秘訣:你可於本端架設/托管 1 個封裝式 App,並於裝置中進行測試。伺服器與裝置必須位於同一個網路之上,而伺服器必須能接收本端網路的請求。你只要在 mini-manifest 檔案的 <code>package_path</code> 中加入絕對路徑即可。只要用相同的方式,正常情況就已經納入絕對路徑 (可參閱下方)。如果要使用非標準通訊埠,例如 <code><a class="LinkyMobile-ext" href="http://10.10.12.1:8080/package.zip" title="Linkification: http://10.10.12.1:8080/package.zip">http://10.10.12.1:8080/package.zip</a></code>,則記得應納入通訊埠的資訊。</p> +</div> +<h3 id="Mini-manifest_檔案的欄位">Mini-manifest 檔案的欄位</h3> +<p>如果要在 Firefox Marketplace 發佈 App,就不需擔心該如何建立 mini-manifest 檔案;Firefox Marketplace 可為開發者代勞。Marketplace 將使用 manifest 檔案中的相關資訊。可參閱《<a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest">App 的 manifest 檔案</a>》一文。</p> +<p>如果要自行發佈 App,也就必須自行建立 mini-manifest 檔案。最好就是複製「主要」的 manifest 檔案,並依需求將之更新。先複製完整內容就能輕鬆建立 mini-manifest 檔案,因其內的 <code>name</code>、<code>version</code>、<code>developer</code>、<code>locales</code> 欄位必須完全相同。開發者亦可添增其他內容。mini-manifest 檔案專屬的欄位則包含 <code>package_path</code>、<code>release_notes</code>、<code>size</code>。</p> +<dl> + <dt> + <code>package_path</code> (必填)</dt> + <dd> + 儲存 App 壓縮檔的絕對路徑 (需為完整的網址,如 <code> <a class="LinkyMobile-ext" href="http://my-server.com/my-app-directory/package.manifest" title="Linkification: http://my-server.com/my-app-directory/package.manifest">http://my-server.com/my-app-directory/manifest.webapp</a></code>)</dd> + <dt> + <code>release_notes</code> (選填)</dt> + <dd> + App 版本資訊。在 Firefox Marketplace 的提交過程中,就必須提供此項資訊。</dd> +</dl> +<dl> + <dt> + <code>size</code> (選填)</dt> + <dd> + 以 byte 計算的 App 壓縮檔容量。而 {{ domxref("Apps.installPackage") }} 將使用此項資訊,才能在安裝過程中顯示安裝進度。</dd> +</dl> +<p>以下提供範例:</p> +<pre class="brush: js language-js"><code class="language-js"><span class="token punctuation">{</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"My app"</span><span class="token punctuation">,</span> + <span class="token string">"package_path"</span><span class="token punctuation">:</span> <span class="token string">"http://thisdomaindoesnotexist.org/myapp.zip"</span><span class="token punctuation">,</span> + <span class="token string">"version"</span><span class="token punctuation">:</span> <span class="token string">"1.0"</span><span class="token punctuation">,</span> + <span class="token string">"size"</span><span class="token punctuation">:</span> <span class="token number">172496</span><span class="token punctuation">,</span> + <span class="token string">"release_notes"</span><span class="token punctuation">:</span> <span class="token string">"First release"</span><span class="token punctuation">,</span> + <span class="token string">"developer"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Developer Name"</span><span class="token punctuation">,</span> + <span class="token string">"url"</span><span class="token punctuation">:</span> <span class="token string">"http://thisdomaindoesnotexist.org/"</span> + <span class="token punctuation">}</span><span class="token punctuation">,</span> + <span class="token string">"locales"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"fr-FR"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Mon application"</span> + <span class="token punctuation">}</span><span class="token punctuation">,</span> + <span class="token string">"se-SE"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token string">"Min balla app"</span> + <span class="token punctuation">}</span> + <span class="token punctuation">}</span><span class="token punctuation">,</span> + <span class="token string">"icons"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> + <span class="token string">"16"</span><span class="token punctuation">:</span> <span class="token string">"/icons/16.png"</span><span class="token punctuation">,</span> + <span class="token string">"32"</span><span class="token punctuation">:</span> <span class="token string">"/icons/32.png"</span><span class="token punctuation">,</span> + <span class="token string">"256"</span><span class="token punctuation">:</span> <span class="token string">"/icons/256.png"</span> + <span class="token punctuation">}</span> +<span class="token punctuation">}</span></code></pre> +<p>此範例中的其他欄位包含:</p> +<dl> + <dt> + <code>name</code> (必填)</dt> + <dd> + App 的名稱,最長 128 個字元。</dd> + <dt> + <code>version</code> (選填)</dt> + <dd> + App 的目前版本。</dd> + <dt> + <code>developer</code> (選填)</dt> + <dd> + 開發者的資訊,內含 <code>name</code> 與 <code>url</code> 欄位。而 mini-manifest 與 manifest 檔案中的開發者資訊必須相同。</dd> + <dt> + <code>locales</code> (選填)</dt> + <dd> + 語系資訊,必須為 <code>xx-YY</code> 格式。</dd> + <dt> + <code>icons</code> (選填)</dt> + <dd> + App 所使用的圖示。</dd> +</dl> +<p>若要進一步了解 manifest 檔案,可參閱《<a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest" title="Manifest documentation">App 的 manifest 檔案</a>》。</p> +<h2 id="自行發佈架設托管式_App">自行發佈架設/托管式 App</h2> +<p>與封裝式 App 相較,如果你建立內容的方式,就與 Firefox Marketplace 發佈的方式相同,則自行發佈架設/托管式 (Hosted) App 就更簡單了。基本上就是為自己的 App 建立 <a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest" title="Manifest documentation">manifest 檔案</a>。接著加入程式碼以觸發 {{ domxref("Apps.install") }}。此程式碼必須與上述封裝式 App 所用的相同。唯一不同點在於,你可對 manifest 檔案設立相對的參考位置。</p> +<h2 id="另請參閱">另請參閱</h2> +<ul> + <li><a href="https://developer.mozilla.org/en-US/Apps/Build/JavaScript_API">App 的 Installation 與 Management API</a></li> + <li>{{ domxref("Apps.install") }}</li> + <li>{{ domxref("Apps.installPackage") }}</li> + <li><a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest" title="Manifest documentation">App 的 manifest 檔案</a></li> + <li><a href="https://developer.mozilla.org/en-US/Apps/Build/App_permissions">App 權限</a></li> +</ul> +<p> </p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submission_checklist/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submission_checklist/index.html new file mode 100644 index 0000000000..5f029ca0c3 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/submission_checklist/index.html @@ -0,0 +1,72 @@ +--- +title: 提交作業檢查清單 +slug: Archive/Mozilla/Marketplace/Publishing/Submission_checklist +translation_of: Archive/Mozilla/Marketplace/Publishing/Submission_checklist +--- +<div class="summary"> + <p><span class="seoSummary">在將自己的 App 提交到 Firefox Marketplace 之前,當然該確認是否已經掌握了所有必要資源。本文則提供檢查項目與相關資訊的連結。</span></p> +</div> +<h2 id="提交作業檢查清單">提交作業檢查清單</h2> +<p>要完成 Firefox Marketplace 的提交程序,你需要:</p> +<h3 id="針對封裝式_(Packaged)_App">針對<a href="/en-US/Marketplace/Options/Packaged_apps">封裝式 (Packaged) App</a></h3> +<ul> + <li>將 App 封裝為 zip 檔案,並將 <a href="/en-US/Apps/Build/Manifest">manifest</a> 檔案至於根目錄中。</li> + <li>於 <a href="/en-US/Apps/Build/Manifest">manifest</a> 檔案中指定 <code><a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#launch_path">launch_path</a></code>。</li> +</ul> +<h3 id="針對架設托管式_(Hosted)_App">針對<a href="/en-US/Marketplace/Options/Hosted_apps">架設/托管式 (Hosted) App</a></h3> +<ul> + <li><span style="line-height: 1.5em;">可架設/托管 App 的網站。進一步資訊可參閱</span><span style="line-height: 1.5em;">《<a href="/en-US/Marketplace/Options/Hosted_apps#Options_for_hosting_your_app">Options for hosting your app</a></span><span style="line-height: 1.5em;">》。</span></li> + <li>App 內 manifest 檔案的網址。進一步資訊可參閱《<a href="https://developer.mozilla.org/zh-TW/Apps/Developing/Manifest/Manifest-840092-dup#csp">App 的 Manifest 檔案</a>》。</li> +</ul> +<div class="note"> + <p>在將 App 提交到 Firefox Marketplace 之前,可使用「<a href="https://marketplace.mozilla.org/developers/validator">測試應用程式驗證</a>」工具來測試 manifest 檔案的正確性。</p> +</div> +<div class="note"> + <p><strong>注意:</strong>你會在「應用程式管理員 (App Manager)」看到「manifest」中文翻譯為「安裝資訊檔」。</p> +</div> +<h3 id="針對所有_App_(必備)">針對所有 App (必備)</h3> +<p>架設/托管式、封裝式 App 的共通必要條件:</p> +<ul> + <li>App 的<a href="/en-US/Apps/Developing/Manifest#name">名稱</a>必須加進 manifest 檔案中,最多可達 128 個字元。在 App 上傳程序的 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_3.3A_Details">Step 3</a> 中,亦必須預先填入 Marketplace 的「Name」欄位。</li> + <li>App 的 manifest 檔案必須有 App 的<a href="/en-US/Apps/Developing/Manifest#description">相關敘述</a>,最多可達 1024 個字元。在 App 上傳程序的 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_3.3A_Details">Step 3</a> 中,亦必須預先填入 Marketplace 的「Description」欄位,並可後續進行編輯 (但如果是 Marketplace 的說明欄位,則沒有字元數的限制)。</li> + <li>需提供 128 x 128px 的縮圖圖示,以於 Marketplace 上呈現。此為固定的圖示尺寸。若要進一步了解應如何將圖示加入 App 中,可參閱 <a href="/en-US/Apps/Developing/Manifest#icons">manifest 圖示</a>。</li> + <li>需提供 App 截圖,至少為 320 x 480px (可參閱 <a href="/en-US/Apps/Publishing/Marketplace_screenshot_criteria">Marketplace 截圖準則</a>以進一步了解。若要添增或變更截圖,可於 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_4.3A_Next_Steps">Step 4</a> 中更新之)。</li> + <li>App 的隱私權政策,或是隱私權政策網頁的網址。可參閱<a href="/en-US/Marketplace/Publishing/Privacy_policies">隱私權政策指南</a>以進一步了解 (可於 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_3.3A_Details">Step 3</a> 時輸入)。</li> + <li>提供 App 支援服務的電子郵件位址 (可於 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_3.3A_Details">Step 3</a> 時輸入)。</li> +</ul> +<h3 id="針對付費_App_或應用程式內付款_(In-app_payments)">針對付費 App 或應用程式內付款 (In-app payments)</h3> +<ul> + <li>你必須找好付款服務商、銀行帳戶明細 (如帳號、SWIFT 代號、地址明細)、公司明細 (如 VAT 編號、公司統編、開業日期)。</li> + <li>如果 App 使用 In-app payments,確認已於 manifest 檔案中提供了 origin。</li> +</ul> +<h3 id="針對所有_App_(非必備)">針對所有 App (非必備)</h3> +<p>架設/托管式、封裝式 App 的建議條件:</p> +<ul> + <li>最多可提交 6 張截圖來呈現 App 的主畫面。最好是涵蓋不同裝置規格的 App 截圖,且各有尺寸限制: + <ul> + <li>手機:建議 320 x 480px 或相對應的倍數。</li> + <li>平板電腦:建議 1024 x 768px 或 1280 x 800px。</li> + <li>桌上型電腦:建議 1280 x 800px 或 1440 x 900px。</li> + </ul> + </li> + <li>其他尺寸的圖示應透過 manifest 檔案指定,以於其他平台/網頁內容達到最佳顯示效果: + <ul> + <li>60 x 60px 圖示可於裝置螢幕上顯示。</li> + <li>32 x 32px、90 x 90px、120 x 120px、256 x 256px 圖示,可於不同平台達到最佳顯示效果,如 Windows 7 與 Android。</li> + </ul> + </li> + <li>App 及其支援服務首頁的網址。根據你自己的需要,可為相同或不同的網址 (於 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_3.3A_Details">Step 3</a> 時輸入)。</li> + <li>其他<a href="/en-US/Apps/Developing/Manifest"> manifest</a> 檔案的選填欄位。目前有 <a href="/en-US/Apps/Developing/Manifest#name">name</a>、<a href="/en-US/Apps/Developing/Manifest#description">description</a>、<a href="/en-US/Apps/Developing/Manifest#icons">icons</a> 為必要欄位,另有許多選填欄位,例如: + <ul> + <li>如果你要提供多語言版本的 App,就必須填入 <a href="/en-US/Apps/Developing/Manifest#locales">locales</a> 的資訊。</li> + <li>如果有 locales 欄位,就必須一併提供 <a href="/en-US/Apps/Developing/Manifest#default_locale">default_locale</a> 欄位。</li> + <li>如果要在 App 中使用特定裝置的 API 或 Web Activity,也必須在 manifest 檔案中提供相關 <a href="/en-US/Apps/Developing/App_permissions">App permissions</a> 或 <a href="/en-US/docs/WebAPI/Web_Activities">activities</a> 欄位。</li> + </ul> + </li> +</ul> +<h3 id="另外還有......">另外還有......</h3> +<p>......你應該:</p> +<ul> + <li>在 Marketplace 審核通過你的 App 之後,預設將立刻讓 App 上架。如果你不想讓 App 立刻上架,則在提交 App 時要取消勾選「<strong>Publish my app in the Firefox Marketplace as soon as it's reviewed</strong>」(於 <a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_2.3A_Submit">Step 2</a> 時勾選)。</li> + <li>可參閱 <a href="/en-US/docs/Web/Apps/Publishing/Marketplace_review_criteria">Marketplace 審查準則</a> (<a href="/en-US/Marketplace/Submission/Submitting_an_app#Step_1.3A_Agreement">Step 1</a>)。</li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/enter_your_apps_details/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/enter_your_apps_details/index.html new file mode 100644 index 0000000000..88211b4b18 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/enter_your_apps_details/index.html @@ -0,0 +1,129 @@ +--- +title: 輸入 App 上架時所顯示的詳細資訊 +slug: Archive/Mozilla/Marketplace/Publishing/Submit/Enter_your_apps_details +translation_of: Archive/Mozilla/Marketplace/Publishing/Submit/Enter_your_apps_details +--- +<div class="summary"> +<p>在將 App 上傳到 Firefox Marketplace 之後,應更新 App 的詳細資訊以利於 Marketplace 頁面上顯示。</p> +</div> + +<div class="note"> +<p>此步驟將針對 App 的預設語系版本 (英文),編輯相關細節 (如網址與說明等)。如果你有其他語系版本,或是要針對其他國家\語系而修改詳細資訊,仍必須透過標準的「編輯資訊 (Edit Listing)」選項 (可參閱 <a href="/en-US/Marketplace/Publishing/Submit/Edit_other_localizations">step 9</a>)。</p> +</div> + +<div class="note"> +<p>注意:你可能會看到「manifest 檔案」的正體中文翻譯為「安裝資訊檔」。</p> +</div> + +<p>現在進入「<strong>提交 App、編輯</strong><strong> App 詳細資訊</strong>」的頁面。</p> + +<p><img alt="Edit app details page header" src="https://mdn.mozillademos.org/files/8245/Page%20header.png" style="width: 979px; height: 345px;"></p> + +<p>如頁面中所示,你在 <a href="/en-US/Apps/Build/Manifest">manifest</a> 檔案中提供的 App 詳細資訊,會由系統預先填入大部分的頁面空格之中。</p> + +<h2 id="App_圖示與網址">App 圖示與網址</h2> + +<p>在 manifest 檔案中提供的 App 圖示與說明,再加上檔案儲存網頁的網址,都已經列於此頁面的第一區塊內。Marketplace 將根據 App 名稱而自動產生網址,並逕行修改以成為專屬網址。你可以點擊 (1)「<strong>開啟詳細資訊頁面 (Open details</strong> <strong>page)</strong>」以檢視 Marketplace 的細節頁面,也能點擊 (2)「<strong>編輯 (Edit)」</strong>以編輯圖示與Marketplace 的網址。</p> + +<p><img alt="When the page first loads your app name and icon are displayed (based on the manifest content) along with the URL generated by Marketplace" src="https://mdn.mozillademos.org/files/8247/App%20URL%20-%20Display.png" style="width: 978px; height: 136px;"></p> + +<p>若要更改 App 的圖示,就點擊 (1) 的圖示就能瀏覽電腦上的其他圖檔。若要更改 App 詳細資訊的頁面名稱,可於 (2) 的 <strong>App 網址</strong>方塊中輸入新的值。如果你輸入目前已存在的頁面名稱,就會出現警告訊息,直到你修改完畢並點擊「<strong>繼續 (Continue)</strong>」為止。而且必須修改成有效的 App 詳細資訊頁面網址,否則就無法離開此頁面。</p> + +<p><img alt="You can (1) change the app's icon and (2) enter your own page name for the app" src="https://mdn.mozillademos.org/files/8197/App%20URL%20-%20Edit.png" style="width: 978px; height: 130px;"></p> + +<h2 id="App_說明">App 說明</h2> + +<p>接著下個區塊則顯示 App 的相關說明,也是直接取自於 manifest 檔案而來。你也可以依照自己需要而在「<strong>說明 (Description)</strong>」方塊中編輯說明。只要拖曳方塊右下角,就能拉大整個編輯方塊的面積。此為必填欄位。</p> + +<p><img alt="You can create a description over 1024 characters and include some HTML tags to improve formatting. " src="https://mdn.mozillademos.org/files/8249/Edit%20description.png" style="width: 978px; height: 171px;"></p> + +<p>與 manifest 檔案所提供的說明不同,這裡讓你編輯的說明內容可以:</p> + +<ul> + <li>超過 1024 個字元,但請還是儘量提供簡潔的說明內容。可參閱〈<a href="/en-US/Marketplace/Prepare/Promoting_your_app">Promoting your app</a>〉一文中的「<a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Promoting_your_app#App_listing" rel="internal">App listing</a>」,帶你寫出精簡的說明。</li> + <li>納入基本的 HTML 標籤功能,呈現更漂亮的說明內容。只要點擊 (1)「<strong>支援部分 HTML supported</strong>」,就能看到相關的標籤清單。目前可支援的標籤有: + <ul> + <li><a href title></li> + <li><abbr title></li> + <li><acronym title></li> + <li><b></li> + <li><blockquote></li> + <li><code></li> + <li><em></li> + <li><i></li> + <li><strong></li> + <li><ul>, <li>, and <ol></li> + </ul> + </li> +</ul> + +<h2 id="App_分類">App 分類</h2> + +<p>Marketplace 是以「分類 (Category)」提供 App 完整列表。開發者必須為自己的 App 勾選至少一項分類,當然也可以視需要而勾選他項適合的分類。舉例來說,如果 App 可擷取、編輯、分享照片,你當然可以勾選「<strong>Photo & Video</strong>」與「<strong>Social</strong>」兩種分類。</p> + +<p><img alt="You must pick one, but can pick 2, categories that match your app'scontent" src="https://mdn.mozillademos.org/files/8251/Categories.png" style="width: 985px; height: 187px;"></p> + +<h2 id="隱私權政策">隱私權政策</h2> + +<p>開發者必須提供 App 的隱私權政策,即使 App 聲稱不會蒐集個人資料,也同樣必須提供。如果 App 會蒐集消費者的個人詳細資訊,就必須提供詳盡的政策 (網頁連結或純文字均可)。你可到《<a href="/en-US/Marketplace/Publishing/Privacy_policies">隱私權政策指南</a>》 找到的撰寫資訊。而上述「說明」欄位所支援的 HTML 標籤,也同樣可用在政策撰寫時的格式。這裡一樣拖曳 (1) 方塊的右下角,能拉大編輯方塊的面積空間。</p> + +<p><img alt="A privacy policy must be provided, even if its only to say that no personal data is collected by the app" src="https://mdn.mozillademos.org/files/8253/Privacy%20policy.png" style="width: 979px; height: 211px;"></p> + +<h2 id="App_資訊與支援服務連結">App 資訊與支援服務連結</h2> + +<p>如果有 App 首頁與支援服務頁面的網址,亦可一併提供。但你至少須提供電子郵件位址,以利消費者聯絡後續支援服務。</p> + +<p><img alt="Link can be provided to any information or support pages for the app, however a support email address must be provided" src="https://mdn.mozillademos.org/files/8255/app%20links.png" style="width: 977px; height: 237px;"></p> + +<div class="note"> +<p>支援服務的電子郵件位址,即納入 App 於<span class="hint"> Marketplace 上架時的公開清單中。建議你應提供專屬的電子郵件位址,而不要使用一般的免費郵件位址。</span></p> +</div> + +<h2 id="是否支援_Flash">是否支援 Flash</h2> + +<p>如果你針對 Adobe Flash 而開發 Web App 的內容,則請在這裡點選「Yes」代表使用了 Adobe Flash。反之則點選「No」。</p> + +<p><img alt="Indicate whether your app has need for Flash support" src="https://mdn.mozillademos.org/files/8257/Flash.png" style="width: 973px; height: 79px;"></p> + +<h2 id="截圖與影片">截圖與影片</h2> + +<p>現在可為自己的 App 加上截圖與影片了。點擊 (1)「<strong>新增螢幕截圖或影片 (Add a screenshot or video)</strong>」,就能瀏覽電腦的檔案,找到對應的檔案並點選即可。若添增超過 1 支以上的檔案,就能拖曳 (2) 檔案以變更 Marketplace 中呈現的順序。亦可點擊 (3) 的刪除圖示,移除你不想要的檔案。</p> + +<p>截圖可為 PNG 或 JPG 格式,影片則為 <a href="http://www.webmproject.org/">WebM</a> 格式。建議手機截圖為 320 x 480 px 尺寸。另可參閱《<a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Marketplace_screenshot_criteria" title="Some guidelines on how to create an effective screenshot for marketplace submission">Marketplace 截圖準則</a>》,以及《<a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Promoting_your_app#Videos" rel="internal">Promoting your app</a>》的〈<a href="https://developer.mozilla.org/en-US/Marketplace/Prepare/Promoting_your_app#Videos" rel="internal">Videos</a>〉進一步了解。</p> + +<p><img alt="Click Add a screenshot or video to add a new item. reorder added items and delete any unwanted items" src="https://mdn.mozillademos.org/files/8259/Add%20screenshots%20and%20videos.png" style="width: 982px; height: 462px;"></p> + +<h2 id="設定發佈方式">設定發佈方式</h2> + +<p>你可決定在 App 通過 Firefox Marketplace 的審查之後,是要立刻上架 (<strong>發佈 App 並讓任何人都能在 Marketplace 中看到,另將納入搜尋結果</strong>),或是暫時不要發佈 (<strong>不發佈App。提醒開發者可稍後調整 App 上架情形</strong>)。</p> + +<p><img alt="Selected whether your app will be added to Marketplace as soon as it's been approved or whether you will set its visibility after approval" src="https://mdn.mozillademos.org/files/8473/publication%20visibility%20new.png" style="width: 996px; height: 179px;"></p> + +<p>點選「<strong>不要自動發佈我的程式 (Do not publish my app)</strong>」將可:</p> + +<ul> + <li>選擇 App 發佈時機。你可能想排定自己的軟體釋出與發表時機。</li> + <li>保持他人還看不到此 App。你可能只是發表自己公司內部使用,或是尚在測試階段的 App。</li> +</ul> + +<p>「不要自動發佈我的程式」將有更多詳細資訊供你選擇,敬請期待。</p> + +<div class="note"> +<p>在你完成這一步驟之後,就無法編輯此選項。往後若要修改此選項,就必須提供 App 的更新檔才行。</p> +</div> + +<h2 id="給審查人員看的註記">給審查人員看的註記</h2> + +<p>最後,你可提供額外資訊給 App 審查人員觀看。特別一提,如果 App 所搭配的 Web 服務需要消費者登入才可使用,則你應提供暫時性的帳戶給審查人員試用此服務。只要拖曳方塊右下角,就能拉大整個編輯方塊的面積。</p> + +<p><img alt="Add comments to assist the reviewer review your app" src="https://mdn.mozillademos.org/files/8261/your%20comments%20for%20reviewer.png"></p> + +<div class="note"> +<p>在你完成這一步驟之後,就無法編輯此選項。往後若要修改此選項,就必須提供 App 的更新檔才行。</p> +</div> + +<h2 id="下一步">下一步</h2> + +<p>點擊「繼續 (Contiune)」即可進到下個程序:<a href="/en-US/Marketplace/Publishing/Submit/Next_steps">下一步</a></p> + +<p><img alt="Click Continue to proceed to the next step" src="https://mdn.mozillademos.org/files/8263/continue.png" style="width: 980px; height: 81px;"></p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/index.html new file mode 100644 index 0000000000..a6e3468169 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/index.html @@ -0,0 +1,10 @@ +--- +title: Submit +slug: Archive/Mozilla/Marketplace/Publishing/Submit +tags: + - NeedsTranslation + - TopicStub +translation_of: Archive/Mozilla/Marketplace/Publishing/Submit +--- +<p>This section describes the process for submitting an app to Firefox Marketplace</p> +<p>Residual details: <a href="/en-US/Marketplace/Publishing/Submit/Submitting_an_app">https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Submitting_an_app</a></p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/load_your_app/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/load_your_app/index.html new file mode 100644 index 0000000000..7c657ed720 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/load_your_app/index.html @@ -0,0 +1,134 @@ +--- +title: 將 App 上傳到 Firefox Marketplace +slug: Archive/Mozilla/Marketplace/Publishing/Submit/Load_your_app +translation_of: Archive/Mozilla/Marketplace/Publishing/Submit/Load_your_app +--- +<div class="summary"> +<p>在登入自己的開發者帳戶並同意開發者協定之後,就能輸入 App 的細節,再讓 Firefox Marketplace 識別其 manifest 檔案。</p> +</div> + +<div class="note"> +<p>注意:你可能會看到「manifest 檔案」之正體中文翻譯為「安裝資訊檔」。</p> +</div> + +<h2 id="概述">概述</h2> + +<p>現在你進入「提交 App (<strong>Submit an App</strong> )」頁面,可進行:</p> + +<ul> + <li>確認 App 的獲利模式 — 是要免費提供給消費者,或是消費者須付費購買,也可以另外提供應用程式內付款 (In-app payments) 產品。</li> + <li>確認 App 是否可相容於該平台。</li> + <li>根據 App 的封裝方式: + <ul> + <li>確認托管\架設式 (Hosted) App 的 manifest 檔案之位址。</li> + <li>上傳封裝式 (Packaged) App 的 ZIP 檔案。</li> + </ul> + </li> + <li>提供 App 必要的特性\功能相關資訊。</li> +</ul> + +<h2 id="收益方式">收益方式</h2> + +<p>你首先應對 App 所提供的資訊,就是其收益方式。</p> + +<ol> + <li>針對自己的 App,點選 (1)「免費 (<strong>Free)</strong>」或「付費/應用程式內付款 (<strong>Paid / in-app)</strong>」分頁。</li> + <li><img alt="Select either Free if the app is free to download and use, or Paid / In-app of the app has to be purchased or contains any in-app payment options" src="https://mdn.mozillademos.org/files/8213/Select%20monetization%20model.png" style="width: 978px; height: 162px;"></li> +</ol> + +<div class="note"> +<p>如果你想先讓消費者免費下載 App,再透過 App 內部付費產品獲得收益,請點選「<strong>付費 / 應用程式內付款</strong>」。</p> +</div> + +<div class="note"> +<p>只要你點選「付費/應用程式內付款」並完成提交程序之後,就無法再將該 App 改回免費提供。但原本就點選「免費」的 App 可隨時更改為付費形式。</p> +</div> + +<h2 id="平台相容性">平台相容性</h2> + +<p>在選擇了免費\付費 App 之後,就該定義 App 所將賴以執行的作業系統與瀏覽器。</p> + +<ol> + <li>選擇 App 相容的平台<br> + <img alt="Select the OS and browser implementations the app is designed to work on." src="https://mdn.mozillademos.org/files/8217/Select%20compatible%20platforms.png" style="width: 980px; height: 337px;"></li> +</ol> + +<p>各個平台所支援的收益方式如下。</p> + +<table class="standard-table" style="width: 60% ;"> + <thead> + <tr> + <th scope="row" style="width: 60% ;"> </th> + <th scope="col" style="width: 20%;">Free</th> + <th scope="col" style="width: 20%;">Paid /In-app</th> + </tr> + </thead> + <tbody> + <tr> + <th scope="row">Firefox OS</th> + <td style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/8219/Tick_20x20.png" style="width: 20px; height: 20px;"></td> + <td style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/8219/Tick_20x20.png" style="width: 20px; height: 20px;"></td> + </tr> + <tr> + <th scope="row">Firefox for Desktop</th> + <td style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/8219/Tick_20x20.png" style="width: 20px; height: 20px;"></td> + <td style="text-align: center;"> </td> + </tr> + <tr> + <th scope="row">Firefox Mobile<br> + (Firefox for Android on screen 7" or less)</th> + <td style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/8219/Tick_20x20.png" style="width: 20px; height: 20px;"></td> + <td style="text-align: center;"> </td> + </tr> + <tr> + <th scope="row">Firefox Tablet<br> + (Firefox for Android on screen over 7")</th> + <td style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/8219/Tick_20x20.png" style="width: 20px; height: 20px;"></td> + <td style="text-align: center;"> </td> + </tr> + </tbody> +</table> + +<h2 id="上傳_App">上傳 App</h2> + +<p>現在為 Firefox Marketplace 說明 App 類型:</p> + +<ol> + <li>如果為托管\架設式 App,(1) 須先輸入 <a href="/en-US/docs/Web/Apps/Manifest">App 的 manifest 檔案</a>所在之伺服器位址 (須為完整的 URL),再點擊 (2)「<strong>驗證 (Validate)</strong>」。<br> + <img alt="Enter the URL for the manifest of a Hosted App" src="https://mdn.mozillademos.org/files/8223/Identify%20Hosted%20App.png" style="width: 982px; height: 198px;"><br> + <br> + Marketplace 就會驗證你的 manifest 檔案。 + <ul> + <li>驗證完畢,點擊「<strong>繼續 (Continue)</strong>」。</li> + <li>若 manifest 檔案的驗證結果出現錯誤或警告,也會提供完整報告的連結。請看過報告之後修正錯誤,再重新提交 manifest 檔案進行驗證。<br> + <img alt="If there are errors or warning as a result of validating the app's manifest a link is provided to a full report" src="https://mdn.mozillademos.org/files/8225/Validation%20results.png" style="width: 981px; height: 55px;"></li> + </ul> + </li> + <li>如果為封裝式 App,則點擊「<strong>封裝</strong> (<strong>Packaged</strong>)」分頁並點選「<strong>選擇檔案... (Select a file...)</strong>」。接著就會開啟電腦的檔案瀏覽功能,找到 App 的 zip 檔案並上傳。<br> + <img alt="Click Select a file to upload a packaged app's ZIP file" src="https://mdn.mozillademos.org/files/8211/Select%20Packaged%20App.png" style="width: 982px; height: 189px;"><br> + Marketplace 現已可驗證 App 的封包。 + <ul> + <li>驗證完畢,點擊「<strong>繼續 (Continue)</strong>」。</li> + <li>若封包 (ZIP) 的驗證結果出現錯誤或警告,也會提供完整報告的連結。請看過報告之後修正錯誤,再重新封包檔案之後提交以利驗證。<br> + <img alt="If there are errors or warning as a result of validating the app's manifest a link is provided to a full report" src="https://mdn.mozillademos.org/files/8225/Validation%20results.png" style="width: 981px; height: 55px;"></li> + </ul> + </li> +</ol> + +<h2 id="了解_App_最低限度的_API_需求">了解 App 最低限度的 API 需求</h2> + +<p>在 App 驗證完成之後,就會出現「<strong>應用程式最低需求 (App Minimum Requirements)</strong>」頁面。一開始將顯示最常用的 API 需求清單。如果有找不到的 App 需求,則點擊 (1)「<strong>檢視全部 (View all)」</strong>,再 (2) 勾選所要的需求方塊。</p> + +<div class="note"> +<p>消費者的裝置若不支援本頁中所選的需求,則 Marketplace 將隱藏你的 App。</p> +</div> + +<p><img alt="An automatically populated list of app requirements displays, click View all and add any that have been missed" src="https://mdn.mozillademos.org/files/8227/Select%20the%20apps%20minimum%20API%20requiements.png" style="width: 984px; height: 506px;"></p> + +<h2 id="下一步">下一步</h2> + +<p>接著可點擊「<strong>繼續 (Continue)</strong>」完成下個程序。</p> + +<p><img alt="When the details have been added to the page, clicking Continue moves onto the next step." src="https://mdn.mozillademos.org/files/8233/Continue%20option.png" style="width: 982px; height: 91px;"></p> + +<p>若要了解接下來的步驟,可繼續閱讀:<a href="/en-US/Marketplace/Publishing/Submit/Enter_your_apps_details">輸入 App 的細節</a>。</p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/next_steps/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/next_steps/index.html new file mode 100644 index 0000000000..47ef08f0d5 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/next_steps/index.html @@ -0,0 +1,16 @@ +--- +title: App 提交程序的下一步 +slug: Archive/Mozilla/Marketplace/Publishing/Submit/Next_steps +translation_of: Archive/Mozilla/Marketplace/Publishing/Submit/Next_steps +--- +<div class="summary"> +<p>現在你已經上傳了自己的 App,也更新了詳細資訊。接著讓你先了解接下來將完成的步驟。</p> +</div> + +<p><img alt="an interface screen on the Firefox Marketplace at the start of stage 4, where you are told you can enter some more information, starting with submitting a content rating for your app." src="https://mdn.mozillademos.org/files/6877/submit-app-stage4.png" style="width: 650px; height: 621px; display: block; margin: 0px auto;"></p> + +<p>如果你的 App 有其他語言版本,你可能想在繼續下一步之前,再補充 Marketplace 上的其他詳細資訊。這時可點擊「<strong>編輯資訊 (Edit Listing)</strong>」,或參閱《<a href="/en-US/Marketplace/Publishing/Submit/Edit_other_localizations">Edit other localizations</a>》進一步了解。不論如何,當然還是跟著流程一步步完成比較簡單。</p> + +<h2 id="下一步">下一步</h2> + +<p>這時可點擊「繼續 (<strong>Continue</strong>)」以進到下一步驟:《<a href="https://developer.mozilla.org/zh-TW/docs/Mozilla/Marketplace/Submission/Rating_Your_Content">取得 App 內容分級</a>》。</p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/overview/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/overview/index.html new file mode 100644 index 0000000000..8c00d35b23 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/overview/index.html @@ -0,0 +1,128 @@ +--- +title: Firefox Marketplace 概述 +slug: Archive/Mozilla/Marketplace/Publishing/Submit/Overview +translation_of: Archive/Mozilla/Marketplace/Publishing/Submit/Overview +--- +<div class="summary"> +<p>若要讓自己的 App 在 Firefox Marketplace 上架,就必須將 App 提交到 Marketplace 並通過審查。本頁將簡述 App 提交程序。另可參閱其他頁面以了解其他步驟。</p> +</div> + +<div class="note"> +<p>若要進一步了解各個步驟,請逐一參閱各個步驟之連結,並從 Step 1 開始整個程序。而此頁下方亦提供步驟關係圖。</p> +</div> + +<p>另可觀看提交程序影片:<a class="video-item" href="http://s.vid.ly/embeded.html?link=8k2n4w&autoplay=false">http://vid.ly/8k2n4w</a></p> + +<h2 id="提交程序">提交程序</h2> + +<p>接著就開始將 App 提交到 Firefox Marketplace 之上:</p> + +<dl> + <dt><a href="/en-US/Marketplace/Publishing/Submit/Sign-in_to_your_developer_account">Step 1 - 登入自己的開發者帳戶</a></dt> + <dd> + <ul> + <li>前往 <a class="external external-icon" href="https://marketplace.firefox.com/developers/">Firefox Marketplace 開發者交流中心 (Developer Hub)</a>。</li> + <li>點擊「提交您的應用程式至 Marketplace」 。<a class="button" href="https://marketplace.firefox.com/developers/submit/">Submit your app to the Marketplace </a></li> + <li>登入自己的開發者帳戶: + <ul> + <li>如果你尚未註冊,須先註冊。</li> + <li>如果你是第一次註冊,必須先同意〈Firefox Marketplace Developer Agreement〉。</li> + </ul> + </li> + </ul> + </dd> + <dt><a href="/en-US/Marketplace/Publishing/Submit/Load_your_app">Step 2 - 上傳 App</a></dt> + <dd>在<strong>「提交應用程式」</strong>頁面上: + <ul> + <li>設定免費\付費 App。</li> + <li>選擇 App 對應的平台。</li> + <li>選擇該 App 為托管\架設式 (Hosted) 或是封裝式 (Packaged): + <ul> + <li>若為托管\架設式 App,應在其 manifest 檔案中提供連結。</li> + <li>若為封裝式 App,請上傳 <code>package.zip</code> 檔案,且在驗證完畢之後,確認是否符合最低 API 需求。</li> + </ul> + </li> + <li>點擊<strong>「繼續」</strong>。</li> + </ul> + + <div class="note"> + <p>注意:你可能會看到「manifest 檔案」之正體中文翻譯為「安裝資訊檔」。</p> + </div> + </dd> + <dt><a href="/en-US/Marketplace/Publishing/Submit/Enter_your_apps_details">Step 3 - 輸入 App 的詳細資訊</a></dt> + <dd> + <p>在<strong>「編輯 App 詳細資訊」</strong>頁面:</p> + + <ul> + <li>依自己需要而修改 App 網址。</li> + <li>依自己需要而修改 App 相關說明 (manifest 檔案中所載)。</li> + <li>選擇 1 到 2 種分類。</li> + <li>提供隱私權政策。</li> + <li>若有首頁與支援服務網站,亦請提供。</li> + <li>提供支援服務的電子郵件位址。</li> + <li>說明該 App 是否須 Flash 支援功能。</li> + <li>上傳至少 1 張畫面截圖或影片。</li> + <li>提供額外說明\註記給 App 審查人員看 (如果 App 需要登入細節,應另外說明其理由)。另請注意,只有在你提交新版本 App 時,才能修改這些註記。</li> + <li>設定 App 是否在通過審查之後立刻上架。另請注意,只有在你提交新版本 App 時,才能修改此項設定。</li> + <li>點擊<strong>「繼續」</strong>。</li> + </ul> + </dd> + <dt><a href="/en-US/Marketplace/Publishing/Submit/Next_steps">Step 4 - 參閱「下一步」的細節</a></dt> + <dd>在<strong>「下一步 (Next Steps)」</strong>頁面上點擊<strong>「繼續」</strong>。</dd> + <dt><a href="/en-US/Marketplace/Publishing/Submit/Rating_Your_Content">Step 5 - 取得內容分級</a></dt> + <dd>在<strong>「內容分級」</strong>頁面: + <ul> + <li>點擊<strong>「建立 IARC 分級憑證 (Create an IARC Ratings Certificate)」</strong>以取得新的分級,另於 IARC 網站上完成分級問卷。</li> + <li>若要進入已取得之分級,須提供 <strong>Submission ID</strong> 與 <strong>Security Code</strong>。</li> + </ul> + </dd> + <dt><a href="/en-US/Marketplace/Publishing/Pricing/Introduction">Step 6 - 更新 App 目前對應的販售國別與付款細節</a></dt> + <dt style="margin-left: 40px;">Step 6a - 若為免費 App (且無 In-app purchases):</dt> + <dd style="margin-left: 40px;">在左側選單中點擊<strong>「相容性 (Compatibility)」</strong>。依自己需要而更改 App 即將販售的國別。</dd> + <dt style="margin-left: 40px;">Step 6b - 若為付費 App (或免費 App 但有 In-app payments):</dt> + <dd style="margin-left: 40px;">在左側選單點擊<strong>「相容性與付款 (Compatibility & Payments)」</strong> + <ul> + <li>設定你的付款服務供應商帳戶,如 Bango 與 Boku。</li> + <li>設定 App 價格。確認 App 是否提供應用程式內付款的產品,並選擇即將販售 App 的國別。</li> + <li>如果本為免費 App,須付費之後才能升級為較完整功能的「專業版」App,請先設定為免費 App。</li> + </ul> + </dd> + <dt style="margin-left: 40px;">Step 6c - 若 App 包含應用程式內付款的產品:</dt> + <dd style="margin-left: 40px;"> + <ul> + <li>在左側選單點擊<strong>「應用程式內付款 (In-App Payments)」</strong>,取得 API 金鑰與安全金鑰。(請注意,只要為 App 添增 API 金鑰與安全金鑰之後,就必須為 App <a href="/en-US/Marketplace/Publishing/Updating_apps">提交更新檔</a>。可參閱 <a href="/en-US/Marketplace/Monetization/In-app_payments">In-app payments</a> 進一步了解)</li> + <li>如果你使用 <a href="/en-US/Marketplace/Monetization/In-app_payments_section/fxPay_iap">fxPay</a>,則在左側選單點擊<strong>「In-App Products」</strong>,並逐一定義你的應用程式內付款產品。</li> + </ul> + </dd> + <dt><a href="/en-US/Marketplace/Publishing/Submit/Define_your_team">Step 7 - 設定開發團隊成員 (選填)</a></dt> + <dd>在左側選單點擊<strong>「團隊成員 (Team Members)」</strong>,並依自己的需要添增團隊成員資訊。</dd> + <dt><a href="/en-US/Marketplace/Publishing/Submit/View_your_listing">Step 8 - 檢視清單 (選填)</a></dt> + <dd>在左側選單點擊<strong>「檢視清單 (View Listing)」</strong>,檢視自己在 Marketplace 上的 App 清單。</dd> + <dt><a href="/en-US/Marketplace/Publishing/Submit/Edit_other_localizations">Step 9 - 編輯其他本地化清單 (選填)</a></dt> + <dd>在左側選單點擊<strong>「編輯清單 (Edit Listing)」</strong>,針對 App 的本地化內容而修改 App 的網址、說明、分類,或新增 Firefox Marketplace 所支援任何語系的細節。</dd> +</dl> + +<p>到此為止,你的 App 已進入審查程序。在左側選單點擊<strong>「狀態與版本 (Status and Version)」</strong>即可了解目前的審查進度。只要 App 提供應用程式內付款的產品,就必須加入 API 金鑰,且須在發佈 App 之前提交更新檔案。</p> + +<h2 id="流程圖">流程圖</h2> + +<h2 id="sect1"> </h2> + +<p><img alt=""></p> + +<h2 id="下一步?">下一步?</h2> + +<p>提交 App 完畢之後,你可能會需要:</p> + +<ul> + <li><a href="https://marketplace.firefox.com/developers/support">取得支援服務</a></li> + <li>取得下列資訊: + <ul> + <li><a href="https://hacks.mozilla.org/">「Hacks」部落格</a></li> + <li><a href="https://www.youtube.com/user/mozhacks">YouTube 上的「Hacks」影片頻道</a></li> + <li><a href="https://twitter.com/mozhacks">「Hacks」的 Twitter 意見</a></li> + <li><a class="external external-icon" href="https://marketplace.firefox.com/developers/#newsletter-signup">Apps 與 Hacks 電子報</a></li> + </ul> + </li> + <li><a href="https://wiki.mozilla.org/Marketplace/Contributing/Apps">獲得 Marketplace</a> 相關資訊</li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/submit/sign-in_to_your_developer_account/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/sign-in_to_your_developer_account/index.html new file mode 100644 index 0000000000..e46dbad938 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/submit/sign-in_to_your_developer_account/index.html @@ -0,0 +1,52 @@ +--- +title: 登入 Firefox Marketplace 上的開發者帳戶 +slug: >- + Archive/Mozilla/Marketplace/Publishing/Submit/Sign-in_to_your_developer_account +translation_of: >- + Archive/Mozilla/Marketplace/Publishing/Submit/Sign-in_to_your_developer_account +--- +<div class="summary"> +<p>在將 App 提交到 Firefox Marketplace 之前,必須先申請開發者帳戶,登入之後再接受開發者協定。</p> +</div> + +<h2 id="開啟開發者交流中心_(Developer_Hub)">開啟開發者交流中心 (Developer Hub)</h2> + +<ol> + <li>以瀏覽器開啟 <a href="https://marketplace.firefox.com">Firefox Marketplace</a>。</li> + <li>到 Firefox Marketplace 頁面底部點擊 (1) <strong>開發者交流中心</strong>。<img alt="Footer of the Firefox Marketplace home page showing the link to the Developer Hub" src="https://mdn.mozillademos.org/files/8125/Developer%20Hub%20from%20Marketplace.png" style="width: 983px; height: 272px;"></li> +</ol> + +<h2 id="開始_App_提交程序">開始 App 提交程序</h2> + +<ol> + <li>在交流中心的首頁上,找到 (1) <strong>提交您的應用程式至 Marketplace (Submit your app to the Marketplace</strong>)。<br> + <img alt="Developer Hub home page showing the Submit your app to the Marketplace button" src="https://mdn.mozillademos.org/files/8127/Developer%20Hub%20home%20page%20submit%20button.png" style="width: 1011px; height: 366px;"></li> + <li><a name="Step2">這時會出現「請登入」對話框,點擊 (1) <strong>登入 / 註冊 (Sign in / Sign up</strong>)。</a><br> + <img alt="The Developer Hub please sign in dialog displayed over the Marketplace Developer Agreement" src="https://mdn.mozillademos.org/files/8129/Please%20sign%20in%20dialog.png" style="width: 988px; height: 248px;"></li> + <li>接下來就看你是否註冊過 Mozilla Persona: + <ul> + <li>如果你沒用過 Persona,建議你註冊:<br> + <img alt="The first dialog of the Create Persona process" src="https://mdn.mozillademos.org/files/8131/Create%20Persona.png" style="width: 740px; height: 398px;">你可到<a href="https://login.persona.org/about">這裡</a>進一步了解 Persona + <ol> + <li>輸入電子郵件位址並點擊「<strong>Next</strong>」。</li> + <li>輸入新的密碼並再次確認,點擊「<strong>Done</strong>」。</li> + <li>到你剛剛提供的電子郵件信箱收取確認信。此郵件內含「<strong>Confirm your account now</strong>」的確認連結,點擊此連結。</li> + <li>在接下來的頁面 (跟上述 <a href="#Step2">step 2</a> 顯示的頁面相同) 上點擊「<strong>登入 / 註冊</strong>」。</li> + </ol> + </li> + <li>如果你已經註冊過 Persona,就請確認你想登入為開發者帳戶的電子郵件位址。<br> + <img alt="Sign in with an existing Persona identity" src="https://mdn.mozillademos.org/files/8133/signin%20with%20persona.png" style="width: 740px; height: 398px;"><br> + 點擊「<strong>Sign in</strong>」。</li> + </ul> + </li> + <li>就會看到開發者協定 (Developer Agreement)。<br> + <img alt="Read the developer agreement, select the option to receive information by email if you wish and agree to the agreement" src="https://mdn.mozillademos.org/files/8139/Agreement.png"> + <ol> + <li>請閱讀過開發者協定。</li> + <li>同意往後接收 App Developer 新聞與問卷 (當然還是看你本身意願)</li> + <li>點擊「同意並繼續 (<strong>Agree and Continue</strong>)」。</li> + </ol> + </li> +</ol> + +<p>接著就能進到下一步:<a href="/en-US/Marketplace/Publishing/Submit/Load_your_app">上傳你的 App</a></p> diff --git a/files/zh-tw/archive/mozilla/marketplace/publishing/updating_apps/index.html b/files/zh-tw/archive/mozilla/marketplace/publishing/updating_apps/index.html new file mode 100644 index 0000000000..57fb423374 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/publishing/updating_apps/index.html @@ -0,0 +1,27 @@ +--- +title: 更新 App +slug: Archive/Mozilla/Marketplace/Publishing/Updating_apps +translation_of: Archive/Mozilla/Marketplace/Publishing/Updating_apps +--- +<div class="summary"> + <p>本篇文章將針對已發佈的 App (自行發佈或於 <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> 上發佈),說明相關更新步驟。</p> +</div> +<div class="note"> + <p><strong>注意:</strong>如果 App 已通過 Marketplace 審查,而開發者想更改 App 的名稱,就必須再次提交 App 並重新審查。</p> +</div> +<h2 id="更新托管式_(Hosted)_App">更新托管式 (Hosted) App</h2> +<p>托管式 App 本質就是網頁,因此同樣依 Web 快取的常規而運作。但開發者亦可選用如 <a href="https://developer.mozilla.org/en-US/docs/HTML/Using_the_application_cache">HTML5 AppCache</a> 的進階機制以加快啟動速度。先了解這二點之後,更新 App 所使用的一般資源大概就沒有需要特別注意的地方了。</p> +<p>但 Open Web App 在處理 manifest 檔案時就不太一樣了。某些 manifest 的變動必須經過使用者許可。但根據 Web runtime 實作的不同,較難以確定是否會啟動更新作業。</p> +<p>如果要能確實解決此問題,開發者可於 manifest 檔案中添加「<code>version</code>」欄位。只要檢查 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.getInstalled"><code>navigator.mozApps.getInstalled()</code></a> 函式所回傳的值,即可了解目前的版本。如果消費者並未安裝最新版本,則可透過 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Apps.install"><code>navigator.mozApps.install()</code></a> 觸發更新作業。</p> +<p>Web runtime 並不會使用 <code>version</code> 的值,所以開發者可使用任何喜歡的版號設定格式。</p> +<p>另請注意,如果因更改 manifest 檔案而發生錯誤或毀損,則一旦將 manifest 檔案提交到 Firefox Marketplace 就會發現。嚴重錯誤將導致 App 無法出現在 Marketplace 之中。若是較不嚴重的錯誤,就可能會自動標定該 App 需要重新審查。</p> +<h2 id="更新封裝式_(Packaged)_App">更新封裝式 (Packaged) App</h2> +<p><a href="https://developer.mozilla.org/zh-TW/docs/Web/Apps/Developing/Packaged_apps/Packaged_apps">封裝式 App</a> 與托管式 App 的更新程序有所不同。在更新封裝式 App 時,開發者必須將 App 的新版 zip 檔案上傳至 Firefox Marketplace。更新過的 App 同樣要先通過審查,才能再發佈至 Marketplace 之上。如此將於 Firefox OS 手機上觸發更新作業。消費者亦可透過「Settings」App 要求進行更新。</p> +<p>若想進一步了解封裝式 App 的更新程序,可參閱下一章節。</p> +<h3 id="更新封裝式_App_相關細節">更新封裝式 App 相關細節</h3> +<p>接著提供封裝式 App 更新時的相關細節。如果你打算建構 App 商城,就可能必須特別注意。</p> +<ul> + <li>將更新過的封裝式 App 發佈之後,亦應更新 <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Packaged_apps#Packaged_apps_and_the_Firefox_OS_Marketplace">mini-manifest</a> 指向更新過的 ZIP 檔案 (請注意 mini-manifest 並非 App 的主要 manifest 檔案)。<code>ETag</code> 標頭亦將變更,且將觸發 Firefox OS 手機上的更新作業。</li> + <li>搭載於手機上的 Firefox OS 將每天一次,檢查 App 是否更新。Firefox OS 將檢查 mini-manifest 的網址,再檢查 mini-manifest 之內 <code>package_path</code> 的網址。只要使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/App">App 物件</a>上的 <code>checkForUpdate()</code> 函式即可進行此作業。一旦 <code>ETag</code> 標頭改變,該函式隨即得知 App 更新過,並將檢查 ZIP 檔案是否變更。</li> + <li>Firefox OS 將批次檢查 App 的更新檔案。</li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/submission/index.html b/files/zh-tw/archive/mozilla/marketplace/submission/index.html new file mode 100644 index 0000000000..2ac47dd745 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/submission/index.html @@ -0,0 +1,9 @@ +--- +title: Submission +slug: Archive/Mozilla/Marketplace/Submission +tags: + - NeedsTranslation + - TopicStub +translation_of: Archive/Mozilla/Marketplace/Submission +--- +<p>Marketplace submission</p> diff --git a/files/zh-tw/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html b/files/zh-tw/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html new file mode 100644 index 0000000000..efabe33036 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/submission/marketplace_review_criteria/index.html @@ -0,0 +1,80 @@ +--- +title: Marketplace 審查準則 +slug: Archive/Mozilla/Marketplace/Submission/Marketplace_review_criteria +translation_of: Archive/Mozilla/Marketplace/Publishing/Marketplace_review_criteria +--- +<div class="summary"> + <p>開發者若要透過 Firefox Marketplace 發佈 App,則必須先滿足本篇文章的所有條件。相關條件是為了均衡 Firefox Marketplace 開發者與消費者的需求所設計。開發者需要公平、一致、審查嚴格但不嚴苛的平台,以安心作為 App 的開發基礎;消費者希望 App 安全無虞、可在裝置上順利運作、確實進行 App 本身所載明的功能。下方所列的 App 條件,就是為了兼顧相關需求所設計。</p> +</div> +<p>先列出 Mozilla 的 App 審查原則:</p> +<ul> + <li>審查原則將謹遵公平、一致、寬容的態度與方法。App 審查程序不應只是為 Marketplace 把關,也應該要有受信賴的窗口可提供反饋意見,協助開發者更成功。</li> + <li>審查人員不是 QA 人員!審查期間會有人檢查 App 的 manifest 檔案,並以一般消費者的角度花個幾分鐘實際執行 App。</li> + <li>如果 App 未能通過審查,我們也會讓開發者清楚知道所發現的問題,並提供重新開發 App 的步驟。若時間許可且有相關資源,審查人員也會提供說明文件的連結給開發者,並建議可修正之處。</li> + <li>審查人員不會評斷 App 的外觀,而是單就 App 的運作情形進行審查。舉例來說,即使 App 是以橘色背景搭配紅色的文字,審查人員不會因為版面配色醜陋,而可能以「版面難以閱讀」的理由而退回該 App。</li> + <li>我們同時為開發者提供懷疑的空間。如果審查人員不確定是否該退回 App,就會先向開發者提出相關問題。我們不會因為開發者無法控制的平台問題,而 (故意) 退回 App。但如果我們無法讓 App 運作,可能會先暫緩 App 通過核准。</li> +</ul> +<h2 id="安全性">安全性</h2> +<p>可到這裡參閱 App 安全架構的相關細節:<a href="https://wiki.mozilla.org/Apps/Security">https://wiki.mozilla.org/Apps/Security</a></p> +<ul> + <li>App 的 manifest 檔案,必須與 App 本身的來源一致。</li> + <li>App 的 manifest 檔案,需經由伺服器附註<code> application/x-web-app-manifest+json 的</code> <code>Content-Type</code> 標頭。</li> + <li>只要是開發者尚未授權使用的內容,App 均不能以 iframe 或重新導向的方式將之載入。</li> + <li>必須在 App 的 manifest 檔案中指定必要權限,並說明索取該權限的理由。</li> +</ul> +<h2 id="隱私性">隱私性</h2> +<ul> + <li>開發者在提交 App 進行審查時,必須一併提供隱私政策的連結,但 Mozilla 並未特別要求隱私政策的內容與格式。開發者可使用我們的<a href="https://github.com/flamsmark/privacy-policy-template">隱私政策範本</a>,另可參閱我們的<a href="https://developer.mozilla.org/en-US/docs/Privacy_policies">隱私政策制定指南</a>。</li> +</ul> +<h2 id="內容">內容</h2> +<ul> + <li>若 App 違反 Mozilla 下方〈內容指南〉章節中所述條文,我們都將退回 App。如果你認為自己的 App 正遊走〈內容指南〉的規範邊緣,甚或該 App 尚未達到可提交的階段,都可要求審查團隊進一步查明。Mozilla 希望能協助所有開發者順利完成自己的 App,而不是耗時開發 App 之後卻遭退回。</li> + <li>從 2014 年 1 月開始,所有 App 均必須先取得國際年齡分級聯盟 (International Age Rating Coalition,IARC) 的內容分級。在提交 App 的過程中,Mozilla 將引導開發者完成簡短的問卷,接著就會立刻收到分級結果。可到<a href="https://developer.mozilla.org/en-US/Marketplace/Submission/Rating_Your_Content">這裡</a>了解分級程序的相關資訊。</li> + <li>提交到 Firefox Marketplace 的截圖與說明,必須能確實代表/呈現此 App。</li> + <li>在 App 的 manifest 檔案中,<a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Manifest#locales"><code>locale</code> 的鍵值</a>必須對應 App 所支援的本地化語系。若開發者提供波蘭文的 <code>locale</code> 鍵值,當然消費者會認為該 App 也具備波蘭文的版本。</li> +</ul> +<h3 id="內容指南"><strong>內容指南</strong></h3> +<p>Firefox Marketplace 將不會接受涉及下列內容的 App。且下方均為說明性的列表而非絕對的定義。Mozilla 亦將視情況而隨時更新。若 App 違反本內容指南所提及的任何內容,Mozilla 均有權立刻將該 App 自 Firefox Marketplace 中撤除。</p> +<ul> + <li>App 內容不得涉及任何色情圖素,亦不可帶有色情或暴力的暗示。</li> + <li>App 內容不得侵犯他人權利,包含智慧財產權或其他私有/公眾的財產權。</li> + <li>App 內容不得傷害 Mozilla 或使用者 (如電腦病毒、間諜軟體、惡意程式碼等)。</li> + <li>App 內容不得涉及非法或倡導非法活動。</li> + <li>App 內容不得欺騙、誤導、進行網路釣魚,或導致任何身分竊取之行為。</li> + <li>App 內容不得倡導賭博行為。</li> + <li>App 內容不得宣傳、廣告非法或受控制的產品與服務。</li> + <li>App 內容不得利用、剝削兒童。</li> + <li>App 內容不得貶損、威脅、恐嚇、鼓吹偏頗之行為,進而影響任何年齡、性別、種族、民族、國籍、性向、殘疾、宗教信仰、地理位置、受法律保障的個人或團體。亦不得鼓吹任何仇恨性的言論。</li> + <li>App 內容不得誤導使用者進行購買行為。</li> +</ul> +<h2 id="功能性">功能性</h2> +<ul> + <li>審查人員必須能執行該 App 所宣稱的主要功能。外觀瑕疵或不影響整體功能的不便之處,均將由審查人員回報給開發者,但不會影響該 App 最後的審查結果。</li> + <li>App 必不能影響系統的效能或穩定度。</li> +</ul> +<h2 id="使用性">使用性</h2> +<ul> + <li>開發者應根據目標平台,嘗試適當的最佳化 App 配置,進而避免某些錯誤,如: + <ul> + <li>提交為行動裝置用的 App,卻明顯是桌面裝置適用的網站。</li> + <li>App 明顯無法延伸到完整畫面。例如 320x480 的 App 只會佔用平板電腦的上半角落,剩下的畫面都空白一片。這種 App 當然不適用!</li> + </ul> + </li> + <li>App 必須有自己的瀏覽方式,而不需依賴瀏覽器工具列或實體的退回按鈕 (並非所有裝置都具備實體退回按鈕)。 + <ul> + <li>舉例來說,審查人員可能瀏覽到 App 中的某一處卻無法倒回之前的頁面。但也不必因為瀏覽的方便性,而硬要附上完整的瀏覽器工具列。</li> + <li>注意:現正針對舊版 Web 內容而開發 Gaia 的「wrapper」: <a href="https://github.com/mozilla-b2g/gaia/issues/2557">https://github.com/mozilla-b2g/gaia/issues/2557</a></li> + </ul> + </li> + <li>如按鈕與連結等的瀏覽元素,均應可輕鬆點擊使用。</li> +</ul> +<h2 id="黑名單政策">黑名單政策</h2> +<p>Mozilla 希望永遠都不會動用到黑名單機制,但仍保留將 App 撤除下架的權利。但只要發現已發佈的 App 違反安全性、隱私性、內容規範,或是嚴重影響系統/網路效能,我們將立刻撤除該 App。在將 App 列入黑名單之前,Mozilla 均將通知該 App 的開發者 (除非我們握有特定證據,否則會假設所有開發者都是善良好公民),並由 App 審查團隊提供完整協助,妥善溝通我們所發現的錯誤並儘力解決。以下特定情況絕對會將 App 列入黑名單並撤除下架:</p> +<ul> + <li>進行網路詐欺、網路釣魚</li> + <li>散佈垃圾郵件、垃圾訊息</li> + <li>在尚未更新內容分級 (即將建構此功能) 的情況下,私自將可愛小狗圖片 v1.0 換成暴力圖片 v1.0</li> + <li>App 對極高比例的使用者造成嚴重不當後果 ─ 拖慢手機效能、導致手機重新開機、遺失使用者資料等。而使用者無法辨別是否由 App 所引起,且重新開機亦無法解決相關問題。</li> + <li>App 用以進行網路攻擊,如分散式阻斷服務 (Distributed denial of service,DDOS)</li> + <li>(insert movie plot risk here)</li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/submission/pre-submission_checklist/index.html b/files/zh-tw/archive/mozilla/marketplace/submission/pre-submission_checklist/index.html new file mode 100644 index 0000000000..3299054ee5 --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/submission/pre-submission_checklist/index.html @@ -0,0 +1,36 @@ +--- +title: App 測試與疑難排解 +slug: Archive/Mozilla/Marketplace/Submission/Pre-submission_checklist +translation_of: >- + Archive/Mozilla/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting +--- +<div class="summary"> + <p>本文將說明 App 測試與疑難排解時的注意事項。</p> +</div> +<h2 id="設定自己的測試環境">設定自己的測試環境</h2> +<p>開發者可安裝多種工具,針對 Firefox OS/Open Web App 執行真正有效的測試。我們建議至少安裝下列工具:</p> +<ul> + <li>Firefox 桌面版。建議使用如 <a href="http://aurora.mozilla.org/">Aurora</a> 或 <a href="http://nightly.mozilla.org/">Nightly</a> 的預先發行版進行相關測試。</li> + <li>Firefox 行動版,即 Firefox for Android。同樣建議使用如 <a href="http://aurora.mozilla.org/">Aurora</a> 或 <a href="http://nightly.mozilla.org/">Nightly</a> 的預先發行版進行相關測試。如果開發者手上沒有實體的 Android 裝置,亦可使用 <a href="http://developer.android.com/sdk/">Android emulator</a>。</li> + <li><a href="https://developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager">Firefox OS 應用程式管理員 (App Manager)</a>。此工具已內建於桌面版 Firefox 26 或更高版本中,提供多項有用工具 (如 App 除錯),並可將 App 安裝至模擬器與實體裝置上。</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS 模擬器 (Firefox OS Simulator)</a>。如果開發者特別想在舊版 Firefox OS 上測試 App,即可使用此模擬器。針對 1.2 或更高版本,請使用「應用程式管理員 (App Manager)」。另可透過模擬器的控制面板,將 App 安裝至模擬器之中。</li> +</ul> +<p>最理想的情況,當然是能用實際裝置測試自己的 App。可參閱<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide">開發者手機指南</a>。</p> +<h2 id="測試">測試</h2> +<p>雖然 Open Web App 與網頁,均使用相同的技術和發佈方式,但因為 App 環境並不具備如 Chrome 瀏覽器的網址列或返回按鈕;且 Firefox OS 裝置也不像 Android 有實體的退回按鈕,所以使用者經驗是截然不同。以下步驟可讓開發者確保 App 達到絕佳的使用者經驗。</p> +<ol> + <li>安裝 App。確認 App 的圖示有出現在主畫面上,且 App 的名稱完整未遭截斷。</li> + <li>啟動 App。確認能正確偵測、顯示螢幕尺寸與方向。</li> + <li>確認消費者可馬上看到你的 App,而不是看到你的首頁。請記住,若消費者是從 Firefox Marketplace 上安裝你的 App,也就是購買了 App 的功能。不需再次傳送 App 功能的登錄頁面給消費者才對。理想的 App 應該讓消費者能第一眼就看到「Getting Started」或「Login」頁面。</li> + <li>從頭到尾執行過 App 的主要功能。特別注意瀏覽作業的最末端,還有內容縮放時的問題。</li> + <li>確認內容連結將導向 App 之外 (如連至其他網頁或 Twitter)。若要開啟新的視窗或框架,也要讓消費者能順利返回你的 App。</li> + <li>在桌面版瀏覽器中,可使用<a href="https://developer.mozilla.org/en-US/docs/Tools/Responsive_Design_View">適應性設計 (Responsive Design) 檢視</a>模式檢查 App 在不同螢幕尺寸中的情況。建議檢查 320x480 ~ 1260x800 的解析度。</li> +</ol> +<h2 id="疑難排解">疑難排解</h2> +<ul> + <li>如果需要 App 開發方面的協助,則可參閱<a href="https://developer.mozilla.org/zh-TW/docs/%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F-840092-dup">應用程式中心</a>上的豐富資訊,其中囊括了設計與開發技術、App 安裝作業、已支援的 API,還有更多。</li> + <li><a href="https://developer.mozilla.org/en-US/Firefox_OS">Firefox OS 專區</a>提供 Firefox OS 平台的豐富資訊,包含 Firefox OS 的建構、開發其內預設的 App 等。</li> + <li>若要了解提交作業,可參閱下個章節。</li> + <li><a href="/en-US/docs/Mozilla/Marketplace/FAQ">Marketplace 常見問題</a>,將針對 Firefox Marketplace 上的多樣 App 發佈問題,提供相關答案。</li> + <li>若有特殊問題需要解答,另可前往許多<a href="http://www.mozilla.org/about/forums/">相關討論區</a>,包含新聞群組、郵件群組、IRC 聊天室等等。另可參閱<a href="/en-US/Apps">應用程式中心</a>、<a href="/en-US/Firefox_OS">Firefox OS 專區</a>、<a href="/en-US/Marketplace">Marketplace 專區</a>等頁面,找到最高度相關的區塊!</li> +</ul> diff --git a/files/zh-tw/archive/mozilla/marketplace/submission/rating_your_content/index.html b/files/zh-tw/archive/mozilla/marketplace/submission/rating_your_content/index.html new file mode 100644 index 0000000000..0446f0240f --- /dev/null +++ b/files/zh-tw/archive/mozilla/marketplace/submission/rating_your_content/index.html @@ -0,0 +1,117 @@ +--- +title: 取得 App 內容分級 +slug: Archive/Mozilla/Marketplace/Submission/Rating_Your_Content +translation_of: Archive/Mozilla/Marketplace/Publishing/Submit/Rating_Your_Content +--- +<div class="summary"> +<p>Mozilla 與<a href="http://globalratings.com/">國際年齡分級聯盟 (International Age Rating Coalition,IARC)</a> 合作,將所有 App 均納入適用年齡分級規範。Mozilla 關心使用者,並認為使用者應能自行選擇適合自己的內容。凡 Firefox Marketplace 內的所有 App 均必須完成 IARC 分級。Mozilla 絕對在乎、愛護所有的 App,也必須要求所有 App 或遊戲完成內容分級。在 2014 年 5 月 15 日之後,只要是未完成內容分級的 App 均將強制從 Marketplace 下架。 而 IARC 另提供免費工具讓開發者進行內容分級。</p> +</div> + +<h2 id="有關_IARC_分級工具">有關 IARC 分級工具</h2> + +<p>IARC 是由多間國際級的分級委員會合力運作,針對以數位方式發佈於全球的 App 與遊戲,提供了相關工具作為內容分級的基準。只要填寫簡單表格,就會立刻收到所有分級委員會所制定的分級規範。此份規範不僅可協助消費者了解 App 的內容,亦可讓開發者不需個別取得各國的內容分級,進而大幅縮減成本與不便。</p> + +<h2 id="所支援的國際分級系統">所支援的國際分級系統</h2> + +<p>透過單一的分級精靈功能,即可產生不同系統、國家、所在地區的內容分級。</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">分級系統</th> + <th scope="col">支援國家</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="http://portal.mj.gov.br/classificacao/data/Pages/MJ6BC270E8PTBRNN.htm">Classificação Indicativa </a></td> + <td>Brazil</td> + </tr> + <tr> + <td><a href="http://www.esrb.org/">ESRB</a></td> + <td>Canada, Mexico, United States</td> + </tr> + <tr> + <td><a href="http://www.pegi.info">PEGI</a></td> + <td>Austria, Denmark, Hungary, Latvia, Norway, Slovenia, Belgium, Estonia, Iceland, Lithuania, Poland, Spain, Bulgaria, Finland, Ireland, Luxembourg, Portugal, Sweden, Cyprus, France, Israel, Malta, Romania, Switzerland, Czech Republic, Greece, Italy, Netherlands, Slovak Republic, United Kingdom</td> + </tr> + <tr> + <td><a href="http://usk.de/">USK</a></td> + <td>Germany</td> + </tr> + <tr> + <td>通用</td> + <td>其他所有國家適用</td> + </tr> + </tbody> +</table> + +<h2 id="內容分級包含哪些項目?">內容分級包含哪些項目?</h2> + +<p>分級系統將提供消費者三種資訊:</p> + +<ul> + <li>建議最低使用年齡 (The recommended minimum age) ─ 可能因各國民情風俗而有所差異。</li> + <li>內容說明 (Content descriptors) ─ 該項資訊將說明 App 的所有內容,讓消費者了解自己關心的要點。其內可能包含暴力、酒/藥品使用參考、驚悚指數、實際/模擬博奕行為等資訊。</li> + <li>互動要素 (Interactive Elements) ─ 該項資訊將提供 App 與消費者互動功能的相關細節,如分享個人資料、分享所在地理位置、應用程式內部付費機制、可下載的內容,或社交網路工具。</li> +</ul> + +<p>分級程序僅需幾分鐘且完全免費,並已整合至 Firefox Marketplace 提交程序與開發者主控頁 (Developer Dashboard) 中。任何 App 均必須先完成分級,Mozilla 才能進行後續審查作業。消費者可在 App 說明頁面上看到 App 對應所在地區的分級,並取得自己想進一步了解的相關資訊。</p> + +<h2 id="讓自己的_App_取得內容分級">讓自己的 App 取得內容分級</h2> + +<p>IARC 即提供免費的遊戲分級工具,且大多數的 App 都能輕鬆又快速的完成分級。接著來看看分級程序。</p> + +<div class="note"> +<p><strong>注意:</strong>Mozilla 並不接受其他系統的分級認證。即使 App 已經完成其他系統的內容分級,開發者仍需要完成 IARC 認證程序。</p> +</div> + +<ol> + <li>登入 Firefox Marketplace 開發者網站。你必須以開發者的身分登入,才會看到分級工具。</li> + <li> + <p>在 App 提交程序期間,就會進入 IARC 分級工具:</p> + + <p><img alt="Demonstrates where in the app submission flow where ratings can be entered." src="https://mdn.mozillademos.org/files/6579/submission_flow.png" style="width: 200px; height: 239px; border-width: 1px; border-style: solid;"></p> + + <p>或可從開發者主控頁中找到分級工具:</p> + + <p><img alt="" src="https://mdn.mozillademos.org/files/6623/from_nav_bar.png" style="border-width: 1px; border-style: solid; height: 199px; width: 200px;"></p> + </li> + <li> + <p>開始分級程序:</p> + + <p><img alt="" src="https://mdn.mozillademos.org/files/6583/start_the_rating_process.png" style="width: 600px; height: 242px; border-width: 1px; border-style: solid;"></p> + + <p>或可輸入現有分級的資訊:</p> + + <p><img alt="" src="https://mdn.mozillademos.org/files/6585/enter_existing_rating_info.png" style="width: 600px; height: 276px; border-width: 1px; border-style: solid;"></p> + </li> + <li> + <p>填寫簡單的問卷:</p> + + <p><img alt="" src="https://mdn.mozillademos.org/files/6587/questions.png" style="width: 600px; border-width: 1px; border-style: solid; height: 725px;"></p> + </li> + <li> + <p>添加 App 額外資訊:</p> + + <p><img alt="" src="https://mdn.mozillademos.org/files/6589/additional_info.png" style="width: 589px; height: 637px;"></p> + </li> + <li> + <p>預覽並確認分級資訊:</p> + + <p><img alt="" src="https://mdn.mozillademos.org/files/6591/confirm_info.png" style="width: 400px; height: 865px; border-width: 1px; border-style: solid;"></p> + </li> + <li> + <p>回到開發者主控頁就會看到分級資訊。接著就可準備上架!</p> + </li> +</ol> + +<div class="note"> +<p><strong>注意:</strong>開發者接著會收到電子郵件,內含分級認證與安全碼。請自行保留相關記錄備查。</p> +</div> + +<h2 id="更多資訊">更多資訊</h2> + +<p>如果開發者對分級程序、分級問卷填寫方式,或對分級結果有任何疑問,請寄發電子郵件至 <a href="mailto:dev-questions@globalratings.com">dev-questions@globalratings.com</a> 向 IARC 團隊詢問。另可前往<a href="http://www.globalratings.com/">全球分級網站</a>獲得更多資訊。</p> + +<p>其他任何問題,可聯繫 Mozilla 的 App 審查團隊 <a href="https://groups.google.com/forum/#%21forum/mozilla.appreview" title="appreview@lists.mozilla.org">mozilla.appreview</a>。</p> |
