apple / app-store-server-library-node

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

receiptUtil extracting transaction id `0` instead of throwing an error

ezain701 opened this issue · comments

When I try to extract transactionId from receipt with the following :
const transactionId = receiptUtil.extractTransactionIdFromAppReceipt(base64Receipt)

I get transactionId of 0. Frontend is sending base64 string to me in backend. Could it be the frontend is sending the wrong base64String? Or there might be something else wrong here with the library. If the bas64 is wrong, I would expect the library to throw an error instead of returning 0

Hello @ezain701, unfortunately without access to the underlying receipt, it is very difficult to debug this type of issue. If this is a production receipt, I recommend filing a ticket in Feedback Assistant with the complete receipt.

@alexanderjordanbaker This is a sandbox receipt

Could you please post the receipt or file a ticket in Feedback Assistant?

@alexanderjordanbaker Should I share the base64 receipt string with you that frontend is sending?

@alexanderjordanbaker

TUlBR0NTcUdTSWIzRFFFSEFxQ0FNSUFDQVFFeER6QU5CZ2xnaGtnQlpRTUVBZ0VGQURDQUJna3Foa2lHOXcwQkJ3R2dnQ1NBQklJQmJER0NBV2d3RHdJQkFBSUJBUVFIREFWWVkyOWtaVEFMQWdFQkFnRUJCQU1DQVFBd0t3SUJBZ0lCQVFRakRDRmpiMjB1Ylc5eVpXZHZiMlJrWVhsekxtMXZjbVZuYjI5a1pHRjVjeTFoY0hBd0RBSUJBd0lCQVFRRURBSXpOVEFRQWdFRUFnRUJCQWhXMXYzK0RRQUFBREFjQWdFRkFnRUJCQlFrcmhQa3JReGxnOG1maEgxNWpxSVkxS1RIQ3pBS0FnRUlBZ0VCQkFJV0FEQWVBZ0VNQWdFQkJCWVdGREl3TWpRdE1ERXRNekJVTURRNk1UWTZOVFphTUlHUUFnRVJBZ0VCQklHSE1ZR0VNQXdDQWdhbEFnRUJCQU1DQVFFd0ZnSUNCcVlDQVFFRURRd0xaR1YyWDJWNGNHeHZjbVV3REFJQ0JxY0NBUUVFQXd3Qk1EQWZBZ0lHcUFJQkFRUVdGaFF5TURJMExUQXhMVEk1VkRBeE9qVXlPakU1V2pBZkFnSUdyQUlCQVFRV0ZoUXlNREkwTFRBeUxUSTVWREF4T2pVeU9qRTVXakFNQWdJR3R3SUJBUVFEQWdFQU1CNENBUlVDQVFFRUZoWVVOREF3TVMwd01TMHdNVlF3TURvd01Eb3dNRm9BQUFBQUFBQ2dnZ040TUlJRGREQ0NBbHlnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFzRkFEQmZNUkV3RHdZRFZRUUREQWhUZEc5eVpVdHBkREVSTUE4R0ExVUVDZ3dJVTNSdmNtVkxhWFF4RVRBUEJnTlZCQXNNQ0ZOMGIzSmxTMmwwTVFzd0NRWURWUVFHRXdKVlV6RVhNQlVHQ1NxR1NJYjNEUUVKQVJZSVUzUnZjbVZMYVhRd0hoY05NakF3TkRBeE1UYzFNak0xV2hjTk5EQXdNekkzTVRjMU1qTTFXakJmTVJFd0R3WURWUVFEREFoVGRHOXlaVXRwZERFUk1BOEdBMVVFQ2d3SVUzUnZjbVZMYVhReEVUQVBCZ05WQkFzTUNGTjBiM0psUzJsME1Rc3dDUVlEVlFRR0V3SlZVekVYTUJVR0NTcUdTSWIzRFFFSkFSWUlVM1J2Y21WTGFYUXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEYmY1QThMSE1QMjVjbVM1TzdDdmloSVQ3SVlka2t5RjRmZFQ3YWs5c3hHcEdBdWIvbERNczh1dzVFWWliNkJDbTJTZWR2NEJ2bURXak5KVzdEZGdqMVNndXVlblE4eEtrTHM4OWlEL3UwdlBmYmhGNG82MGNOOGUyTHJQV2ZzQWs0bzI1N3l5WlFDaHJoaWRGeWRnczVUTXRQYnNDelg3ZVZ1cm1vWFVwMHErOXZRYVYrQ1kyNlBUM05jRmZZN2UvVjJuZklrd1FjN3dtSWVHWE9nZktOY3VjSEdtNG1FdmN5c1EyN09KQnJCc1Q4RGVXVlVNMlJ5TG9sOUZqSmpPRngyMHBGOHkwWmxnTldnYVpFN25WM1cxUFBlS3hkdWo1ZlVDdGNLWXpkd3RjcUY5OGl0TmZrZUtpdnFHMm53ZHBvTFdiTXp5a0xVQ3pqd3Z2bVh4TEJBZ01CQUFHak96QTVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdLRU1CWUdBMVVkSlFFQi93UU1NQW9HQ0NzR0FRVUZCd01ETUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDeUFPQTg4ZWpwWXIzQTFoMUFubGU1T0pCM2RsTFNxRXR3YnJobm1mdXppbFdmN3gwb3VGOHEwWE9mTlVjM3UwYlRkaER5OEduc3pXS1pjZmxnaW9SSU9NUzlpMmNsdWF0c00yV3QyTUthZUVnUDZjekJKdzNHejJROGJZQlpNNHpLTmdZcUVSdU5TYzRJLzJiQVJ5aEw2MXJCS3dsV0xLV3FDUU43TWpIYzZJVjRTTTdBeFJJUmFnOE1yaThGeW05NlpIOGdMSFhtVExFUzAvM2pIMTROZmJoWTE2Qjg1SDlqcTVlYUs4TXEyTkN5NGRWYURUa2JiMmNvcVJLRDFvZDRiWm05WHJNSzRKak85dXJEam0xcDY3ZEFnVDJIUFhCUjBjUmRqYVhjZjJwWUd0NWdkamRTN1Arc0dWME1GUytLRC9XSnlOY3JIUjdzSzVFRnB6MVBNWUlCanpDQ0FZc0NBUUV3WkRCZk1SRXdEd1lEVlFRRERBaFRkRzl5WlV0cGRERVJNQThHQTFVRUNnd0lVM1J2Y21WTGFYUXhFVEFQQmdOVkJBc01DRk4wYjNKbFMybDBNUXN3Q1FZRFZRUUdFd0pWVXpFWE1CVUdDU3FHU0liM0RRRUpBUllJVTNSdmNtVkxhWFFDQVFFd0RRWUpZSVpJQVdVREJBSUJCUUF3RFFZSktvWklodmNOQVFFTEJRQUVnZ0VBSlNMWXc3TmszRWNVUGEyUWlKb0xmQW9kdm9sMmlnT3RQR3FmTmtCWWdOOHlzeTZiY01jdFN1TkhnMnN5SjRMRUNsMmFVak9IM1dqbW14RkoxNGc0WHBYbHlYWmVPZWErNDFCaXgrOHl1ODgyM1hFaXAzYXVwYUcrdzZCWmoxdEZFNkttRTUwaVZWd2UrdFhaVFhkTnIydm92eFhHQzh5MThtbExHRUFjUzRRNVVvNU0wbVpvM1ZRNDRSdGhMOW5JVzNlbXAwWm1yc1FQdlJaVjNPT1VXaTVWN3Q0NU8zTVRoN0pwTElvT3V0V1dDaEl3MmQydUZiYnVZSzJVL0pSQXhqaVh6L3ZjV0JLdE1OeW9GZzFNeG5aeW5nR0x0WHFhanI0ekxFdWc2QmQ0Qzc5UnROYTVuTFZvN1RhWW53QSs1cmN3aXZmVXRBbkhrRlVTelEzLzlnQUFBQUFBQUE9PQ==

Ah, after decoding, I see this is an Xcode receipt, not a Sandbox receipt, they can have TIDs of 0, see the unit test should extract a transaction id from an xcode receipt with a transaction

@alexanderjordanbaker So that means the frontend is sending the wrong receipt string?
I need to verify the receipt by calling apple store server api. With a transactonId of 0, I cannot verify.

Xcode receipts are generated locally and aren’t created by Apple servers and can’t be used with the App Store Server API. See https://developer.apple.com/documentation/xcode/setting-up-storekit-testing-in-xcode/ for more information on testing in Xcode

@alexanderjordanbaker
We enable store kit to test redeem code as you know we can't test redeem code in sandbox beta and sandbox test so can you confirm how we can test redeem code using store kit
Our backend needs to verify the receipt with redeem code that is created using storekit in this case

If you have a question or feedback about the underlying behavior of the Sandbox environment outside of the App Store Server Library, I would recommend filing a ticket in Feedback Assistant for the best support