各支付SDK流程

各支付SDK流程,第1张

一、微信支付

微信支付官方流程链接: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

简要来说流程如下:

1.用户点击商品下单:“商户客户端”调用“商户服务端”生成订单,“商户服务端”后台调用“微信支付系统”的“统一下单API”接口,生成预付订单后,返回给“商户服务端后台”,商户后台再回调给“商户客户端”。

2.用户确认支付:“商户客户端”调用“调起微信支付”接口,界面跳转到微信进行支付。

3.用户支付成功:这里有三个回调,其一、“微信支付系统”通知“商户管理后台”支付信息。其二、“微信支付系统”通知“微信客户端”支付结果。其三、“微信支付系统”通过“商户客户端”实现的回调中处理支付状态,“商户客户端”可通过调用“商户管理后台”的接口查询当前订单状态。(商户管理后台也需要调用“微信支付系统”查询订单接口)

二、支付宝支付

支付流程图:

支付宝支付对比微信支付流程还进行了简化,即在生成订单时,不需要商户后台请求支付宝生成订单,基本流程如下:

1.“商家APP”请求“商家后台”下单,“商家后台”返回订单信息。

2.“商家APP”根据订单唤起“支付宝App”进行支付。

3.支付成功后,“支付宝支付后台”返回支付结果给“支付宝App”,“支付宝App”返回支付结果给“商家App”、“支付宝支付后台”异步通知支付结果给“商家后台”。

三、苹果支付

流程图:

支付流程:

1.用户点击购买,“App客户端”请求“App服务端”创建交易订单。

2.“APP客户端”拿到交易信息,然后开始调起“IAP 服务器”创建订单。

3.“IAP服务器”通知购买成功,并把收据信息写入APP沙盒中。

4.“APP客户端”去沙盒中拿到收据信息,并将收据信息上传到“APP服务器”,“APP服务器”把收据信息请求“IAP 服务器”验证,如果有则返回到“APP客户端”,把订单结束。

参考链接: https://juejin.im/post/5a3b14f36fb9a045104aa6c8

点击 “协议、税务和银行业务”

内购用的是付费应用程序,先签署《付费应用程序协议》,同意后状态变更为“用户信息待处理”,等待审核。

状态更改完毕后,点击“开始设置税务、银行业务和联系信息”。

(1)添加银行账户,按照要求填写相关内容即可。

(2)选择报税表,并填写。所有与 Apple 有商业合作者必选都是美国,若有其他需求,可以多选。

继续填写,首先认证公司基本信息,选择所有人类型,确认无误后认证条款处打对勾

Part I 部分,继续核对公司相关信息,选填内容可不填。

Part III 部分,签署税务条约,设置利益限制条款的种类,选填内容可不填。此部分如果需要可勾选上下图勾选框,不需要可不勾选,我们这个项目没有用到part III 部分,所以没有勾选。

Part XXX 部分,确认之前填写的信息,勾选完毕后,提交

(3)填写联系信息,共5个。高级管理、财务、技术、法务、营销。只需要提供5个人的基本信息即可。

https://appstoreconnect.apple.com/apps/1604297713/appstore/addons?m=

只可使用一次的产品,使用之后即失效,必须再次购买。

示例: 钓鱼 App 中的鱼食。

只需购买一次,不会过期或随着使用而减少的产品。

示例: 游戏 App 的赛道。

允许用户在固定时间段内购买动态内容的产品。除非用户选择取消,否则此类订阅会自动续期。

示例: 每月订阅提供流媒体服务的 App。

允许用户购买有时限性服务的产品。此 App 内购买项目的内容可以是静态的。此类订阅不会自动续期。

示例: 为期一年的已归档文章目录订阅。

App 内购买项目的截屏,即所售项目的示意图。例如,如果 App 内购买项目是一本图书,您可以提交图书的截屏。您也可以提交购买页的截屏。该截屏仅用于 Apple 审核,不会在 App Store 中显示。

