苹果内购服务器验证凭证回执Data

苹果内购服务器验证凭证回执Data,第1张

基本上所有的 操作都可以再前端完成操作,包括对支付凭证的验证,但是如果在客户端验证凭证可能存在被篡改的危险,

服务器去重验证和加款,是建立在 用户已经在前端支付成功,然后由ios会得到一个字节流,然后 base64后转给 后台。

后台通过这个字符串 去请求苹果的服务器,然后得到一个json字符串去给用户加款,其中注意事项为

//沙箱static final String testUrl = "https://sandbox.itunes.apple.com/verifyReceipt"

//正式 static final String product =  "https://buy.itunes.apple.com/verifyReceipt"

请求苹果地址 返回的 内容

conten-type = application/json

请求的苹果的内容为String param = "{\"receipt-data\":\""+客户端返回的base64+"\"}"

{

"receipt": {

"receipt_type": "ProductionSandbox",

"adam_id": 0,

"app_item_id": 0,

"bundle_id": "com.rtjk.xshl",//当前的产品的包名,一定要验证返回的包名和此包名要一致

"application_version": "2018101001",

"download_id": 0,

"version_external_identifier": 0,

"receipt_creation_date": "2018-10-19 10:50:48 Etc/GMT",

"receipt_creation_date_ms": "1539946248000",

"receipt_creation_date_pst": "2018-10-19 03:50:48 America/Los_Angeles",

"request_date": "2018-10-31 01:58:21 Etc/GMT",

"request_date_ms": "1540951101844",

"request_date_pst": "2018-10-30 18:58:21 America/Los_Angeles",

"original_purchase_date": "2013-08-01 07:00:00 Etc/GMT",

"original_purchase_date_ms": "1375340400000",

"original_purchase_date_pst": "2013-08-01 00:00:00 America/Los_Angeles",

"original_application_version": "1.0",

"in_app": [

{

"quantity": "1",

"product_id": "6hongliao",//对应产品id,自己做一个金额的映射就行,对应到具体的金额,建议命名要规则

"transaction_id": "1000000460004095",//一定要进行去重验证,一个订单号只能加一次款

"original_transaction_id": "1000000460004095",

"purchase_date": "2018-10-19 10:50:48 Etc/GMT",

"purchase_date_ms": "1539946248000",

"purchase_date_pst": "2018-10-19 03:50:48 America/Los_Angeles",

"original_purchase_date": "2018-10-19 10:50:48 Etc/GMT",

"original_purchase_date_ms": "1539946248000",

"original_purchase_date_pst": "2018-10-19 03:50:48 America/Los_Angeles",

"is_trial_period": "false"

}

]

},

"status": 0, //表示当前请求返回正常

"environment": "Sandbox"

}

hi~在授权的时候有state这个字段,授权成功后会返回原内容,用他来判断是否是从您这边发起的,可以放到session中,然后获取到accesstoken,然后调用get_token_info,去验证uid和accesstoken是否匹配,uid是否合法可以通过usershow来验证

1.集成

集成内购的流程网上还是有很多的,在这我就不班门弄斧了。

附上几个比较好的链接:

(1)http://www.jianshu.com/p/f7bff61e0b31 这个写的相当详细,里面也有一些细节,作者很好,给了我很多帮助。

(2)http://www.jianshu.com/p/86ac7d3b593a 这个也是比较详细

(3)http://www.jianshu.com/p/479cf9e31104

以上三个链接足够你集成走通整个内购流程了。

2.遇到的坑

(1)集成税务时添加的银行卡必须是大银行的银行卡,因为是需要填写CNAPS CODE。一些小银行和地区银行查不到或者不好查。首选中国银行。附上查询链接: https://e.czbank.com/CORPORBANK/query_unionBank_index.jsp

(2)提交税务最后时,需要重新弄一次信息,这里16年底有了更新,需要注意的是tax information的第三条选择身份(type of beneficial owner)要选择公司

总的来说这最后一部分协议 大体上是1,2,3,14(选a)part xxx勾选上最后勾选上就行

(3)添加内购项目时,注意只能购买苹果规定价格的商品,不能自定义价格。还有下方的图片必须添加,那个是内购弹窗的图片,不添加的话会显示元数据丢失

(4)添加内购时,构架新版本下方有个添加app内购买项目,只有添加后应用内才能获取到,否则获取不到产品信息。如果后续需要添加新内购项目也可以提交新版本,新版本会和第一次提交一样会出现添加内购项目。还有一种方法是不提交版本 只在后面添加内购的地方提交审核。在审核通过后不会直接能使用。我之前是上午九点左右通过新项目审核,但是直到12点才能购买新内购项目。

(5)沙盒账号使用方法:在App Store中退出自己的账户,然后点击支付会提示你登录,这时可以登录自己的沙盒账号。链接:http://www.jianshu.com/p/1ef61a785508

(6)验证,验证方式分为两种,一种是单机验证,一种是服务器验证。一般情况下我们都是弄成服务器验证。这是需要获得本地返回的

receipt编码后传入服务器,这个有个固定格式,需要注意是服务器处理还是前端处理

(7)如果请求商品数量为0,且商品在不可用商品数组里面。有好几种原因。

1.没有使用Explicit App ID。

2.在iTunes Connect中,苹果拒绝了你最新向iTunes Connect提交的二进制码。

3.你没有清除iTunes Connect中在售的IAP产品。

4.没有使用与正确的App ID相关联的Provisioning Profile注册你的应用程序。

5.可能修改了商品,但是这些修改没有在所有App Store的服务器中生效。

6.未能完成所有财政需求表。更多信息请查看: Contracts, Tax, and Banking

7.你的商品由苹果托管上,内容尚未上传至iTunes Connect上。更多关于上传托管内容的信息请查看: Hosting Non-Consumable Products with Apple

注:商品内容上传到iTunes Connect上之前,你的商品标识符将是无效的。如果内容还没准备好,那么可在iTunes Connect中禁用Hosting Content with Apple功能便可以解决这个问题。一旦内容准备好可以上传了,就可重新启用该功能。

8.在iTunes Connect中指定的商品标示符与应用程序中SKProductsRequest对象所使用的标示符不匹配。更多关于商品标示符的信息请查看: Technical Q&A, QA1329, 'In-App Purchase Product Identifiers' 。

但是一般情况下只要bundle id 和上面的一致 切商品已经处理好 就可以请求到。

9.提交新内购项目时,如果和新版本一起提交,新类型一定要在新版本中显示,否则新内购不能显示展示。会出现被拒的情况。一般新的内购买新项目可以单独提交。这样可以规避。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/277248.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-20
下一篇2023-04-20

发表评论

登录后才能评论

评论列表(0条)

    保存