xamarin.ios - ejemplo de analizar un recibo de una compra en la aplicación usando iOS Xamarin?
in-app-purchase restsharp (1)
OK, encontré cómo hacerlo. El truco era analizar el recibo en un diccionario y luego sacar la llave de eso. Código de muestra:
public void CompleteTransaction (SKPaymentTransaction transaction) {
var productId = transaction.Payment.ProductIdentifier;
NSUrl receiptURL = NSBundle.MainBundle.AppStoreReceiptUrl;
NSData receipt = NSData.FromUrl (receiptURL);
// here is the code I was missing
NSDictionary requestContents = NSDictionary.FromObjectAndKey((NSString)receipt.GetBase64EncodedString(
NSDataBase64EncodingOptions.None),
(NSString)"receipt-data");
string receiptData = (requestContents["receipt-data"] as NSString).ToString();
RestRequest request = new RestRequest(<url to your server>, Method.POST);
request.AddParameter ("receipt-data", receiptData );
apiClient.ExecuteAsync<bool>(request, (response) =>
{
FinishTransaction (transaction, response.Data);
});
Una vez hecho esto, puede hacer la validación en el servidor de Apple. Hay muchos ejemplos de código en la red para esa parte.
Estoy tratando de implementar la validación de compra para mi aplicación. Veo que puedo enviar el recibo de compra a mi servidor para verificarlo con Apple. Sin embargo, no puedo encontrar la forma correcta de PUBLICAR el NSData a mi URL para su validación. Algo como esto:
public void CompleteTransaction (SKPaymentTransaction transaction) {
var productId = transaction.Payment.ProductIdentifier;
NSUrl receiptURL = NSBundle.MainBundle.AppStoreReceiptUrl;
NSData theData = NSData.FromUrl (receiptURL);
RestRequest request = new RestRequest(validationURL, Method.POST);
request.AddBody(theData); // ??
restClient.ExecuteAsync<bool>((response) =>
{
FinishTransaction(transaction, response.Data);
});
}
¿Alguien tiene un ejemplo? Estoy usando RestSharp.
¡Gracias!
- davevr