应用内购买validation – 按用户validation购买

我在应用程序中成功实施了应用内购买。

我的查询是:

有一个苹果ID xyz@apple.com通过我login到iPad或设备的iTunes。 现在在我的应用程序中有几个用户 。 他们将通过应用内购买来购买产品。 我的产品是非消耗品。 现在,例如有两个用户A和B(他们login到我的应用程序,所以他们是应用程序用户)。

案例: 用户购买产品使用苹果识别码xyz@apple.com进行应用程序内购买,并获得购买产品成员的用户权利(这里是我成功完成付款后,我打电话给networking服务,使他/她已经购买了用户数据库更新产品)并从我的应用程序注销。 现在用户Blogin到我的应用程序,并购买产品以及用户A购买(这里请注意,苹果ID是相同的xyz@apple.com)。 但是,当他试图购买产品苹果说,“你已经购买了这个。点击确定再次下载免费”,所以用户点击确定,这个产品将再次恢复为每个用户,并再次成功的方法,我打电话给networking使用户数据库更新的服务。

所以问题是我怎么能不同的用户,而购买产品,从这个ID(即xyz.apple.com),你已经购买,现在用户应该是不同的,那么你必须login使用另一个苹果ID(可能是abc.apple。 COM)。

最后我解决了在应用程序购买问题与以下解决scheme:

1)我得到交易ID和更新与数据库按用户如果事务ID发现重复,那么它会抛出错误,不要使用户作为付费会员。

意思是当用户进行购买,然后我得到它的transaction_id,并更新到数据库作为用户名:A和transaction_id:XYZ。 如果B用户去购买相同的iTunes ID,那么我会得到相同的transaction_id是XYZ。 所以这里不允许用户继续进行(即从Web服务不要让用户被支付成员并给出错误)。 以下是代码:

-(void)callinApp : (SKPaymentTransaction*) transaction { if (transaction.originalTransaction.transactionIdentifier == nil) { // send transection.transactionIdentifire // means it's first time purchasing NSLog(@"Transection Id : %@",transaction.transactionIdentifier); UserId = A123; TransectionID = transaction.transactionIdentifier; } else { // send transaction.originaltransection.transectionidentifier // means already purchased one in past NSLog(@"Original Transection Id:%@",transaction.originalTransaction.transactionIdentifier); UserId = A123; TransectionID = transaction.originalTransaction.transactionIdentifier; } // call web service and pass TransectionID & UserId } 

2)从另一个iTunes ID进行交易时出现的错误方法(updateTransaction)多次调用我解决了通过在iTunes连接中从沙盒testing器中删除苹果(iTunes)ID。

非消耗性产品由用户购买一次,使用不会过期或减less。

甚至认为如果你正在寻找如何匹配login user idin app purchase idstream量。 实际上,我in App Purchase很久以前,所以我不知道什么参数从苹果发送一次in app purchase成功。 可能还有in-app purchase receipt和其他一些参数。 只需要一次从同一用户下载产品的时间数相同的唯一参数。

所以在这里,我认为“应用程序内购买收据”作为in App purchase成功后的唯一参数返回。 一旦in App purchase成功,您可以绑定in-app purchase receipt login user id在您的服务器上。 所以下次B用户下载同一个产品的同一个apple user idin App purchase请求中将返回同样in-app purchase receipt因此请检查天气这个receipt id是否与另一个login id绑定,如果YES则取消下载并显示给用户的消息“这个帐户已经与其他一些loginID链接”