Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 应用内购买验证-根据用户验证购买_Ios_Objective C_Iphone_In App Purchase - Fatal编程技术网

Ios 应用内购买验证-根据用户验证购买

Ios 应用内购买验证-根据用户验证购买,ios,objective-c,iphone,in-app-purchase,Ios,Objective C,Iphone,In App Purchase,我已在我的应用程序中成功实施应用程序内购买 我的问题是: 有一个苹果idxyz@apple.com我通过它在ipad或设备中登录itunes。 现在在我的应用程序中有几个用户。他们将通过应用内购买来购买产品。我的产品是非消耗品。 例如,现在有两个用户A和B(他们登录到我的应用程序,所以他们是应用程序用户) 案例:用户使用苹果id的应用内购买购买产品xyz@apple.com并获得购买产品成员的用户权限(在成功完成付款后,我会调用web服务更新用户数据库,说明他/她已购买产品)并从我的应用程序注销

我已在我的应用程序中成功实施应用程序内购买

我的问题是:

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

案例:用户使用苹果id的应用内购买购买产品xyz@apple.com并获得购买产品成员的用户权限(在成功完成付款后,我会调用web服务更新用户数据库,说明他/她已购买产品)并从我的应用程序注销。现在,用户B登录到我的应用程序,准备购买产品,用户A也购买了产品(请注意,apple id是相同的)xyz@apple.com). 但是,当他试图购买产品时,苹果说“你已经购买了这个。点击“确定”再次免费下载”,所以用户点击“确定”,该产品将再次根据用户进行恢复,并且在该方法成功后,我称之为web服务,它将更新用户数据库。


所以问题是,当我购买的产品与您已经购买的这个id(即xyz.apple.com)不同时,我如何区分这两个用户,现在用户应该不同,然后您必须使用另一个苹果id登录(可能是abc.apple.com).

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

即使您正在寻找如何在
登录用户id
应用程序内购买id
之间匹配的流。实际上,我很久以前就做了
应用内购买
,所以我不知道一旦
应用内购买
成功,苹果会发送什么参数。可能有
应用内采购收据
以及一些其他参数。只需要拾取唯一的参数,该参数对于从同一用户下载产品的次数是相同的


所以这里我把“应用程序购买收据”当作唯一的参数返回,一旦在应用程序购买<代码> >代码>成功。一旦
应用内购买
成功,您就可以在服务器上用
登录用户id
绑定
应用内购买收据
。因此,下次当B用户要下载具有相同
苹果用户id的相同产品时,
应用内购买
请求将返回相同的
应用内购买收据
,因此请检查此
收据id
是否与另一个
登录id
绑定,如果
,则取消下载并向用户显示消息,说明“此帐户已与其他登录id链接”

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

即使您正在寻找如何在
登录用户id
应用程序内购买id
之间匹配的流。实际上,我很久以前就做了
应用内购买
,所以我不知道一旦
应用内购买
成功,苹果会发送什么参数。可能有
应用内采购收据
以及一些其他参数。只需要拾取唯一的参数,该参数对于从同一用户下载产品的次数是相同的


所以这里我把“应用程序购买收据”当作唯一的参数返回,一旦在应用程序购买<代码> >代码>成功。一旦
应用内购买
成功,您就可以在服务器上用
登录用户id
绑定
应用内购买收据
。因此,下次当B用户要下载具有相同
苹果用户id的相同产品时,
应用内购买
请求将返回相同的
应用内购买收据
,因此请检查此
收据id
是否与另一个
登录id
绑定,如果
,则取消下载并向用户显示消息,说明“此帐户已与其他登录id链接”

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

即使您正在寻找如何在
登录用户id
应用程序内购买id
之间匹配的流。实际上,我很久以前就做了
应用内购买
,所以我不知道一旦
应用内购买
成功,苹果会发送什么参数。可能有
应用内采购收据
以及一些其他参数。只需要拾取唯一的参数,该参数对于从同一用户下载产品的次数是相同的


所以这里我把“应用程序购买收据”当作唯一的参数返回,一旦在应用程序购买<代码> >代码>成功。一旦
应用内购买
成功,您就可以在服务器上用
登录用户id
绑定
应用内购买收据
。因此,下次当B用户要下载具有相同
苹果用户id的相同产品时,
应用内购买
请求将返回相同的
应用内购买收据
,因此请检查此
收据id
是否与另一个
登录id
绑定,如果
,则取消下载并向用户显示消息,说明“此帐户已与其他登录id链接”

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

即使您正在寻找如何在
登录用户id
应用程序内购买id
之间匹配的流。实际上,我很久以前就做了
应用内购买
,所以我不知道一旦
应用内购买
成功,苹果会发送什么参数。可能有
应用内采购收据
以及一些其他参数。只需拾取唯一的参数,该参数与产品下载时的次数相同
-(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
}