In-App支付測試及安全性

概要

One store在開發環境(以下稱"Sandbox")和商用支付環境(以下稱"商用測試")中支持In-App商品的支付測試。 Sandbox不是商用支付環境,而是虛擬支付環境。在支付界面中,如果您在支付失敗或成功時選擇了您所希望的回應,系统就會發送相應的回應结果。 商用測試是在商用支付環境中進行相應In-App商品的支付,並發送支付结果。 在商用測試環境下進行支付時,如不取消支付,則可能會產生費用,因此在支付測試後一定要取消支付。

  • 所有In-App商品必須在Sandbox裡進行1次以上測試,首次註冊商品時,如有1個个未進行測試的In-App商品,則無法激活驗證請求按鈕。

  • 為了在Sandbox及商用環境下進行測試,需事先將One store ID註冊為測試ID。 如果用未註冊的One store ID進行測試,則無法在Sandbox進行測試,且在商用測試環境下,進行的會是實際商用支付,而非測試商用支付,會導致產生實際費用,因此需要注意。

  • One store對通過測試ID支付的訂單不負有責任。測試ID的管理及支付測試請在開發公司内部負責人的監管下進行。

In-App支付測試流程

In-App支付測試界面

在開發者中心>Apps > 商品選擇 > In-App資訊界面點擊"支付測試"按鈕,即可出現In-App支付測試界面。 可以在"In-App支付測試"界面裡管理測試ID或查詢支付測試的歷史紀錄。

註冊及管理測試ID

為了在開發及商用環境中測試In-App支付,必須事先註冊測試ID。 在In-App支付測試界面中選擇"註冊/管理測試ID"Tab,可轉至管理測試ID的界面。 測試ID為One store用戶ID,可查詢在One store註冊的會員ID進行註冊。 如果不是One store會員,則可以運行One store應用軟件,創建一個測試用的One store ID後,然後將該ID註冊為測試ID即可。

註冊測試ID

  • 查詢要作為測試ID的One store會員ID。

  • 確認查詢的One store ID後,用該測試ID選擇在哪个支付環境(Sandbox,商用測試)進行支付測試。

  • 必要時輸入參考事項,單擊註冊按鈕註冊測試ID。

一个測試ID只能選擇一个支付環境,而支付環境設置可隨時更改。

  • 用已註冊的測試ID,可以設置進行支付測試的環境。

  • 更改測試ID的支付環境時,必須點擊"保存",保存新的設置。

刪除測試ID(個別刪除,批量刪除)

  • 測試ID不再有效時,可刪除測試ID。

  • 可以點擊"刪除"按鈕後刪除個別測試ID,也可以選擇多個測試ID後點擊"刪除已選ID"按鈕進行批量刪除。

複製測試ID設置

  • 如果同一測試ID可以在多個應用軟件使用,則可以將測試ID設置複製到其他應用軟件。

  • 只有可複製的應用軟件才能點擊check box,選擇好要複製的測試ID設置的對象軟件後,點擊"複製"。

Sandbox環境下的支付測試(必選)

Sandbox支付測試及驗證

Sandbox不是商用支付環境,而是虛擬支付環境。在支付界面中,如果您在支付失敗或成功時選擇了您所希望的回應,系统就會發送相應的回應结果。

在Sandbox支付的訂單可以在In-App支付測試界面的"Sandbox"tap上查詢,也可以取消支付。

所有In-App商品必須在Sandbox裡進行1次以上測試,首次註冊商品時,如有1個未進行測試的In-App商品,則無法激活驗證請求按鈕。

測試環境(商用和Sandbox)資訊與One store服務連接期間保存在memory。 如果通過開發這中心變更了測試ID的測試環境,則必須中止應用軟件定重新啟動。

只有當測試ID設置為Sandbox時,才能進行Sandbox支付測試。 未進行Sandbox支付測試的App商品,In-App商品的測試與否值設置為"N",如果進行測試,則更改為"Y"。

訂閱型商品的sandbox測試