截屏要求如下:

iOS 至少需要 640 x 920 像素

Apple tvOS 需要 1920 x 1080 像素

macOS 需要 1280 x 800 像素

App 审核图像上传后,可以替换,但无法移除。当您的 App 内购买项目处于审核中时,您无法更新截屏。

https://appstoreconnect.apple.com/access/testers

沙箱账号是不能直接在App Store进行登录的,只能在点击了购买商品之后,在弹出的登录框进行登录 。

验证是否已登录沙箱测试账号:

设置--iTunes Store与App Store,页面拉到最底部,会看到沙箱账户项会列出你已登录的沙箱测试账号!

操作方法一:打开App Store应用首页滑到最下方--选中AppleID--注销

操作方法二:设置--iTunes Store与App Store--选中AppleID--注销

checks if the client can make payments(检测App是否能支付)

getAvailablePurchases

Get all non-consumed purchases 获取未消费的商品

打印信息查询;

原因:

没有先执行getProducts,直接执行requestPurchase方法,要先拉取商品列表,再执行购买操作.

问题描述;

1.漏单必须要处理,玩家花RMB购买的东西却丢失了,是绝对不能容忍的。所谓的漏单就是玩家已经正常付费,却没有拿到该拿的道具。

解决:只要购买成功,便将购买记录(receipt等账单信息)保存下来,然后将账单信息传送给我们游戏服务器,游戏服务器获得账单后,和苹果服务器验证,账单有效的话,回馈给游戏服务器处理,游戏服务器处理后,返回给游戏客户端处理,处理完毕,将本地保存的购买记录删除。

https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html 官方文档:向苹果校验支付凭证

21000 App Store无法读取你提供的JSON数据

21002 收据数据不符合格式

21003 收据无法被验证

21004 你提供的共享密钥和账户的共享密钥不一致

21005 收据服务器当前不可用

21006 收据是有效的,但订阅服务已经过期。当收到这个信息时,解码后的收据信息也包含在返回内容中

21007 收据信息是测试用(sandbox),但却被发送到产品环境中验证 【请求sandbox校验支付凭证】

21008 收据信息是产品环境中使用,但却被发送到测试环境中验证

消耗类型: 例如:金币、道具等。

非续订订阅: non-renewable subscription 例如:VIP

您的首个 App 内购买项目必须以新的 App 版本提交。请创建您的 App 内购买项目,然后前往 App 的“App Store”页,从“App 内购买项目”中进行选择,点按“提交”。 了解更多

在上传二进制文件并提交首个 App 内购买项目以供审核后,您可以使用下表提交其他 App 内购买项目。

唐巧-iOS应用内付费(IAP)开发步骤列表

未完~待续

当使用内购购买过商品之后没有把这个交易关闭,所以再次去购买商品后就会调用以前已经购买成功的交易去购买因为已经购买过,才会有这个提示

原因:添加内购项目时,信息填写不完整,app审核图像未上传

处理方法:上传app审核图片( 合适的尺寸 ),点击提交,状态改为正在准备审核中。

这个是内购选择类型不匹配原因导致。

购买成功之后,Apple会返回以下四个数据给应用

Reference

Review the updated Paid Applications Schedule.

游客身份解决方案:即不登录也要能购买

1)服务器端做一个苹果审核机制,审核期间游客身份可以进行一切行为,一旦审核通过,修改服务端即可达到强制用户登录进行内购买的目的(这个有点。。。)

2)游客可以进行内购买,购买时以设备UUID为准,生成一个游客账号,将购买信息保存在服务器和本地,当用户登录正式账户后判断此设备是否进行过内购,有的话提示用户将游客身份购买的权益与现有账号绑定,如果绑定,游客权益则迁移到正式账户,如果不迁移,则游客身份和正是账户是两个独立账户,正式账户不享有游客身份的权益(我用的这个)

内购游客模式解决方案

iOS内购规则

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/264677.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存