10

我正在为我们的 iOS 应用程序实施应用程序内购买,以获取各种自动更新订阅。付款完成后,我们需要将交易信息发送到我们的服务器(云)以记录信息,以便我们可以在设定的时间间隔内验证收据,以确保订阅有效、未取消/退款或续订。我们将在设定的时间间隔内从服务器调用 JSON 以通过应用内购买指南和我们的共享密钥执行此操作,但尚未实现,但在我们这样做之前,我们需要从购买中获取相关数据,即作为 NSData 对象的 TransactionReceipt。

我们希望向我们的 Web 服务发送 TransactionReceipt 的两个参数(以及其他项目,例如购买的 ProductID 等)。我们希望将其作为 base64 编码值发送,这是我们认为需要在 JSON 请求中发送以进行验证的值,因此我们将其存储在 SQL Server 中。

如何,使用 MonoTouch / C# 我们可以将 NSData“TransactionReceipt”转换为 base64 编码以及一个字节 []?

谢谢你。

4

2 回答 2

7

有两种简单的方法可以从 中获取数据NSData,使用 aStreamBytesandLength属性。流版本看起来像:

public byte[] ToByte (NSData data)
{
    MemoryStream ms = new MemoryStream ();
    data.AsStream ().CopyTo (ms);
    return ms.ToArray ();
}

Bytes版本Length将是:

public byte[] ToByte (NSData data)
{
    byte[] result = new byte[data.Length];
    Marshal.Copy (data.Bytes, result, 0, (int) data.Length);
    return result;
}

获取 base64 输出字符串保持不变:

public string ToBase64String (NSData data)
{
    return Convert.ToBase64String (ToByte (data));
}
于 2012-05-16T17:08:11.207 回答
0

这也有效:

string yourDataInBase64 = Convert.ToBase64String(yourData.ToArray());
于 2017-11-21T11:25:59.913 回答