1

私のアプリの領収書の検証が最近壊れ始めました。どうやら、過去 2 ~ 3 週間で、Apple はアプリ内購入レシートのバージョン番号を から に変更した2よう3です。

署名構造体を調べる場合:

struct signature_blob {
    uint8_t version;
    uint8_t signature[128];
    uint32_t cert_len;
    uint8_t certificate[];
} *signature_blob_ptr = (struct signature_blob *)signature_bytes;

…ここで、 (iOS 7 以降非推奨)オブジェクトsignature_bytesの JSON BLOB からの署名文字列の Base64 でデコードされた値です。transactionReceiptSKPaymentTransaction

…のチェックをハードコードしましたversion == 2。今、私は の値を見ています3

App Store で数年後、ここ 2 ~ 3 週間で、新しい購入や「復元」購入でアプリのコンテンツをアクティブ化できないというユーザー レポートがアプリに届き始めました。したがって、これは Apple 側の最近の変更であると思います。

Apple が変更を行ったことを確認できる人はいますか? 詳細を教えてください。この新しいバージョンの購入レシートに関するドキュメントを教えていただけないでしょうか?

4

1 に答える 1

3

はい、Apple は 4 月初旬にバージョン 3 シグネチャを導入しました。ドキュメントや変更ログは見つかりませんでしたが、transactionReceipt非推奨なので理解できます。

バージョン 3 の違いは署名の長さです。現在は 128 ビットではなく 256 ビットであり、最新のApple Inc. ルート証明書で署名されています。

于 2016-06-14T12:21:05.470 に答える