使用PNS(Push Notification Service)
Last updated
Last updated
ONE store為開發者提供兩種Push Notification Service。
第一種是PNS(Payment Notification Service,支付通知服務),當發生In-App商品支付或取消支付時,ONE store向開發公司伺服器發送通知。
第二種是SNS(Subscription Notifacation Service,訂閱通知服務),在訂閱狀態發生變化時向開發公司伺服器發送通知。
注意
由於notification可能因發送/接收伺服器的狀態而延遲或丟失,因此不建議以接收notification為準提供App商品(服務)。
如果您想以伺服器到伺服器方式確認是否正常付款,我们建議您使用相關伺服器API進行查詢,而不是使用PNS notification。
ONE store可能會進行付款測試以便驗證和監控,在付款/取消付款時,這些測試也會收到同樣的notification。ONE store的付款測試歷史紀錄會定期由ONE store自行取消。
您可以通過點擊"開發者中心>Apps>App商品選擇>In-App資訊"選單中的"管理PNS"按鈕來設置接收PNS的開發公司伺服器的URL。
URL可以分別設置Sandbox(開發用)支付環境和商用(包括商用测试)支付環境,如果開發用/商用伺服器相同,則輸入相同的URL即可。
URI : 在開發者中心設置的 Payment Notification URL
Method : POST
Request Parameters : N/A
Request Header
Parameter Name
Data Type
Description
Content-Type
String
application/json
Request Body : JSON格式
Element Name
Data Type
Description
msgVersion
String
消息版本
開發(Sandbox) : 3.0.0D
商用(商用測試) : 3.0.0
packageName
String
應用軟件的包名
productId
String
In-App商品的商品ID
messageType
String
SINGLE_PAYMENT_TRANSACTION 固定
purchaseId
String
購買ID
developerPayload
String
由開發公司管理以標示購買件的標示符
purchaseTimeMillis
Long
在ONE store支付系统中完成支付的時間(ms)
purcahseState
String
COMPLETED : 已支付 / CANCELED : 取消
price
String
支付金額
priceCurrencyCode
String
支付金額貨幣代碼(KRW, USD, ...)
productName
String
請求購買時,如開發公司設置了customized In-App商品標題則傳達
paymentTypeList
List
支付資訊列表
paymentMethod
String
amount
String
billingKey
String
用於擴展的付款密鑰
isTestMdn
Boolean
是否是測試機(true : 測試機, false : 非測試機)
purchaseToken
String
購買token
environment
String
支付環境
開發(SANDBOX) : SANDBOX
商用 :COMMERCIAL
marketCode
String
市場分類編碼 ( MKT_ONE : ONE store, MKT_GLB : Global ONE store)
signature
String
此消息的signature
Example
paymentMethod
支付方式名稱
說明
DCB
手機支付
在運營商費用帳單上以"資訊使用費"项目收取
PHONEBILL
手機小額支付
在運營商費用帳單以"小額支付"項目收取
ONEPAY
ONE pay
ONE store提供的簡易付款
CREDITCARD
信用卡
一般信用卡支付
11PAY
11Pay
SK Plannet提供的信用卡便捷支付
NAVERPAY
N pay
Naver提供的Naver pay支付
CULTURELAND
Culture cash
韓國文化振興提供的Culture cash支付
TELCOMEMBERSHIP
通訊公司會員
通訊公司提供的會員付款
OCB
OK cashbag
SK Plannet提供的OK cashbag支付
POINT
ONE store point
ONE store point支付
ONESTORECASH
ONE store cash
ONE store cash支付
COUPON
ONE store coupon
ONE store coupon支付
EWALLET
e-Wallet
e-Wallet支付
BANKACCT
銀行帳戶支付
一般銀行帳戶支付
PAYPAL
PAYPAL
paypal支付
MYCARD
My card
智冠科技提供的MY CARD付款
使用下面的代碼,您可以檢查signature是否偽造。
"代碼"中的PublicKey是指"開發者中心 > Apps > In-App資訊 > 認證與許可證"中提供的許可證密鑰。 有關許可證密鑰的詳細資訊,請參閱 "In-App支付的預準備頁面的"驗證許可證密鑰和OAuth認證資訊"部分。
URI : 在開發者中心設置的Subscription Notification URL
Method : POST
Request Parameters : N/A
Request Header
Parameter Name
Data Type
Description
Content-Type
String
application/json
Request Body : JSON格式
Element Name
Data Type
Description
msgVersion
String
消息版本
開發(Sandbox) : 3.0.0D
商用(商用测測試) : 3.0.0
packageName
String
應用軟件的包名
eventTimeMillis
Long
event發生時間
subscriptionNotification
Object
支付資訊目錄
version
String
訂閱提醒消息版本
notificationType
Integer
訂閱狀態
purchaseToken
String
购买Token
productId
String
In-App商品的商品ID
environment
String
支付環境 · 開發(Sandbox) : SANDBOX · 商用 :COMMERCIAL
marketCode
String
市場分類代碼 ( MKT_ONE : ONE store, MKT_STM : storm )
Example
訂閱狀態
訂閱代碼
说明
1
SUBSCRIPTION_RECOVERED
定期支付已從保留狀態恢復。
2
SUBSCRIPTION_RENEWED
已更新定期支付。
3
SUBSCRIPTION_CANCELED
客戶要求解除定期支付。
4
SUBSCRIPTION_PURCHASED
您購買了新的定期支付商品。
5
SUBSCRIPTION_ON_HOLD
由於支付失敗,定期支付處於保留狀態。
6
SUBSCRIPTION_IN_GRACE_PERIOD
由於支付失敗,定期支付處於延期狀態。
7
SUBSCRIPTION_RESTARTED
客戶取消了解除定期支付的要求。
8
SUBSCRIPTION_PRICE_CHANGE_CONFIRMED
用戶同意变更定期支付的價格。
9
SUBSCRIPTION_DEFERRED
已延长定期支付的使用期限。
10
SUBSCRIPTION_PAUSED
已暫停定期支付。
11
SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED
已变更暂停定期支付的日程。
12
SUBSCRIPTION_REVOKED
已立即解除定期支付。
13
SUBSCRIPTION_EXPIRED
定期支付已到期。
ONE store中的PNS伺服器通過HTTP(S)請求向開發公司伺服器發送notification。
此时,開發公司伺服器应以200回應HTTP Status Code,表示已正常接收notification。
如果由於網絡延遲而丢失,或者由於開發公司伺服器的異常情况,HTTP Status Code未能以200進行回應,PNS伺服器將認為notification傳輸失敗,並在3天内最多执行30次重傳。
Notification的重傳是在具有一定delay後執行,如下例所示,當重試次數增多時,delay會逐渐增加。 Example
次数
delay (秒)
重傳时间
0 (首次)
0
2020-05-17 13:10:00
1
30
2020-05-17 13:10:30
2
120
2020-05-17 13:12:30
3
270
2020-05-17 13:17:00
4
480
2020-05-17 13:25:00
...
...
...