0
我试图检查应用程序回执时发现21002错误(格式错误)。但使用相同的PHP代码检查交易收据工作正常。远程验证ios 7.0+应用程序回执返回21002,但与交易回执一起使用
在RestoreTransaction回调Xamarin C#(相同的代码在Objective-C)我得到沙盒应用的收据:
NSUrl receiptURL = NSBundle.MainBundle.AppStoreReceiptUrl;
NSData receipt = NSData.FromUrl(receiptURL);
String receiptData = receipt.GetBase64EncodedString(NSDataBase64EncodingOptions.None);
sendToBackend(receiptData);
PHP:
$endpoint = 'https://sandbox.itunes.apple.com/verifyReceipt';
//$app_rec_data is receiptData from C#, it is base64 encoded
$receipt = json_encode(["receipt-data" => $app_rec_data]);
$ch = curl_init($endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $receipt);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
此前7.0风格的交易收据:
public async void CompleteTransaction(SKPaymentTransaction transaction)
{
var receipt = transaction.TransactionReceipt.GetBase64EncodedString(NSDataBase64EncodingOptions.None);
sendToBackend(receiptData);
}
使用相同的PHP代码苹果返回成功。 我已经花了整整一天的时间在SO和Apple文档中阅读,但一切看起来不错,但新的应用收据始终返回21002.