【发布时间】:2010-07-08 13:56:00
【问题描述】:
我正在尝试使用 php 和 cURL 验证 https://sandbox.itunes.apple.com/verifyReceipt 的沙盒 transactionReceipt。
到达我的服务器时的原始收据如下所示:
{ "signature" = "AksOP5dmXwg 9WjlcE7PwBEFZgcqBnIb0Uv2lSKebWJJpcOZQRL6ejYyv20MzPFDSgAj3GRGoJXWZpyJLAU8qZSQFYQeGljWKZd3XTJN4j1E7fqOQRBdIXSDRJr1phB/11xp smk6m ... dgcxRHuOMZ2tm8npLUm7argOSzQ=="; "purchase-info" = "ewoJIml0ZW0taWQiID0gIj ... jAiOwp9"; "pod" = "100"; "signing-status" = "0"; }
1.它应该有等号和分号吗?
将其包装起来以便在我使用的 cURL 中传输:
$receipt = json_encode(array("receipt-data" => base64_encode($transactionReceipt)));
给出:
{"receipt-data":"ewoJInNpZ25hdHVyZSIgPSAiQ ... <lots more of the same> ... XR1cyIgPSAiMCI7Cn0="}
这会导致:{"status":-42023} 来自 Apple
如果我使用:
$receipt = json_encode(array("receipt-data" => $transactionReceipt));
给出:
{"receipt-data":"{\n\t\"signature\" = \"AksOP5dmXwg 9WjlcE7PwBEFZgcqBnIb0Uv2lSKebWJJpcOZQRL6ejYyv20MzPFDSgAj3GRGoJXWZpyJLAU8qZSQFYQeGljWKZd3XTJN4j1E7fqOQRBdIXSDRJr1phB\/11xp smk6m ... dgcxRHuOMZ2tm8npLUm7argOSzQ==\";\n\t\"purchase-info\" = \"ewoJIml0ZW0taWQiID0gIjM3NTgyNzIyOCI7Cgkib3JpZ2luYWwtdHJhbnNhY3Rpb24taWQiID0gIjEwMDAwMDAwMDA1ODQyNDIiOwoJInB1cmNoYXNlLWRhdGUiID0gIj ... jAiOwp9\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}"}
我得到:{"status":21002, "exception":"java.lang.IllegalArgumentException: 尝试读取未加引号的字符串时属性列表解析失败。未找到允许的字符。行号:1,列:0。"}
2.谁能告诉我收据数据 json 应该是什么样子?
谢谢!
【问题讨论】: