【问题标题】:example of parsing a receipt for an in-app purchase using iOS Xamarin?使用 iOS Xamarin 解析应用内购买收据的示例?
【发布时间】:2016-05-29 00:31:52
【问题描述】:

我正在尝试为我的应用实施购买验证。我看到我可以将购买收据发送到我的服务器以与 Apple 进行验证。但是,我无法找出将 NSData 发布到我的 URL 以进行验证的正确方法。像这样的:

public void CompleteTransaction (SKPaymentTransaction transaction) {
    var productId = transaction.Payment.ProductIdentifier;
    NSUrl receiptURL = NSBundle.MainBundle.AppStoreReceiptUrl;
    NSData theData = NSData.FromUrl (receiptURL);

    RestRequest request = new RestRequest(validationURL, Method.POST);
    request.AddBody(theData); // ??  
    restClient.ExecuteAsync<bool>((response) =>
        {
            FinishTransaction(transaction, response.Data);
        });
}

有人有例子吗?我正在使用 RestSharp。

谢谢!

  • 戴夫尔

【问题讨论】:

    标签: xamarin.ios in-app-purchase restsharp


    【解决方案1】:

    好的,找到方法了。诀窍是将收据解析成字典,然后从中取出钥匙。示例代码:

    public void CompleteTransaction (SKPaymentTransaction transaction) {
        var productId = transaction.Payment.ProductIdentifier;
        NSUrl receiptURL = NSBundle.MainBundle.AppStoreReceiptUrl;
        NSData receipt = NSData.FromUrl (receiptURL);
    
        // here is the code I was missing
        NSDictionary requestContents = NSDictionary.FromObjectAndKey((NSString)receipt.GetBase64EncodedString(
                    NSDataBase64EncodingOptions.None), 
                    (NSString)"receipt-data");
    
        string receiptData = (requestContents["receipt-data"] as NSString).ToString();
    
        RestRequest request = new RestRequest(<url to your server>, Method.POST);
    
        request.AddParameter ("receipt-data", receiptData );
    
        apiClient.ExecuteAsync<bool>(request, (response) => 
            {
                FinishTransaction (transaction, response.Data);
            });
    

    完成后,您可以在 Apple 服务器上进行验证。网上有很多该部分的示例代码。

    【讨论】:

    • 嗨 Dave,我能够从我的 iOS xamarin 项目中生成收据数据。但是当我尝试在 Apple 上进行验证时,它给了我 2100 状态。这意味着令牌无效。你能告诉我这里有什么问题吗?
    • 你的意思是,在你的服务器端?
    猜你喜欢
    • 2014-10-18
    • 2013-02-21
    • 1970-01-01
    • 2017-12-19
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    相关资源
    最近更新 更多