Обновление Wallet Pass - пароль не может быть прочитан, потому что он недействителен
Я реализовал книжки и обновления. Я использую eo/passbook-bundle
и создали ниже JSON при упаковке книжки без ошибок, но когда в процессе обновления сервер вызывает webServiceURL/version/passes/passTypeIdentifier/serialNumber
API, и устройство загружает точно такой же JSON (но не упакованный, только этот JSON), это не удается.
Я прочитал в комментарии о полученных недействительных данных прохода при обновлении Apple Wallet Pass, что он может иметь какое-то отношение к правильным заголовкам, но в документах нет каких-либо конкретных заголовков, которые нужно возвращать в ответе (см. https://developer.apple.com/library/content/documentation/PassKit/Reference/PassKit_WebService/WebService.html)
Я использую Symfony, чтобы вернуть ответ с закодированным JSON, как это:
$json = PassFactory::serialize($storecard);
return new Response($json, 200, ['Content-Type' => 'application/json']);
Я также попробовал это без заголовка Content-Type.
В журнале я вижу: Get pass task (pass type pass.com.spinpos.latest.customercard, serial number 5, if-modified-since (null); with web service url https://my.domain.com/api/loy/wallet/) encountered error: Received invalid pass data (The pass cannot be read because it isn’t valid.)
Ответ JSON таков:
{
"storeCard":{
"headerFields":[
{
"key":"prepaid",
"value":"0,00",
"label":"PREPAID"
}
],
"secondaryFields":[
{
"key":"username",
"value":"Some Name",
"label":"GEBRUIKERSNAAM"
},
{
"key":"lastvisit",
"value":"niet bekend",
"label":"LAATSTE BEZOEK"
}
],
"auxiliaryFields":[
{
"key":"qrcode",
"value":"2690310109104",
"label":"QR CODE"
},
{
"key":"points",
"value":20,
"label":"LOYALTY PUNTEN"
}
],
"backFields":[
{
"key":"website",
"value":"http://www.somesite.com",
"label":"WEBSITE"
},
{
"key":"phone_number",
"value":"05311223344",
"label":"TELEFOONNUMMER"
},
{
"key":"terms_of_service",
"value":"Dit zijn test algemene voorwaarden!",
"label":"ALGEMENE VOORWAARDEN"
}
]
},
"serialNumber":"5",
"description":"Your Customer card",
"formatVersion":1,
"locations":[
{
"latitude":51.62,
"longitude":5.55,
"relevantText":"Some Loc 2"
},
{
"latitude":51.7737967,
"longitude":5.5513203,
"relevantText":"Some loc 1"
},
{
"latitude":52.2648569,
"longitude":6.8018085,
"relevantText":"Testdfdr"
}
],
"barcode":{
"format":"PKBarcodeFormatQR",
"message":"2690310109104",
"messageEncoding":"iso-8859-1"
},
"barcodes":[
{
"format":"PKBarcodeFormatQR",
"message":"2690310109104",
"messageEncoding":"iso-8859-1"
}
],
"backgroundColor":"rgb(255,108,108)",
"foregroundColor":"rgb(46,14,170)",
"labelColor":"rgb(110,255,75)",
"authenticationToken":"048cfd30e4baf1c3250f0c8c7500f998aee2da49",
"webServiceURL":"https://my.domain.com/api/loy/wallet/"
}
Кто-нибудь знает, что не так с JSON или заголовками?
1 ответ
Вам необходимо отправить новый подписанный пакет.pkpass с заголовком application/vnd.apple.pkpass