Recibo iOS Verifiy com Node.js

Depois de lutar alguns dias tentando fazer algo funcionar e não chegar onde, eu queria saber se alguém obteve a validação de recebimento do iOS funcionando no Node.js. Eu tentei o módulo do nó iap_verifier encontradoAqui mas não consegui que funcionasse corretamente para mim. a única resposta que recebi de volta dos servidores da Apple é 21002, os dados foram malformados.

Uma coisa que funcionou para mim foi uma solicitação de validação do lado do cliente para servidores de maçãs que obtive diretamente dos tutoriais fornecidos pela AppleAqui, com o código mostrado abaixo.

// The transaction looks ok, so start the verify process.

// Encode the receiptData for the itms receipt verification POST request.
NSString *jsonObjectString = [self encodeBase64:(uint8_t *)transaction.transactionReceipt.bytes
                                         length:transaction.transactionReceipt.length];

// Create the POST request payload.
NSString *payload = [NSString stringWithFormat:@"{\"receipt-data\" : \"%@\", \"password\" : \"%@\"}",
                     jsonObjectString, ITC_CONTENT_PROVIDER_SHARED_SECRET];

NSData *payloadData = [payload dataUsingEncoding:NSUTF8StringEncoding];


// Use ITMS_SANDBOX_VERIFY_RECEIPT_URL while testing against the sandbox.
NSString *serverURL = ITMS_SANDBOX_VERIFY_RECEIPT_URL;

// Create the POST request to the server.
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:serverURL]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:payloadData];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[conn start];

Eu tenho um monte de código diferente que tenho usado para enviar uma grande variedade de coisas para o meu servidor de nó. e todas as minhas tentativas diferentes falharam. Eu tentei apenas afunilar o "payloadData" que eu construí no exemplo de validação do lado do cliente acima para o meu servidor e enviá-lo para os servidores da Apple com o seguinte código:

function verifyReceipt(receiptData, responder)
{

var options = {
    host: 'sandbox.itunes.apple.com',
    port: 443,
    path: '/verifyReceipt',
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': Buffer.byteLength(receiptData)
    }
};

var req = https.request(options, function(res) {
    res.setEncoding('utf8');
    res.on('data', function (chunk) {
        console.log("body: " + chunk);
    });
});

req.write(receiptData);
req.end();
}

Onde a função é passada o payloadData. A resposta recebida da Apple é sempre 21002. Eu ainda sou basicamente um novato de nó, então não consigo descobrir o que exatamente está errado. Eu acho que pode haver alguma corrupção de dados acontecendo quando estou enviando os dados do ObjC para o meu servidor Node, então talvez eu não esteja transmitindo corretamente.

Se alguém puder me apontar na direção certa, ou fornecer algum exemplo de como obteve a validação do recebimento para trabalhar em nós, seria uma grande ajuda. Seria ótimo se alguém tivesse alguma experiência com o módulo iap_verifier e exatamente quais dados são necessários. Eu fornecerei qualquer exemplo de código que eu precise, já que tenho lutado com esse processo por alguns dias agora.

Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion