Обновление 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

Другие вопросы по тегам