Apple Wallet 不向 Web 服务提供 Push Token

Apple Wallet not giving Push Token to Web Service

我有一个 Apple Wallet 的通行证,其中指定了 webServiceURL,我目前正在尝试使用它。到目前为止,在使用 Auth Token 验证并获得正确的设备 ID 和序列号后,我可以判断是添加还是删除了通行证。但是添加pass时$_POST的值为空数组,所以无法获取到Push Token。有什么我想念的吗?这是我的 PHP.

<?php
function unauthorized() {
  header('HTTP/1.1 401 Unauthorized');
  exit;
}
$headers = apache_request_headers();
if (isset($headers['Authorization']) && strpos($headers['Authorization'], 'ApplePass') === 0 && strpos($_SERVER['PATH_INFO']) !== false) {
  $pathInfo = $_SERVER['PATH_INFO'];
  if ($pathInfo[0] === '/') { $pathInfo = substr($pathInfo, 1); }
  $parameters = explode('/', $pathInfo);
  if ($parameters[0] !== 'v1' || $parameters[1] !== 'devices' || $parameters[3] !== 'registrations' || $parameters[4] !== 'MYPASSIDENTIFIER') {
    unauthorzed();
    exit;
  }

  $deviceId = $parameters[2];
  $passSerial = $parameters[5];

  if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
    // User deleted pass

  } else  if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // User added pass
    $payload = json_decode($_POST);
    // $_POST is empty array, and $payload is always nothing
  } else {
    // Something fishy
    unauthorized();
  }

} else {
  unauthorized();
}

尝试使用 REQUEST_URI 并使用 php://inpupt

阅读正文
$headers = apache_request_headers();
$request = explode("/", substr(@$_SERVER['REQUEST_URI'], 1));

if (strtoupper($_SERVER['REQUEST_METHOD']) === "POST" 
    && isset($headers['Authorization'])
    && (strpos($headers['Authorization'], 'ApplePass') === 0)
    && $request[1] === "devices"
    && ($request[3] === "registrations") {

    $auth_key = str_replace(array('ApplePass '), '', $headers['Authorization']);

    $device_id = $request[2];
    $pass_id = $request[4];
    $serial = $request[5];

    $dt = @file_get_contents('php://input');
    $det = json_decode($dt);

    // Process Device Token