IOS - In App Purchase验证收据

时间:2016-07-01 03:05:09

标签: php swift in-app-purchase

我有问题。当我购买消耗品时。按照Validating Receipts With the App Store中的教程,我已按照以下步骤完成了验证收据

首先从receiptData获取NSBundle.mainBundle().appStoreReceiptURL 然后

  1. 创建字典"收据 - 数据":receiptData.encodeBase64String
  2. 创建Json对象字典的NSData。
  3. 将NSData POST到Sandbox测试
  4. 已完成,我收到了有关交易的回复信息(不包括Apple的标志,响应是纯文本)。但是当我使用我的服务器时,他们不接受来自收据数据的Hexa数据。他们问这样的base64EncodeData示例:

    Base64EncodeData = ew0KCSJzaWduYXR1cmUiID0gIkFwTVVCQzg2QWx6TmlrVjVZdHJaQU1pSlFiSzhFZGVYazYza1dCQVh6bEM4ZFhHdWpxNDdabklZS29GRTFvTi9GUzhjWGxGZnA5WVh0OWlNQmRMMjUwbFJSbWlOR2J5aGl0cnlZVkFRb3JpMzJXOWFSMFQ4TC9hWVZCZGZXK095L1F5UFpFbW9OS3hobnQyV05TVURvVWhaOForNHBQNzBwZTVrVVFsYmRJVmhBQUFEVnpDQ0ExTXdnZ0k3b0FNQ0FRSUNDR1VVa1UzWldBUzFNQTBHQ1NxR1NJYjNEUUVCQlFVQU1IOHhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1TWXdKQVlEVlFRTERCMUJjSEJzWlNCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVEV6TURFR0ExVUVBd3dxUVhCd2JHVWdhVlIxYm1WeklGTjBiM0psSUVObGNuUnBabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVNQjRYRFRBNU1EWXhOVEl5TURVMU5sb1hEVEUwTURZeE5ESXlNRFUxTmxvd1pERWpNQ0VHQTFVRUF3d2FVSFZ5WTJoaGMyVlNaV05sYVhCMFEyVnlkR2xtYVdOaGRHVXhHekFaQmdOVkJBc01Fa0Z3Y0d4bElHbFVkVzVsY3lCVGRHOXlaVEVUTUJFR0ExVUVDZ3dLUVhCd2JHVWdTVzVqTGpFTE1Ba0dBMVVFQmhNQ1ZWTXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTXJSakYyY3Q0SXJTZGlUQ2hhSTBnOHB3di9jbUhzOHAvUndWL3J0LzkxWEtWaE5sNFhJQmltS2pRUU5mZ0hzRHM2eWp1KytEcktKRTd1S3NwaE1kZEtZZkZFNXJHWHNBZEJFakJ3Ukl4ZXhUZXZ4M0hMRUZHQXQxbW9LeDUwOWRoeHRpSWREZ0p2MllhVnM0OUIwdUp2TmR5NlNNcU5OTEhzREx6RFM5b1pIQWdNQkFBR2pjakJ3TUF3R0ExVWRFd0VCL3dRQ01BQXdId1lEVlIwakJCZ3dGb0FVTmgzbzRwMkMwZ0VZdFRKckR0ZERDNUZZUXpvd0RnWURWUjBQQVFIL0JBUURBZ2VBTUIwR0ExVWREZ1FXQkJTcGc0UHlHVWpGUGhKWENCVE16YU4rbVY4azlUQVFCZ29xaGtpRzkyTmtCZ1VCQkFJRkFEQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFFYVNiUGp0bU40Qy9JQjNRRXBLMzJSeGFjQ0RYZFZYQWVWUmVTNUZhWnhjK3Q4OHBRUDkzQmlBeHZkVy8zZVRTTUdZNUZiZUFZTDNldHFQNWdtOHdyRm9qWDBpa3lWUlN0USsvQVEwS0VqdHFCMDdrTHM5UVVlOGN6UjhVR2ZkTTFFdW1WL1VndkRkNE53Tll4TFFNZzRXVFFmZ2tRUVZ5OEdYWndWSGdiRS9VQzZZNzA1M3BHWEJrNTFOUE0zd294aGQzZ1NSTHZYaitsb0hzU3RjVEVxZTlwQkRwbUc1K3NrNHR3K0dLM0dNZUVONS8rZTFRVDlucC9LbDFuaithQnc3QzB4c3kwYkZuYUFkMWNTUzZ4ZG9yeS9DVXZNNmd0S3Ntbk9PZHFUZXNicDBiczhzbjZXcXMwQzlkZ2N4Ukh1T01aMnRtOG5wTFVtN2FyZ09TelE9PSI7DQoJInB1cmNoYXNlLWluZm8iID0gImV3b0pJbTl5YVdkcGJtRnNMWEIxY21Ob1lYTmxMV1JoZEdVdGNITjBJaUE5SUNJeU1ERXlMVEEwTFRNd0lEQTRPakExT2pVMUlFRnRaWEpwWTJFdlRHOXpYMEZ1WjJWc1pYTWlPd29KSW05eWFXZHBibUZzTFhSeVlXNXpZV04wYVc5dUxXbGtJaUE5SUNJeE1EQXdNREF3TURRMk1UYzRPREUzSWpzS0NTSmlkbkp6SWlBOUlDSXlNREV5TURReU55STdDZ2tpZEhKaGJuTmhZM1JwYjI0dGFXUWlJRDBnSWpFd01EQXdNREF3TkRZeE56ZzRNVGNpT3dvSkluRjFZVzUwYVhSNUlpQTlJQ0l4SWpzS0NTSnZjbWxuYVc1aGJDMXdkWEpqYUdGelpTMWtZWFJsTFcxeklpQTlJQ0l4TXpNMU56azRNelUxT0RZNElqc0tDU0p3Y205a2RXTjBMV2xrSWlBOUlDSmpiMjB1YldsdVpHMXZZbUZ3Y0M1a2IzZHViRzloWkNJN0Nna2lhWFJsYlMxcFpDSWdQU0FpTlRJeE1USTVPREV5SWpzS0NTSmlhV1FpSUQwZ0ltTnZiUzV0YVc1a2JXOWlZWEJ3TGsxcGJtUk5iMklpT3dvSkluQjFjbU5vWVhObExXUmhkR1V0YlhNaUlEMGdJakV6TXpVM09UZ3pOVFU0TmpnaU93b0pJbkIxY21Ob1lYTmxMV1JoZEdVaUlEMGdJakl3TVRJdE1EUXRNekFnTVRVNk1EVTZOVFVnUlhSakwwZE5WQ0k3Q2draWNIVnlZMmhoYzJVdFpHRjBaUzF3YzNRaUlEMGdJakl3TVRJdE1EUXRNekFnTURnNk1EVTZOVFVnUVcxbGNtbGpZUzlNYjNOZlFXNW5aV3hsY3lJN0Nna2liM0pwWjJsdVlXd3RjSFZ5WTJoaGMyVXRaR0YwWlNJZ1BTQWlNakF4TWkwd05DMHpNQ0F4TlRvd05UbzFOU0JGZEdNdlIwMVVJanNLZlE9PSI7DQoJImVudmlyb25tZW50IiA9ICJTYW5kYm94IjsNCgkicG9kIiA9ICIxMDAiOw0KCSJzaWduaW5nLXN0YXR1cyIgPSAiMCI7DQp9 

    解码Base64Encode时,我有这个:

    {
     "signature" = "Base64encode";
      "purchase-info" = "Base64encode";
     "environment" = "Sandbox";
     "pod" = "100";
     "signing-status" = "0";
    }
    

    据我所知,收据已加密,我们无法读取。如何获得Decode Base64Encoded等收据信息?谢谢!

      

    更新:在互联网上游览并帮助我的朋友。我意识到,我的格式不像服务器端请求。这种格式很旧。我的解决方案是:对收据进行编码并发送到使用第三方库的服务器。

1 个答案:

答案 0 :(得分:0)

嗯,我认为你的服务器端应该处理收据数据(基本编码64)。

您应该检查这些问题:

Verify receipt for in App purchase How to get iOS appStoreReceiptURL into Base 64 Encoded String?