Offer rewards cards boarding passes tickets gift cards and more using Wallet.

Wallet Documentation

Posts under Wallet tag

128 Posts
Sort by:
Post not yet marked as solved
2 Replies
690 Views
Hi, How can I send push notification for point update and promos to my loyalty wallet users. Currently I get push notification Id when user install loyalty wallet and I use it for sending wallet updates. But when I tried to use this push notification id for custom APN messages it doesn't appear anywhere. Thank you.
Posted Last updated
.
Post not yet marked as solved
1 Replies
1k Views
I am trying to write some code to send a push notification to a pass on an Apple device using C# .NET and HttpClient over HTTP2 with client certificate authentication. When I run the code, I am seeing the below exception: InnerException = {"Error 12152 calling WinHttpWriteData, 'The server returned an invalid or unrecognized response'."} I am trying to find out why this code is failing? Is it possible to debug/troubleshoot this in some way? Running this code on Windows 10 OS Build version: 21H2 (19044). The application is built on .Net Framework 4.8 and tried using WinHttpHanlder versions 6 and also 7. Also, tried using other third party open source libraries like PushSharp and DotApns. PushSharp does not seem to support Http/2 and dotApns does not support certificate authentication for .net framework. We have no plans to migrate to .net Core. Below is my code: private static string pushToken = "dbc56849<hidden>"; private static string AppleApnServer = "https://api.sandbox.push.apple.com"; public static async Task<PushResult> SendPushNotificationToWalletPass(string notificationContent) { byte[] certificateData = LoadCertificate(); X509Certificate2 certificate = new X509Certificate2(certificateData, String.Empty, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable); string url = $"{AppleApnServer}:443/3/device/{pushToken}"; StringBuilder payload = new StringBuilder(); payload.Append("{ \"aps\" : "); if (string.IsNullOrWhiteSpace(notificationContent)) { payload.Append("\"\" }"); } else { payload.Append(notificationContent); payload.Append(" }"); // close aps dictionary } var handler = new Http2Handler(); handler.ClientCertificates.Add(certificate); using (var httpClient = new HttpClient(handler)) { using (var request = new HttpRequestMessage(HttpMethod.Post, url)) { var messageGuid = Guid.NewGuid().ToString(); request.Content = new StringContent(payload.ToString()); request.Headers.Add("apns-id", messageGuid); request.Headers.Add("apns-push-type", "alert"); using (var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead)) { HttpStatusCode statusCode = response.StatusCode; string reasonPhrase = response.ReasonPhrase; bool success = response.IsSuccessStatusCode; Console.WriteLine($"APN {(success ? "Delivered Successfully!" : $"Failed to Send! :: StatusCode [{statusCode}] Reason [{reasonPhrase}]")} :: PushToken [{pushToken}]"); if (!success) { switch (statusCode) { case HttpStatusCode.Gone: // The device token is no longer active for the topic. return PushResult.DeviceNotRegistered; default: return PushResult.Failure; } } return PushResult.Success; } } } } public enum PushResult { Success = 0, Failure = 100, DeviceNotRegistered = 200 } // Apple APNS requires http2 but .Net Framework does not support http2 (only built in support in .net core) // found this workaround https://stackoverflow.com/questions/32685151/how-to-make-the-net-httpclient-use-http-2-0/43101990#43101990 private class Http2Handler : WinHttpHandler { protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { request.Version = new Version("2.0"); return base.SendAsync(request, cancellationToken); } }
Posted
by rakesh47.
Last updated
.
Post not yet marked as solved
0 Replies
288 Views
I have gained the PassKit access, but don't know how to configure com. Apple. Developer. PassKit. Pass the presentation - suppression the permissions. Who can tell us the detailed process, which Capabilities should be configured in the App ID?
Posted
by CYRainy.
Last updated
.
Post not yet marked as solved
0 Replies
329 Views
I want to send APN to update a pass in the Wallet app. Followed this guideline. https://developer.apple.com/documentation/walletpasses/adding_a_web_service_to_update_passes#3733254 I tried with Typescript (Firebase Functions) like this. var path = "/3/device/"+pushToken var url = "https://api.push.apple.com:443"+path const response = await fetch(url, { method: 'POST', body: null, headers: { 'apns-topic': 'com.colorfull.walletPass', 'apns-push-type': 'background', 'connection': 'keep-alive' } }); Got this error. TypeError: fetch failed Tried with Flutter like this. var path = "/3/device/$pushToken"; var url = "https://api.push.apple.com:443$path"; Response resp = await post(Uri.parse(url), headers: { 'apns-topic': 'com.colorfull.walletPass', 'apns-push-type': 'background', 'connection': 'keep-alive' }, body: {}); Got this error. ClientException: Invalid request method, uri=https://api.push.apple.com/3/device/688a3d6bf83526f00f6fb3d8dd197578f665dea0eeba7aebbe68c61f06bad198 Obviously I'm doing it all wrong, but there is no clear guideline. How can I send APN??
Posted
by tenna.
Last updated
.
Post not yet marked as solved
0 Replies
408 Views
Hi, I can't complete provisioning flow on Sandbox Environment. You can find error response and PKAddPaymentPassRequestConfiguration below. How can I find the issue? guard let addPaymentPassRequestConfiguration = PKAddPaymentPassRequestConfiguration( encryptionScheme: .ECC_V2 ) else { return } addPaymentPassRequestConfiguration.style = .payment addPaymentPassRequestConfiguration.cardholderName = debitCard.cardholder addPaymentPassRequestConfiguration.primaryAccountSuffix = String(debitCard.cardNumber.suffix(4)) addPaymentPassRequestConfiguration.localizedDescription = debitCard.cardType.cardDisplayName addPaymentPassRequestConfiguration.paymentNetwork = .girocard https://crt-pod1-smp-device.apple.com:443/broker/v4/devices/--------------/cards 500 Time profile: 0.207283 seconds { x-conversation-id = "9affa45be1a1499381c2136dd3971443" Vary = "accept-language" Content-Type = "application/json" x-pod = "crt-pod1" x-keystone-correlationid = "A43237AA-DF0F-4B53-8A3D-4729CFC6C03E" Date = "Tue, 28 Nov 2023 15:17:12 GMT" x-apay-service-response-details = "via_upstream" Content-Length = "81" x-envoy-upstream-service-time = "36" x-pod-region = "paymentpass.com.apple" } { statusCode = 500; statusMessage = "Broker Service Response exception"; }
Posted Last updated
.
Post not yet marked as solved
0 Replies
508 Views
Hello Sir/Madam, In Apple Car Keys Specification R1 - Developer Preview 3 page 24, table 2-9, is mentioned the "NFC Protocol Start " parameter with the value of 5ms. Looks like this time was defined to include all the NFC procedures regarding protocol discovery and anti-collision, until the Select AID for the CCC applet command is issued. Quote: "NFC protocol start includes all ISO 14443-3 commands required to setup the NFC communication (REQA, ATQA, AC, etc.).". This requirement seems highly unfeasible on our side. The typical time on some of our products is between 30-50ms for the NFC protocol link set up. This includes the unmodulated carrier time, the VASUP command, REQA/ATQA sequence, HLTA/WUPA/ATQA sequence, ANTICOLLISION sequence, SELECT device ID/SAK/RATS/ATS sequence, all of which impossible to fit in 5ms even if we reduce everything to back to back communication and no delays between commands. Can you further define what the "NFC Protocol Start " 5ms typical time means and how to interpret this time, for example: Can you enlist the starting point and ending point of measuring this 5ms time? Is this a strict requirement? What is the accepted time range if otherwise? (the document only mentions this is a "typical" time). Does this time also include the RF unmodulated field before the first NFC data transmission? (only this time can take up to 5ms according to ISSO-14443-3). Thanks for your support! Peter.
Posted
by Petrikah1.
Last updated
.
Post not yet marked as solved
0 Replies
320 Views
Hi All Earlier, I had created some Apple pass without 'webServiceURL' using PHP. Those pass were added in the Apple wallet successfully, Now. I need to update the existing those passes. Are there options to update those existing passes. Thanks in advance
Posted
by prasathpb.
Last updated
.
Post not yet marked as solved
1 Replies
1k Views
My provisioning code works in my main app, but when I try to use it in my app clip it fails with this: The operation couldn’t be completed. (PKPassKitErrorDomain error 2.) I'm having an issue due to how vague this particular error is and how little documentation exists to explain it? I've been looking around the PassKit and Apple Pay documentation for more specific information. But I'm not certain what to do just yet. After provisioning and receiving the digital wallet token, adding the request to the wallet produces the unsupportedVersionError. My initial thought is because the appClip bundle identifier does not match the identifier that the issuer expects, but I'm not entirely sure. I have the entitlement necessary to provision passes on apples end.
Posted Last updated
.
Post not yet marked as solved
0 Replies
480 Views
My idea is to help small businesses (without IT infrastucture) generate apple wallet passes for their customers (to identify them later). All the data would be stored in my database and will be accessible by businesses. So Customer would show apple wallet pass which business would be able to scan and fetch customer info from my database. And businesses would be able to create/modify their passes through my app. Can I generate apple wallet passes using my pass type id? In https://developer.apple.com/forums/thread/48719, one of the comments mentioned: You agree not to ... use Your Pass Type ID to sign a third party's pass. I haven't seen this rule anywhere on apple's website, so not sure if it is still active. and distribution needs to be under Your own trademark or brand. Does that mean I can't generate passes for other businesses? Although, I am providing service related to wallet passes and pass generation is not part of the main service itself. If so, is there any legal workaround for my use case? E.g. maybe putting my company logo as main logo etc. Thanks! P.S. creating paid apple developer account to obtain business' own pass type id and certificate is not a viable solution
Posted
by alan2030.
Last updated
.
Post not yet marked as solved
0 Replies
375 Views
Hi, If I remove a Pass Type Identifier that is linked with a production (currently live) Pass Type ID certificate, will it affect my production pass certificate? When I press delete it states: "Delete Pass Type ID" "Deleting this Pass Type ID will prevent you from sending future updates to any associated passes. Installed passes will not be affected." But I want to make sure I will not be breaking anything in production. Any help? Many Thanks
Posted Last updated
.
Post not yet marked as solved
0 Replies
284 Views
I have by accident linked 5 certificates to my Pass Type ID. 5 is the limit and I am struggling to get one removed. Can I delete the Pass Type ID and create a new one? Will this break the app I have in production using the Pass Certificate? Thank you
Posted Last updated
.
Post not yet marked as solved
2 Replies
1.1k Views
I am facing issues with .pkpasses bundle. Currently, I generate multiple .pkpass files, and store them in a zip as .pkpasses. Once I drag this ZIP into my IOS simulator or mail it to my iPhone, nothing happens. These are the steps I followed (https://developer.apple.com/documentation/walletpasses/distributing_and_updating_a_pass) Create a .zip file containing the .pkpass files for the passes that are part of the bundle. Change the extension of the .zip file to .pkpasses. I have uploaded my bundle.pkpass to Google Drive: https://drive.google.com/file/d/1UIjRpiwWtYGnPILDQV3aAfmu1D7MGE_L/view?usp=sharing Is anybody facing similar problems? I am not sure if this is an IOS17 issue, because I haven't worked with .pkpasses files before.
Posted
by poej.
Last updated
.
Post not yet marked as solved
0 Replies
342 Views
Hi All I have successfully created an Apple pass using PHP. The pass is added to the Apple wallet successfully, and the pass auto update working fine Now, is there an option to update the pass, when I open the Apple wallet? If Yes, please help me with the steps to follow. please help me on this to solve the problem Thanks in advance
Posted
by prasathpb.
Last updated
.
Post not yet marked as solved
0 Replies
348 Views
I have a Apple Wallet Pass with a back field declared like so: { key: 'EnableLink', label: 'Powered by', value: 'Enable.tech', attributedValue: "<a href='https://enable.tech'>Enable.tech</a>" } When the wallet pass is active (side button pressed twice), and the user goes to the back of the pass, the link is visible and highlighted, however tapping it does not open the linked webpage in a browser. There are tel: links as well, that cannot be interacted with as well. Anyone know a workaround or a fix?
Posted
by Percimar.
Last updated
.
Post not yet marked as solved
1 Replies
323 Views
Our card is added to wallet app, and now we have updated our app icon. But wallet app show old icon on notifications. This doesn't happen for newly added card. Only happens to older added cards (before icon update). Is there a way to let wallet app to update the icon for older cards.
Posted
by indWise.
Last updated
.
Post not yet marked as solved
1 Replies
407 Views
We requested the In-App Provisioning entitlement and received the email from Apple said: “The entitlement for In-App Provisioning has been assigned to your account, and you can now configure this capability for eligible apps. ” Then we enabled the In-App Provisioning capability in the Additional Capabilities tab of App ID Configuration, and according to Apple’s instruction, there should be an entitlements drop-down menu in the provision profile edition page,but we‘ve never seen such menu in our provision profile. So is there any suggestion about this problem?
Posted
by youyou76.
Last updated
.
Post not yet marked as solved
0 Replies
485 Views
Hi guys, I want to build a referral program wherein current users are rewarded for inviting friends to join my app/website. I also wanted to keep the accounts linked so that recruiting users can get rewarded every time a new user they recruited purchases something. I want to just give the users points, I'm not offering cash or subscription discounts. similar to how game invites work. through my research into the topic I have found dynamic links with flutter and firebase. deep deferred links, QR code deferred links, and some work around that included taking the user to a website copying the code to their clipboard, then pasting it into a hidden textfield to verify and track the code can anyone help me get started?
Posted
by bush123.
Last updated
.
Post not yet marked as solved
1 Replies
587 Views
I'm encountering an issue with the Apple Pass Store card type backfield hyperlink not working when opened from double-clicking the power button. The value contains an HTML tag with a reference to our webpage. Everything works fine when we open it from the Wallet app, but the hyperlink doesn't seem to work when opened from the power button double-click. Has anyone else experienced this issue or have any suggestions for troubleshooting? Any help would be greatly appreciated. Thank you!
Posted
by farother.
Last updated
.