使用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
...
...
...