開發訂閱型商品時,如果設定與實際時間相同的支付周期,測試就需要很長的時間。 為此,Sandbox環境支持按訂閱周期調整所需時間,使測試更加順利。 根據每個支付周期和功能,Sandbox内的時間流如下。

支付周期

Sandbox 內時間

1周

5分

1個月

5分

3個月

10分

6個月

15分

1年

30分

功能

Sandbox 内時間

免費訂閱

3分

延期時間

5分

保留帳號

10分

反映價格變更 (7天)

5分

價格變更同意期間 (30天)

5分

商用測試環境下的支付測試(可選)

商用測試是在商用支付環境中進行相應In-App商品的支付,並發送支付结果。 商用測試支付的訂單可以在In-App支付測試界面"商用測試"tab查詢,也可以取消支付。 在商用測試環境下進行支付時,如不取消支付,則可能會產生費用,因此在支付測試後一定要取消支付。

  • 測試ID設置為商用測試,才能在商用測試環境下進行支付測試。

  • 如果使用未設置成商用測試的測試ID或未註冊為測試ID的One store ID進行支付時,將進行實際的商用支付而非測試的商用支付,請注意這會產生實際費用。 實際發生商用支付時,請立即向One store發送支付資訊,請求取消支付。

In-App支付测试的支付结果确认及取消支付

您可以对In-App支付測試歷史紀錄進行支付狀態確認及取消支付。 在Sandbox中支付的紀錄可以在In-App支付測試畫面的"Sandbox"Tab上查詢,在商用測試中支付的紀錄可以在In-App支付測試畫面的"商用測試"Tab上查詢。

Sandbox環境

  • 提供在Sandbox環境下進行的支付測試的歷史紀錄

  • 可以查詢已支付的商品資訊及支付狀態,也可以取消支付。

商用測試環境

  • 提供在商用測試環境下進行的支付測試的歷史紀錄。

  • 可以查詢已支付的商品資訊及支付狀態,也可以取消支付。

安全性和認證

In-App支付的安全性

  • ONE store In-App支付使用簽名(Signature)的有效性認證方法驗證數據是否偽造和篡改,以確保安全支付。 由於手機應用軟件暴露在許多攻擊的威脅下,為了將這種危險降到最低,建議在開發公司應用軟件或服務器進行簽名認證。 下面是開發公司為了更安全的In-App支付需要進一步準備的事項。

  • 使用開發公司服務器

    • 為了有效避開APK Reverse Engineering等的攻擊,體現代碼和Public key等可以在服務器中保管並進行認證。 在存儲購買資訊時,比起存儲在智能手機,建議最好存儲在開發公司服務器,來確認商品的使用許可。

  • 使用已更改的代碼

    • One store提供的api sample是向很多人開放的代碼,比起直接使用原件,建議修改后後使用。 如果使用相同的代碼,那么就很容易暴露在攻擊的危險中。

    • 最好使用Proguard等代碼混淆工具保護支付相關代碼。

    • 即使是Public Key,在軟件代碼中加入普通字符串也不是安全的方法。建議例如與其他字符串進行XOR以避免輕易暴露等,使攻擊者無法輕易接近,這是安全的。

  • 要求支付时使用"developerPayload"字段

    • 開發公司在要求支付時,可將任意資訊放入"developerPayload"字段中,并在完成支付后重新收到信息。

    • 在相應字段中加入组合了timestamp等的附加安全驗證的數據,可以使支付结果的驗證更加安全。

One store In-App支付認證方法

  • 認證準備

    • 為了認證的Key算法使用RSA方式,採用'SHA512withRSA'作為簽名的算法。 簽名驗證Key請參考應用One store In-App支付的事前準備頁面中的"許可證密鑰及OAuth認證資訊確認"部分。 簽名簽證KEY的值,根據智能手機或服務器等認證的位置適當存儲並用。

  • 簽名認證api sample

    • SDK提供"AppSecurity"Utility的Class,可使用"verifyPurchase"Method進行簽名認證。 如果開發公司想不使用SDK,直接進行簽名認證,則必須直接實現"AppSecurity"相同功能的代碼。 詳細的實現內容參考與SDK library一起發放的sample。

Last updated