tomasmcguinness / dotnet-passbook

A .Net Library for generating Apple Passbook (Wallet) files for iOS. Please get involved by creating pull requests and opening issues!
MIT License
316 stars 116 forks source link

Cannot import pkpass on iphone, only shows black screen #176

Closed jurosm closed 1 year ago

jurosm commented 1 year ago

All validation is ok on the online validator (except Has icon@3x.png file (not mandatory))

My code:

bool hasSeatRow = !string.IsNullOrEmpty(model.Seat) || !string.IsNullOrEmpty(model.Row);

PassGeneratorRequest request = new PassGeneratorRequest
{
    PassTypeIdentifier = PassTypeId,
    TeamIdentifier = TeamId,
    SerialNumber = DataGenerator.GenerateSerialNumber(model.TicketId),
    Description = model.EventDescription,
    OrganizationName = model.OrgName,
    LogoText = model.EventTitle,
    BackgroundColor = "#FFFFFF",
    LabelColor = "#262626",
    ForegroundColor = "#000000",
    Style = PassStyle.EventTicket
};

request.AddHeaderField(new DateField("date", "DATE", FieldDateTimeStyle.PKDateStyleShort, FieldDateTimeStyle.PKDateStyleShort, model.PurchaseDate.Value.DateTime));

request.AddPrimaryField(new StandardField("title", "EVENT", model.EventTitle));

request.AddSecondaryField(new StandardField("location", "VENUE", model.Location));
request.AddSecondaryField(new StandardField("row", "ROW/SEAT", hasSeatRow ? $"{model.Row}/{model.Seat}" : "N/A") { TextAlignment = FieldTextAlignment.PKTextAlignmentRight });
request.AddAuxiliaryField(new DateField("date-event", "DATE", FieldDateTimeStyle.PKDateStyleMedium, FieldDateTimeStyle.PKDateStyleNone, model.BeginDateTime.Value.Date));
request.AddAuxiliaryField(new DateField("time-event", "BEGIN/GATE", FieldDateTimeStyle.PKDateStyleNone, FieldDateTimeStyle.PKDateStyleMedium, model.BeginDateTime.Value.Date) { TextAlignment = FieldTextAlignment.PKTextAlignmentRight });
request.AddAuxiliaryField(new StandardField("price", "PRICE", $"{model.Currency} {model.Price}"));

request.Images.Add(PassbookImage.Logo, File.ReadAllBytes(Path.Combine("assets", "logo.png")));
request.Images.Add(PassbookImage.Logo2X, File.ReadAllBytes(Path.Combine("assets", "logo@2x.png")));

request.Images.Add(PassbookImage.Icon, File.ReadAllBytes(Path.Combine("assets", "icon.png")));
request.Images.Add(PassbookImage.Icon2X, File.ReadAllBytes(Path.Combine("assets", "icon@2x.png")));

request.TransitType = TransitType.PKTransitTypeGeneric;
request.AddBarcode(BarcodeType.PKBarcodeFormatQR, model.QrCodeData, "ISO-8859-1");

request.PassbookCertificate = new X509Certificate2(Cert);
request.AppleWWDRCACertificate = new X509Certificate2(AppleCert);

return Generator.Generate(request);
jurosm commented 1 year ago

The issue was solved by generating a new certificate.