0
votes

I have a problem. When I purchase a consumable item. Following tutorial in Validating Receipts With the App Store I've done validation receipt by following these steps

First get receiptData from NSBundle.mainBundle().appStoreReceiptURL then

  1. Create a dictionary "receipt-data": receiptData.encodeBase64String
  2. Create NSData of Json Object dictionary.
  3. POST NSData to Sandbox test

It's done and I received a response information about transaction (not include sign of Apple, response is plaintext). But when I work with my server, they do not accept Hexa data from receipt Data. They ask a base64EncodeData example like this:

Base64EncodeData = ew0KCSJzaWduYXR1cmUiID0gIkFwTVVCQzg2QWx6TmlrVjVZdHJaQU1pSlFiSzhFZGVYazYza1dCQVh6bEM4ZFhHdWpxNDdabklZS29GRTFvTi9GUzhjWGxGZnA5WVh0OWlNQmRMMjUwbFJSbWlOR2J5aGl0cnlZVkFRb3JpMzJXOWFSMFQ4TC9hWVZCZGZXK095L1F5UFpFbW9OS3hobnQyV05TVURvVWhaOForNHBQNzBwZTVrVVFsYmRJVmhBQUFEVnpDQ0ExTXdnZ0k3b0FNQ0FRSUNDR1VVa1UzWldBUzFNQTBHQ1NxR1NJYjNEUUVCQlFVQU1IOHhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1TWXdKQVlEVlFRTERCMUJjSEJzWlNCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVEV6TURFR0ExVUVBd3dxUVhCd2JHVWdhVlIxYm1WeklGTjBiM0psSUVObGNuUnBabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVNQjRYRFRBNU1EWXhOVEl5TURVMU5sb1hEVEUwTURZeE5ESXlNRFUxTmxvd1pERWpNQ0VHQTFVRUF3d2FVSFZ5WTJoaGMyVlNaV05sYVhCMFEyVnlkR2xtYVdOaGRHVXhHekFaQmdOVkJBc01Fa0Z3Y0d4bElHbFVkVzVsY3lCVGRHOXlaVEVUTUJFR0ExVUVDZ3dLUVhCd2JHVWdTVzVqTGpFTE1Ba0dBMVVFQmhNQ1ZWTXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTXJSakYyY3Q0SXJTZGlUQ2hhSTBnOHB3di9jbUhzOHAvUndWL3J0LzkxWEtWaE5sNFhJQmltS2pRUU5mZ0hzRHM2eWp1KytEcktKRTd1S3NwaE1kZEtZZkZFNXJHWHNBZEJFakJ3Ukl4ZXhUZXZ4M0hMRUZHQXQxbW9LeDUwOWRoeHRpSWREZ0p2MllhVnM0OUIwdUp2TmR5NlNNcU5OTEhzREx6RFM5b1pIQWdNQkFBR2pjakJ3TUF3R0ExVWRFd0VCL3dRQ01BQXdId1lEVlIwakJCZ3dGb0FVTmgzbzRwMkMwZ0VZdFRKckR0ZERDNUZZUXpvd0RnWURWUjBQQVFIL0JBUURBZ2VBTUIwR0ExVWREZ1FXQkJTcGc0UHlHVWpGUGhKWENCVE16YU4rbVY4azlUQVFCZ29xaGtpRzkyTmtCZ1VCQkFJRkFEQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFFYVNiUGp0bU40Qy9JQjNRRXBLMzJSeGFjQ0RYZFZYQWVWUmVTNUZhWnhjK3Q4OHBRUDkzQmlBeHZkVy8zZVRTTUdZNUZiZUFZTDNldHFQNWdtOHdyRm9qWDBpa3lWUlN0USsvQVEwS0VqdHFCMDdrTHM5UVVlOGN6UjhVR2ZkTTFFdW1WL1VndkRkNE53Tll4TFFNZzRXVFFmZ2tRUVZ5OEdYWndWSGdiRS9VQzZZNzA1M3BHWEJrNTFOUE0zd294aGQzZ1NSTHZYaitsb0hzU3RjVEVxZTlwQkRwbUc1K3NrNHR3K0dLM0dNZUVONS8rZTFRVDlucC9LbDFuaithQnc3QzB4c3kwYkZuYUFkMWNTUzZ4ZG9yeS9DVXZNNmd0S3Ntbk9PZHFUZXNicDBiczhzbjZXcXMwQzlkZ2N4Ukh1T01aMnRtOG5wTFVtN2FyZ09TelE9PSI7DQoJInB1cmNoYXNlLWluZm8iID0gImV3b0pJbTl5YVdkcGJtRnNMWEIxY21Ob1lYTmxMV1JoZEdVdGNITjBJaUE5SUNJeU1ERXlMVEEwTFRNd0lEQTRPakExT2pVMUlFRnRaWEpwWTJFdlRHOXpYMEZ1WjJWc1pYTWlPd29KSW05eWFXZHBibUZzTFhSeVlXNXpZV04wYVc5dUxXbGtJaUE5SUNJeE1EQXdNREF3TURRMk1UYzRPREUzSWpzS0NTSmlkbkp6SWlBOUlDSXlNREV5TURReU55STdDZ2tpZEhKaGJuTmhZM1JwYjI0dGFXUWlJRDBnSWpFd01EQXdNREF3TkRZeE56ZzRNVGNpT3dvSkluRjFZVzUwYVhSNUlpQTlJQ0l4SWpzS0NTSnZjbWxuYVc1aGJDMXdkWEpqYUdGelpTMWtZWFJsTFcxeklpQTlJQ0l4TXpNMU56azRNelUxT0RZNElqc0tDU0p3Y205a2RXTjBMV2xrSWlBOUlDSmpiMjB1YldsdVpHMXZZbUZ3Y0M1a2IzZHViRzloWkNJN0Nna2lhWFJsYlMxcFpDSWdQU0FpTlRJeE1USTVPREV5SWpzS0NTSmlhV1FpSUQwZ0ltTnZiUzV0YVc1a2JXOWlZWEJ3TGsxcGJtUk5iMklpT3dvSkluQjFjbU5vWVhObExXUmhkR1V0YlhNaUlEMGdJakV6TXpVM09UZ3pOVFU0TmpnaU93b0pJbkIxY21Ob1lYTmxMV1JoZEdVaUlEMGdJakl3TVRJdE1EUXRNekFnTVRVNk1EVTZOVFVnUlhSakwwZE5WQ0k3Q2draWNIVnlZMmhoYzJVdFpHRjBaUzF3YzNRaUlEMGdJakl3TVRJdE1EUXRNekFnTURnNk1EVTZOVFVnUVcxbGNtbGpZUzlNYjNOZlFXNW5aV3hsY3lJN0Nna2liM0pwWjJsdVlXd3RjSFZ5WTJoaGMyVXRaR0YwWlNJZ1BTQWlNakF4TWkwd05DMHpNQ0F4TlRvd05UbzFOU0JGZEdNdlIwMVVJanNLZlE9PSI7DQoJImVudmlyb25tZW50IiA9ICJTYW5kYm94IjsNCgkicG9kIiA9ICIxMDAiOw0KCSJzaWduaW5nLXN0YXR1cyIgPSAiMCI7DQp9 

When decoding Base64Encode, I have this:

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

As I know, the receipt is encrypted, we can't read it. How can I get receipt info like Decode Base64Encoded?. Thanks!

UPDATE: After a tour on Internet and help of my friend. I realized, I can't have a format like my server side request.This format is old. My solution is : encode the receipt and send to server where use third party library.

1

1 Answers

0
votes

Hmm, I think your server side should handle receipt data (base 64 encoded).

You should check those question:

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