- 1、在 AppStore 中创建相应的物品创建App内購一退二退沙盒测试账号
- 2、客户端从后台获取相应的物品 ID (当然也可以再客户端写死,但后期扩展性就受限制了)
- 3、依据相应的物品 ID 请求商品的相关信息
- 4、依据商品信息创建订单请求交易
- 5、依据返回的订单状态处理交易结果
- 6、请求后台再次验证订单状态
- 7、依据后台返回结果處理相关逻辑
2、创建App内购一退二退物品以及沙盒测试账号
- 已经有朋友写出了完善的教程请参考如下链接,一步一步来就可以
3、客户端编寫相关代码
- 再这里我把和支付相关的逻辑都抽取到了一个单例中在最后贴上个人梳理的相关代码大家一起学习
4、做App内购一退二退过程中遇到的坑
-
1、App内购一退二退沙盒账号在支付成功后,再次购买相同 ID 的物品会提示如下内容的弹窗。
您已购买此 App App内购一退二退买项目此项目将免费恢复。
将支付信息添加进苹果的支付队列后苹果会自动完成后续的购买请求,在用户购买成功或者点击取消购买的选项后回调
方法返回响应的结果信息在该方法内除了得到响应的支付信息编写自身的业务的代码外还要记得调用
方法通知苹果的支付队列该交易已經完成,否者就会已发起相同 ID 的商品购买就会有此项目将免费恢复的提示
-
在 SKPaymentQueue 被启动并且添加了 addObserver之后,如果其判断到有未完成的交易会主动调用paymentQueue updatedTransactions 这个方法来继续完成相关的交易流程,所以如果在上面那种情况下得到结果后不去调用 finish 接口下次重新开启支付流程就会检查未唍成的支付并调用该接口。
6、App内购一退二退验证凭据返回结果状态码说明
-
- 21006 收据是有效的但订阅服务已经过期。当收到这个信息时解码後的收据信息也包含在返回内容中
- 21008 收据信息是产品环境中使用,但却被发送到测试环境中验证
- 注:此部分内容后期再详细添加 ^_^
发布了8 篇原創文章 · 获赞 1 · 访问量 7万+