Im пытается создать динамические купоны для моего приложения. У меня есть сервер PHP, который их создает. Но я не знаю, почему они не работают в сберегательной книжке.Создать пропуск для сберегательной книги в php
Если я создаю пропуск из терминала, он отлично работает. Но в PHP с PHP-PKPass.
Я оставил код в PHP под ним появляются в моем компьютере проход, но он не добавляет в сберкнижки (также, если я отправить его по электронной почте)
Im 100% уверен, что passTypeIdentifier, teamIdentifier , сертификат и ВДРВР 100% правильно
Примечание: все изображения существует
<?php
include ("conexion.php");
require('passpk/PKPass.php');
if (isset($_GET['cupon']) and $_GET['cupon'] != '' and $_GET['cupon'] > 0) {
$cuponID = $_GET['cupon'];
$pass = new PKPass\PKPass();
$pass->setCertificate('./Certificate.p12'); // 2. Set the path to your Pass Certificate (.p12 file)
$pass->setCertificatePassword('*******'); // 2. Set password for certificate
$pass->setWWDRcertPath('./WWDR.pem'); // 3. Set the path to your WWDR Intermediate certificate (.pem file)
// Top-Level Keys http://developer.apple.com/library/ios/#documentation/userexperience/Reference/PassKit_Bundle/Chapters/TopLevel.html
$standardKeys = array(
'description' => 'Store',
'formatVersion' => 1,
'organizationName' => 'Store',
'passTypeIdentifier' => 'pass.store.store', // 4. Set to yours
'serialNumber' => $cupon['id'],
'teamIdentifier' => '********' // 4. Set to yours
);
$associatedAppKeys = array();
$relevanceKeys = array();
$styleKeys = array(
'coupon' => array(
'primaryFields' => array(
array(
'key' => 'key',
'label' => "Label"
)
),
'secondaryFields' => array(
array(
'key' => 'name',
'label' => 'Tienda',
'value' => "Name"
),
array(
'key' => 'date',
'label' => 'Válido hasta',
'value' => "Vigencia"
)
),
'backFields' => array(
array(
'key' => 'tienda',
'label' => 'Tienda',
'value' => "tienda"
),
array(
'key' => 'sucursales',
'label' => 'Sucursales',
'value' => 'Valido en las sucursales y sus horarios'
),
array(
'key' => 'description',
'label' => 'Descripción',
'value' => "descr"
),
array(
'key' => 'terms',
'label' => 'Términos y Condiciones',
'value' => "cupon"
)
)
)
);
$visualAppearanceKeys = array(
'barcode' => array(
'format' => 'PKBarcodeFormatPDF417',
'message' => "cupon",
'messageEncoding' => 'iso-8859-1'
),
'foregroundColor' => 'rgb(255, 255, 255)',
'backgroundColor' => 'rgb(4, 148, 203)',
'logoText' => 'cupon'
);
$webServiceKeys = array();
// Merge all pass data and set JSON for $pass object
$passData = array_merge(
$standardKeys,
$associatedAppKeys,
$relevanceKeys,
$styleKeys,
$visualAppearanceKeys,
$webServiceKeys
);
$pass->setJSON(json_encode($passData));
//creating a temp file called strip.png
//generamos un directorio temporal y creamos el strip
$uniqID = uniqid('', true);
$dir = './tempDir/'.$uniqID;
mkdir($dir, 0777);
//copiamos el archvio al nuevo directorio
copy('../'.$img, './tempDir/'.$uniqID.'/strip.png');
// Add files to the PKPass package
$pass->addFile($dir.'/strip.png');
$pass->addFile('images/icon.png');
$pass->addFile('images/[email protected]');
$pass->addFile('images/logo.png');
$pass->addFile('images/[email protected]');
if(!$pass->create(true)) { // Create and output the PKPass
echo 'Error: '.$pass->getError();
}
//borramos el folder temp
unlink($dir.'/strip.png');
rmdir($dir);
}
При установке одного из ваших проходов на устройстве, что вы видите в консоли (чтобы увидеть это, подключить ваш iPhone до Mac, запустите Xcode и нажмите Window -> Организатор). – PassKit
В iPhone я не могу установить его, потому что он выглядит как cupon.pkpass – Edig
Возможно, Safari загружает файл, потому что он не распознает его как файл прохода. Вы обслуживаете его с помощью приложения Content-Type:/vnd.apple.pkpass' заголовок? – PassKit