在php中为passbook创建pass
发布时间:2020-05-25 09:05:56 所属栏目:PHP 来源:互联网
导读:我试图为我的应用程序动态创建优惠券.我有一个 PHP服务器来创建它们.但我不知道他们为什么不在存折上工作. 如果我从终端创建传球它工作正常.但在PHP中使用PHP-PKPass. 我在PHP下面留下了代码,它在我的计算机中出现了通行证,但它没有添加到存折中(如果我通过电
|
我试图为我的应用程序动态创建优惠券.我有一个 PHP服务器来创建它们.但我不知道他们为什么不在存折上工作. 如果我从终端创建传球它工作正常.但在PHP中使用PHP-PKPass. 我在PHP下面留下了代码,它在我的计算机中出现了通行证,但它没有添加到存折中(如果我通过电子邮件发送) 我100%确定passTypeIdentifier,teamIdentifier,Certificate和WWDR 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 PKPassPKPass();
$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','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/icon@2x.png');
$pass->addFile('images/logo.png');
$pass->addFile('images/logo@2x.png');
if(!$pass->create(true)) { // Create and output the PKPass
echo 'Error: '.$pass->getError();
}
//borramos el folder temp
unlink($dir.'/strip.png');
rmdir($dir);
}
在我尝试安装通行证时查看控制台输出,我看到以下警告.
Mar 25 10:45:40 iPhone MobileSafari[279] <Warning>: Invalid data error reading pass pass.cuponice.cuponice/9. Pass dictionary must contain key 'value'. Mar 25 10:45:40 iPhone MobileSafari[279] <Warning>: PassBook Pass download failed: The pass cannot be read because it isn't valid. 深入研究pass.json,我发现你的primaryFields字典不包含’value’键. "primaryFields": [{
"key": "key","label": "30% de Descuento en Persianas"
}
],
要修复,请更改PHP以将值键添加到primaryFields字典中. $styleKeys = array(
'coupon' => array(
'primaryFields' => array(
array(
'key' => 'key','label' => "Label",'value' => ""
)
),//... (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
