10

さまざまな自動更新可能なサブスクリプションのiOSアプリのアプリ内購入を実装しています。支払いが完了したら、トランザクション情報をサーバー(クラウド)に送信して情報を記録する必要があります。これにより、設定された間隔でレシートを確認して、サブスクリプションが有効であり、キャンセル/返金、または更新されていないことを確認できます。アプリ内購入ガイドと共有シークレットを介してこれを行うために、設定された間隔でサーバーからJSON呼び出しを行う予定ですが、まだ到達していませんが、その前に、購入からの関連データを取得する必要がありますつまり、NSDataオブジェクトであるTransactionReceiptです。

TransactionReceiptの2つのパラメーターをWebサービスに送信します(購入したProductIDなどの他のアイテムの中で)。これをbase64encoded値として送信します。これは、検証のためにJSONリクエストで送信する必要があると思われる値であるため、SQLServerに保存します。

どのように、MonoTouch / C#を使用して、NSData "TransactionReceipt"をbase64encodedとbyte[]に変換できますか?

ありがとうございました。

4

2 に答える 2

7

aまたはandプロパティNSDataを使用して、からデータを取得する簡単な方法が2つあります。ストリームバージョンは次のようになります。StreamBytesLength

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 に答える