我试图为我的应用程序动态创建优惠券.我有一个
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 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','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' => "" ) ),//...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。