Nea*_*eal 9 c# storekit in-app-purchase xamarin.ios ios
我正在为我们的iOS应用程序实现各种自动续订订阅的应用程序内购买.付款完成后,我们需要将交易信息发送到我们的服务器(云)以记录信息,以便我们可以在设定的时间间隔内验证收据,以确保订阅有效,不会取消/退款或续订.我们将在设定的时间间隔内从服务器进行JSON调用以通过应用程序内购买指南和我们的共享秘密进行此操作,但尚未达到此目的,但在此之前我们需要从购买中获取相关数据,即TransactionReceipt,它是一个NSData对象.
我们想要为TransactionReceipt向我们的Web服务发送两个参数(以及其他项目,例如购买的ProductID等).我们希望将此作为base64encoded值发送,这是我们认为需要在JSON请求中发送以进行验证的,因此我们将其存储在SQL Server中.
顺便说一句,使用MonoTouch/C#我们可以将NSData"TransactionReceipt"转换为base64encoded还有一个byte []吗?
谢谢.
有两种简单的方法来获得数据出来NSData
使用,Stream
或者Bytes
和Length
性能.流版本看起来像:
public byte[] ToByte (NSData data)
{
MemoryStream ms = new MemoryStream ();
data.AsStream ().CopyTo (ms);
return ms.ToArray ();
}
Run Code Online (Sandbox Code Playgroud)
在Bytes
与Length
版本将是:
public byte[] ToByte (NSData data)
{
byte[] result = new byte[data.Length];
Marshal.Copy (data.Bytes, result, 0, (int) data.Length);
return result;
}
Run Code Online (Sandbox Code Playgroud)
获取base64输出字符串保持相同:
public string ToBase64String (NSData data)
{
return Convert.ToBase64String (ToByte (data));
}
Run Code Online (Sandbox Code Playgroud)