คลาสนี้มีฟังก์ชันการสร้างบัตรสำหรับ Wallet ใน iOS ของ Apple โดยจะสร้าง ลงนาม และจัดทำแพคเกจบัตรผ่านเป็นไฟล์ .pkpass
ตามเอกสารประกอบของ Apple
PHP 7.0 หรือสูงกว่า (อาจใช้ได้กับเวอร์ชันเก่าด้วย)
ส่วนขยาย PHP ZIP (มักติดตั้งตามค่าเริ่มต้น)
เข้าถึงระบบไฟล์เพื่อเขียนไฟล์แคชชั่วคราว
เพียงรันคำสั่งต่อไปนี้ในไดเร็กทอรีรากของโปรเจ็กต์ของคุณเพื่อติดตั้งผ่าน Composer:
composer require pkpass/pkpass
หรือเพิ่มใน composer.json ของคุณ: "pkpass/pkpass": "^2.0.0"
โปรดดูไฟล์ example/example.php เพื่อดูตัวอย่างการใช้งาน หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับ JSON สำหรับบัตรผ่านและวิธีจัดรูปแบบ โปรดดูที่เอกสารที่developers.apple.com
ตัวอย่างง่ายๆ
ตัวอย่างตั๋วเครื่องบิน
ตัวอย่างบัตรสตาร์บัคส์
addFile
: เพิ่มไฟล์ที่ไม่มีภาษาเช่น icon.png
addRemoteFile
: เพิ่มไฟล์จาก url ที่ไม่มีภาษาเช่น https://xyz.io/icon.png
addLocaleFile
: เพิ่มไฟล์ที่แปลเป็นภาษาท้องถิ่น เช่น strip.png
addLocaleRemoteFile
: เพิ่มไฟล์ที่แปลแล้วจาก url เช่น https://xyz.io/strip.png
ไปที่พอร์ทัลการจัดเตรียม iOS
สร้าง Pass Type ID ใหม่และจด Pass ID ที่คุณเลือก คุณจะต้องใช้ในภายหลัง
คลิกปุ่มแก้ไขใต้ Pass Type ID ที่คุณสร้างขึ้นใหม่ และสร้างใบรับรองตามคำแนะนำที่แสดงบนหน้า ตรวจสอบให้แน่ใจ ว่าไม่ได้ เลือกชื่อสำหรับใบรับรอง แต่เว้นว่างไว้แทน
ดาวน์โหลดไฟล์ .cer แล้วลากไปไว้ในการเข้าถึงพวงกุญแจ
ค้นหาใบรับรองที่คุณเพิ่งนำเข้าแล้วคลิกสามเหลี่ยมทางด้านซ้ายเพื่อแสดงรหัสส่วนตัว
เลือกทั้งใบรับรองและคีย์ส่วนตัว จากนั้นคลิกขวาที่ใบรับรองในการเข้าถึงพวงกุญแจแล้วเลือก Export 2 items…
เลือกรหัสผ่านและส่งออกไฟล์ไปยังโฟลเดอร์
เมื่อคุณได้รับข้อผิดพลาด 'ไม่สามารถอ่านไฟล์ใบรับรองได้' สิ่งนี้อาจเกี่ยวข้องกับการใช้เวอร์ชัน OpenSSL ที่เลิกใช้แฮชเก่าบางรายการแล้ว ข้อมูลเพิ่มเติมที่นี่: https://schof.link/2Et6z3m ข้อผิดพลาด OpenSSL: ข้อผิดพลาด:0308010C:รูทีนซองจดหมายดิจิทัล::unsupported' นี่เป็นเพราะ osx ส่งออกไฟล์ .p12 โดยใช้ OpenSSL เวอร์ชันเก่า เมื่อต้องการแก้ไขปัญหานี้ ให้ใช้คำสั่งต่อไปนี้:
openssl pkcs12 -legacy -in key.p12 -nodes -out key_decrypted.tmp
(แทนที่ key.p12 ด้วยชื่อไฟล์ .p12 ของคุณ)
openssl pkcs12 -in key_decrypted.tmp -export -out key_new.p12
(ใช้ไฟล์ key_new.p12 ที่สร้างขึ้นใหม่ในการสร้างรหัสผ่านของคุณด้านล่าง)
ขอใบรับรอง Pass ( .p12
) ตามที่อธิบายไว้ข้างต้น และอัปโหลดไปยังเซิร์ฟเวอร์ของคุณ
ตั้งเส้นทางและรหัสผ่านที่ถูกต้องในบรรทัด 22
เปลี่ยน passTypeIdentifier
และ teamIndentifier
เป็นค่าที่ถูกต้องในบรรทัด 29 และ 31 ( สามารถดู teamIndentifier
ได้ในพอร์ทัลนักพัฒนา)
หลังจากทำตามขั้นตอนเหล่านี้แล้ว คุณควรพร้อมที่จะไป อัปโหลดไฟล์ทั้งหมดไปยังเซิร์ฟเวอร์ของคุณและนำทางไปยังที่อยู่ของไฟล์ examples/example.php บน iPhone ของคุณ
หากคุณไม่สามารถเปิดบัตรผ่านบน iPhone ได้ ให้เสียบ iPhone เข้ากับ Mac แล้วเปิดแอปพลิเคชัน 'คอนโซล' ทางด้านซ้าย คุณสามารถเลือก iPhone ของคุณได้ จากนั้น คุณจะสามารถตรวจสอบข้อผิดพลาดใดๆ ที่เกิดขึ้นขณะเพิ่มบัตรผ่านได้:
Trust evaluate failure: [leaf TemporalValidity]
: หากคุณเห็นข้อผิดพลาดนี้ แสดงว่าบัตรผ่านของคุณได้รับการลงนามด้วยใบรับรองที่ล้าสมัย
Trust evaluate failure: [leaf LeafMarkerOid]
: คุณไม่ได้ปล่อยให้ชื่อของใบรับรองว่างเปล่าขณะสร้างในพอร์ทัลนักพัฒนา
เวอร์ชัน 2.1.0 - เมษายน 2023
เพิ่มวิธีการอื่นในการแยกเนื้อหา P12 เพื่อหลีกเลี่ยงปัญหาใน OpenSSL เวอร์ชันล่าสุด
เวอร์ชัน 2.0.2 - ตุลาคม 2022
เปลี่ยนไปใช้ ZipArchive::OVERWRITE
วิธีการเปิด ZIP เนื่องจากการเลิกใช้ PHP 8 (#120)
เวอร์ชัน 2.0.1 - ตุลาคม 2022
อัปเดตใบรับรอง WWDR เป็นเวอร์ชัน 6 (#118)
เวอร์ชัน 2.0.0 - กันยายน 2022
เปลี่ยนลายเซ็นของ Constructor เพื่อนำพารามิเตอร์ $json
ตัวที่สามออกมา
ลบเมธอด setJSON()
ที่เลิกใช้แล้ว
ลบเมธอด checkError()
และ getError()
ออกเพื่อสนับสนุนข้อยกเว้น
โปรดอ่านคำแนะนำด้านบนและศึกษาเอกสาร Wallet ก่อนส่งตั๋วหรือขอรับการสนับสนุน มันอาจจะคุ้มค่าที่จะตรวจสอบ Stackoverflow ซึ่งมีคำถามสองสามข้อเกี่ยวกับไลบรารีนี้
รับการสนับสนุนอย่างมืออาชีพสำหรับแพ็คเกจนี้ →
เซสชั่นการให้คำปรึกษาที่กำหนดเองมีไว้สำหรับการสนับสนุนการใช้งานและการพัฒนาคุณสมบัติ