Is there any documentation on the annouced Tap to Cash feature from WWDC24? Will there be a way for developers to tap into this feature from within their own apps?
I've searched around the documentation and info released during the conference and I haven't found anything.
Apple Pay
RSS for tagDiscuss how to integrate Apple Pay into your app for secure and convenient payments.
Post
Replies
Boosts
Views
Activity
Hello everyone,
I'm having trouble with sending custom push notifications for Apple Wallet passes. Here's what I've done so far:
Registered a new pass: I receive a deviceToken for the pass.
Enabled Push Notifications: Push notifications for the Apple Wallet app and the specific pass are enabled on my phone.
Added the Key for Push Notifications: I've added the necessary key for push notifications.
I use following code to send the message via APNS:
const tokenKey = fs.readFileSync(options.tokenPath).toString();
jwtToken = sign({}, tokenKey, {
algorithm: 'ES256',
expiresIn: '1h',
issuer: options.teamId,
header: {
alg: 'ES256',
kid: options.keyId
}
});
const client = http2.connect('https://api.push.apple.com:443');
const notificationPayload = JSON.stringify({ aps: { "alert" : "Hello" } });
// and try
//{
// "aps": {
// "alert": "Your pass has been updated!",
// "sound": "default"
// },
// "pass-type-identifier": "pass.com.example.myPass",
// "serial-number": "123456789",
// "device-token": "<deviceToken>"
//}
const request = client.request({
':method': 'POST',
':path': `/3/device/${deviceToken}`,
'apns-topic': topicId,
'apns-push-type': 'alert',
'authorization': `bearer ${jwtToken}`,
'apns-priority': 10,
'content-type': 'application/json',
'content-length': Buffer.byteLength(notificationPayload)
});
return new Promise((resolve, reject) => {
request.on('response', (headers, flags) => {
for (const name in headers) {
console.log(`${name}: ${headers[name]}`);
}
});
request.on('data', (chunk: string) => console.log(chunk));
request.on('end', () => {
client.close();
resolve();
});
request.on('error', (err) => {
console.error('Error sending push notification:', err);
reject(err);
});
request.write(notificationPayload);
request.end();
});
When I send the message, I receive a :status:200 and a apns-ID, indicating that the message has been sent. However, I do not receive the custom push notifications on my phone. The pass updates are received without any issues, but the notifications are not.
Has anyone encountered this issue or know if it's possible to send custom push notifications for Apple Wallet passes in this manner? Any guidance on how to resolve this issue would be greatly appreciated.
调用 API 时,返回以下错误:Apple Pay 处理证书、Apple Pay 商家身份证书和商家域均已设置
{
“statusMessage”: “支付服务异常 merchantId=1A9569E9792DB13B9BEE22EDB30515DE75D512B91A2C86C54D4065AD1ECC712E 未经授权代表 merchantId=4D08091EACD9C0D2E25CB94895D1B0DAE73970D6A517EF2988D6D929D1336DA1 reason=4D08091EACD9C0D2E25CB94895D1B0DAE73970D6A517EF2988D6D929D1336DA1 不是 WWDR 的注册商家,也没有通过 Mass Enabling 获得适当授权。
“状态代码”: “417”
连接到主机的 #0 apple-pay-gateway.apple.com 完好无损
}
Hi ,
I'm trying to verify my domain , I uploaded the verification file and when I open the file by browser it works.But the verification status remains “Pending”.
My domain has a firewall and is whitelisted, perhaps the request from Apple was intercepted?
17.0.0.0/8 has already been activated in the whitelist.
How can solve this problem?
I have setup the server settings TLS, HTTPS
I have performed the following steps but not working for me:
1. I have validated my domain
2. Generate Certificate Signing Request (CSR) using keychain. It created public and private key in MAC keychain
3. Uploaded CSR (from point 2) to apple Pay Merchant Identity Certificate. It gave me merchant_id.cer
4. Generated .p12 with merchant_id.cer, public and private key using keychain
Now I am using this .p12 to create the ApplePaySession (paymentSession) using server side code in C# but getting error from apple side.
Exception: The SSL connection could not be established
Inner Exception: Authentication failed, The credentials supplied to the package were not recognized at System.Net.SSPIWrapper.AcquireCredentialsHandle
Sample Code:
var request = new MerchantSessionRequest()
{
DisplayName = "StoreName",
Initiative = "web",
InitiativeContext = "applepaypoc.xxxxxx.com",
MerchantIdentifier = "merchant.com.xxxxxx.applepaypoc",
};
string certPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\files", "NewP12.pfx");
X509Certificate2 certificate = new X509Certificate2(certPath, "xxxxx");
HttpClientHandler handler = new HttpClientHandler();
handler.ClientCertificates.Add(certificate);
handler.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
var resCode = string.Empty;
using (HttpClient client = new HttpClient(handler))
{
try
{
HttpResponseMessage response = await client.PostAsJsonAsync(request.ValidationURL, validationPayload);
response.EnsureSuccessStatusCode();
resCode = response.StatusCode.ToString();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
catch (HttpRequestException e)
{
return $"resCode = {resCode} ///// Response Message: {e.Message} ///// Response Inner Exception: {e.InnerException.Message}";
}
}
**Ref: **
https://developer.apple.com/documentation/technotes/tn3103-apple-pay-on-the-web-troubleshooting-guide
https://tech.justeattakeaway.com/2016/10/10/bringing-apple-pay-to-the-web/
Hello,
I‘m a developer and I want to integrate apple pay to my app but I don’t want to pay the 30% charges (in fact I can’t because if apple does I’m in deficit i’ll explain below)
My app is a ticketing app for events like parties, gigs, etc… and I don’t know if it is eligible for not using iap but apple pay (like that I’m not charged 30%). I’m also using a third party payment provider. In my case is it authorized by apple?
I was saying I’m in deficit if apples charges me 30% because when a user buys a ticket I keep around 3% of the ticket and the rest goes for the organization of the event. If apple takes 30% I’ll not be able to fit in my prices.
Lastly, if I’m eligible to using only apple pay and not iap, how do I say to apple « hey I don’t want to use iap but just apple pay ». Is it in the apple store connect panel? Or it has to be declared somewhere else?
Im trying to do the payment using authorize.net through react native framework. I have registered the merchant ID in application and replaced merchant identifier in below code. Below i have posted my code that I'm trying to do the payment and I'm using the cards that are provided in this link. I can able to add one card and at the end step its trying for payment and its failing.Please help me out .Thanks.
Good day,
A few months ago, we started noticing that we are getting occasional ApplePay SDK Data decryption errors when we attempt to decrypt the SDK Data payload that comes back from the ApplePay SDK.
We are using the C# BouncyCastle Dotnet package to handle the EllipticCurve decryption.
We find on average that about 2% of all our deposits are failing because the library fails to decrypt the ApplePay SDK Data payload with the error: "Mac check in GCM failed". It appears like ApplePay is maybe sending faulty payloads to us on occasion? Unless there is an issue with the BouncyCastle library? This is causing only a few transactions to fail per day, but we still need a solution for this.
Is anyone having the same issue or is there a contact from Apple I can get in touch with directly to share examples to assist with troubleshooting this?
Kind regards,
Reon Fourie
We are an acquier that provide various payments methods including Apple Pay. Whave already connected to Apple Pay as web checkout for some of our merchants. If we will connect as PSP fot other merchants, may any problems with web checkout? Can we use them in parallel way?
Hello!
I have a question regarding the Apple Pay payment method. We're adding
this payment method to our app and noticed that during the initiation of a
transaction, i.e., when invoking Apple Pay to reserve a product in our app,
the 3DS verification doesn't occur. Our assumption was that 3DS happens
when a card is added to the Apple Pay wallet, which is before the user
purchases a product. But is that correct? Shouldn't 3DS be processed each
time a transaction is initiated? If the case where a transaction happened
for a card where the 3DS authentication is completed when it was added,
will the liability shift for this transaction from us as merchant to the
bank as well, like regular 3DS auth on a transaction basis would do?
Hey there, I have a question about the Payment Processing Certificate.
Does this certificate need to be in an account that is only using Push Provisioning in the apps? We don't have any payments being made in app.
Do the Wallet app use this certificate to make the payments? Or only stores uses it to make in-app payments?
The final question is: can we remove this certificate?
Is there a way to query the available credit/debit cards in the users Apple Wallet? I want to be able to load a specific card when the user is about to pay with Apple Pay.
I don't need the card numbers or anything, just the card brand (like "Wells Fargo Active Cash"). I'm not a card issuer.
Hello, I have a question to consult. My app includes app purchase, and I will receive the receipt after the purchase. During the testing process, it was found that with the increase of orders without "Finish" (simulating the situation of a user's order loss), the length of receipt would also increase. At present, our test account contains a maximum of 10 orders that are not "finished", and the length of "receipt" is increased from the first voucher length: [12812 characters] [9609 bytes] to the tenth voucher length: [17220 characters] [12913 bytes], currently we are testing in a sandbox environment. My question is whether there is a maximum length limit for the field receipt in a formal environment, and if so, what is the maximum length?
Hi. I'm planning of creating a system for in-office access control that allows putting employee ID card in Apple Wallet to unlock the door without unlocking iPhone, something like HID Global's Employee Badge in Apple Wallet.
I searched and it seems that Apple Access is suitable for unlocking the office door, but I couldn't find any relevant development documentation.
What kind of enrollment or application is required to put my employee ID card in Apple Wallet with Apple Access and use Express mode?
Also, could one share any related development documents please?
Thank you in advance.
During the WWDC2022 talk "What's new in Apple Pay - WWDC2022" the new SwiftUI implementation of Pay with Apple Pay was introduced.
During the talk only a code snipped is shared (screenshot).
Is there any example app or reference code that uses the APIs? Especially:
PayWithApplePayButton and
PayWithApplePayButtonPaymentAuthorizationPhase
Link to the talk: What's new in Apple Pay - WWDC2022
Greetigs has anyone been able to use storekit sandbox when making a purchase of any product consumable non-consumable or subscription it completes the purchase then starts the purchase flow in an infinite loop and suggestions
Hello,
In the wallet implementation guide there's note:
‘
Note
If the issuer uses an explicit App ID, it may not match their developer account Team ID. See Developer
Account Help for more information.`
Does an explicit App ID prefix (different from the current team id) impact in any way the app's integration with Apple Pay? Should the app switch to the default TeamID prefix?
is there any avaiable demo for java?
Acutally, i use code below to decrypt wrappedKey :
Cipher oaepFromInit = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding", new org.bouncycastle.jce.provider.BouncyCastleProvider());
OAEPParameterSpec oaepParams = new OAEPParameterSpec("SHA-256", "MGF1", new MGF1ParameterSpec("SHA-1"), PSource.PSpecified.DEFAULT);
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(privKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec);
oaepFromInit.init(Cipher.DECRYPT_MODE, privateKey, oaepParams);
return oaepFromInit.doFinal(wrappedKeyBytes);
But this code can't decrypt wrappedKey, always occur error:
Exception in thread "main" org.bouncycastle.jcajce.provider.util.BadBlockException: unable to decrypt block
at org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi.getOutput(Unknown Source)
at org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi.engineDoFinal(Unknown Source)
at javax.crypto.Cipher.doFinal(Cipher.java:2168)
at Caused by: org.bouncycastle.crypto.InvalidCipherTextException: data wrong
at org.bouncycastle.crypto.encodings.OAEPEncoding.decodeBlock(Unknown Source)
at org.bouncycastle.crypto.encodings.OAEPEncoding.processBlock(Unknown Source)
... 5 more
publicKeyHash value match my publicKey and privateKey, and I can use my publicKey and privatekey to encrypt and decrypt my own text in same algorithm.
I'm developing an App Clip to add cards to Apple Wallet,and I want to check if card already added to PassKit library.For example, to show "Apple Pay enabled" checkmark on a card's UI.
when I call these codes:
PKPassLibrary *passLibrary = [[PKPassLibrary alloc] init];
NSArray<PKPass *> *paymentPasses = [passLibrary passesOfType:PKPassTypePayment];
the paymentPasses returns an empty array.I want to know if App Clip can access passes, and how can I get the entitlements to query the pass library.
We now want to take this a step further adding Rewards Enrollment via the terminal. So scenario is:
customer pays with apple pay on adyen terminal
we check if the customer has the NFC pass in the wallet
if so, they earn points (regular flow which is working)
if not, wallet asks if you want to onboard into the program. We use personalization.json for for this and a webservice from us
We have everything setup, but the personalization isn’t working. We follow all these steps:
https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/PassPersonalization.html
The issue is that we never receive a POST request from wallet on the /personalize route we needed to set up. It simply never triggers.
We tried to do it manually from wallet using the ‘Add Personal Info’ button that appears now (because we added personalization.json to the pkpass bundle), but this triggers a message ‘Unable to personalise pass’, while it should show the personalization fields with our logo on top. See 2 attchements, one with the error, second one how it should look after clicking the ‘Add Personal Info’ button.