Comments

  1. Hi, yeah I understand you need case details…. So I’ve been trawling through Jane’s garbled emails and stripe’s unhelpfully-not-very-searchable logs. Unfortunately the cards that have suddenly stopped working have mostly done so as per my case type 1). As a result there are no logs in stripe because they never make it that far. This as happened with 3 instructor/patient pairings over the same week and from 3 different banks – hence Jane’s complaints. Interestingly it is still working for many other cards. From my understanding of the docs there really is *nothing* we can do about this. So I propose we shelve this part of the issue for now.

    However… There’s also the issue re 3dsecure. The only documented case of failure I have is the one I’ve already listed here.
    instructor markfricker22@gmail.com
    User Country GB
    Transaction amount 290
    Currency GBP
    Date of transaction 15 Apr
    Last_payment_error – 3d secure failed
    3D Secure enabled or not – yes

    This one bothers me partly because it sounds like Jane & patients may have had more of these – it’s just hard to get them to report well enough to distinguish between this and the other type of error. I will try to improve their reporting now I myself am clearer on the difference.

    But also because Jane reports they did not see a 3dsecure challenge. OK, here I’m thinking things maybe still work differently in your part fo the world. In the UK now *all* cards, on any purchase over a certain amount th aren’t immediately passed by 3ds bring up a dialog box on your screen which asks you one or more questions depending on the bank. For example mine first asks me to enter a code that I recieved on my phone. Then it shows me a list of 8 or so recent transactions. One of them is a genuine transaction from my account – the rest not. I have to select the genuine one.

    I can’t help wondering if this recent change is not a capability we have in our system – especially since that transaction I detail simply denied the transaction rather than show a 3ds challenge – BUT it cited 3ds as it’s fail reason.

    Now as I write this I remember Tom trying to pay you 18months ago and his card not only completely skipping 3ds challenges but also locking him out from paying anything until he ordered a new card….

    However, I’m also not re-assured re the version numbers you found! Can you see any version history and perhaps any changes that are relavent to what I’m talking about? Also can you give me some idea what would be involved in updating the libraries? Would they need a whole load of other updates too or can it be done in isolation? Would it be likely to require a load of re-coding or do you think we could just test the new lib post-upgrade?

    I’m thinking the upgrade has to be done eventually right?

  2. Thanks for sharing screenshots but it doesn’t give me much information.
    Basically what I would like to know of the last 20 transactions that Jane has handled – How many failed transations were there which showed no error message and in how many of them errors were showing.

    If we have list of all transaction which have failed recently, based on the data I requested before. It will give us some form of pattern.
    If there are only handful of transactions which are not completing then it means there is no pattern. We can then have a look at invidual cases why they failed. It could be any reason related to stripe account, bank decline or card invalid which might be the issue.

    With regards to 3Ds challenge, I believe the stripe sends this challenge on customer phone number and not on the web interface where Jane initiates the transaction. Let me know, if this is correct as per your information as well.

    When there is no logs in stripe related to transaction then we should check the debug or error logs on our server. We can find additional details on it whether the stripe server gave any response.

    I also had a look at the stripe version code
    In frontend JS we are using v3. This is still latest https://docs.stripe.com/js/including
    For backend we are using v7.11 of stripe/stripe-php library through composer. v14.4.0 is now latest though

  3. Attached 2x screenshotted variations of stripe error. They correspond precisely with the two types I classified. The one with no error message just whirs and freezes (when previously it worked fine). Perhaps we simply need a more graceful error for whwn that fails. It never reaches stripe logs. I think that is a dead end in any case as this 3ds exemption is banks discretion. However the second with the error message should be presenting the user with a 3ds challenge. And it isn’t – it’s just failing. I’m going to try to dig this transaction out of stripe’s logs for you now. Meanwhile please can you check and see if our version of stripe api is just hopelessly out of date? I wonder if there are modern 3ds challenges that it’s not handling. I remember you said we have an out of date set of front end libraries – I wonder whether that needs sorting to present a dialog for otp codes etc properly?

  4. Really great work thankyou so much – client is very happy! (I love these old sites with html/css – I much prefer them to wordpress:)

    Please remember to fill in hours! And next task is definitely the stroke solutions issues Ashley shared – we have more work to come there but really need to tidyi it up first…

  5. Thanks for reading up on this – I think we’ll both need to be clear on it to move forward…

    So now I’ve had a chance to get a bit clearer on this and think it over. We have two scenarios:
    1) using a card that has previously succeeded and been stored. These transactions were successful for the past year tagged ‘merchant initiated’ (ie ‘off-session’ = true for the payment intent object) Now they fail and never hit the stripe logs even. My thought on this is that it is *inevitable* – the execption this requests is not a low value transaction, there is no guarantee and if it fails then it fails… Maybe long term we either need to ditch this strategy *or* at least provide useful error messages/suggested next steps.
    2) The transaction I screenshotted below is a 3d secure enabled transaction – all transactions on this site are uk cards and 3d secure enabled. I will try to get a description from Jane as to what she precisely sees from a user perspective for these transactions. It seems to me that for 1) they would likely just see the whole system whirring and doing nothing. But for 2) they should be seeing a 3ds challenge and either pass or fail that challenge… Or at least report that the card has been rejected. If not it’s our implementation that’s at fault and needs an upgrade perhaps…

    I’ll get back to you with more info/logs etc shortly…

  6. Based on the details you have shared, if I understand the problem correctly, then Jane attempted two different customer transactions, which were previously authenticated for 3D Secure, but this time they resulted in a failed error. However, some other transactions on the site are still working automatically with 3D Secure.

    We may need to gather more details about these customer transactions and why they failed.

    I also tried to find more information about Stripe 3DS in their documentation. It seems there is new information in their documentation now based on security laws:

    US cards are not 3D Secure enabled by default. Customers have to enable this option in their Stripe settings. For UK and EU users, this option is automatically enabled when adding cards.

    In certain cases, with low-value transactions of less than 30 GBP, Stripe can automatically allow exemptions without needing a 3D Secure challenge. However, for UK and EU, certain additional limits may apply.

    Based on the JSON data for payment logs you have shared, it includes the following error details:

    “last_payment_error”: {
    “code”: “payment_intent_authentication_failure”,
    “doc_url”: “https://stripe.com/docs/error-codes/payment-intent-authentication-failure”,
    “message”: “The provided PaymentMethod has failed authentication. You can provide payment_method_data or a new PaymentMethod to attempt to fulfill this PaymentIntent again.”,
    “type”: “invalid_request_error”
    }

    It is, however, difficult to tell whether it is specifically related to the 3D Secure challenge.

    If you can ask Jane to provide the following data for transactions that are not completing, it will help us to find more detail where these errors are originating from:

    User Country
    Transaction amount
    Currency
    Date of transaction
    Last_payment_error
    3D Secure enabled or not

    I can then investigate further.

  7. Hi Karan,

    Numbers 1 to 4 here are more urgent than the hosting tab from above…

    I’ve used the client payments system a few times now and am clear on what I’d need to save more time each month.. (and make the process of invoicing simple/affordable to give to someone else…)

    1. When clients log in and look at their hours log please remove the links to tasks in the logs – Ie I don’t want them to be able to click on the task and see all our chat:-)

    2. In the hours log please add a column for the ‘title’ – maybe put it under the ‘task’ in italics or something?

    3. Also how many row items is the hours log currently showing? It seems to be doing a reasonable job but I’m just curious…

    4. Invoices…

    New post type: Fos Invoice (so as not to conflict with existing/legacy invoice plugin)

    Fields:
    – Client
    – Date Issued
    – Date Due
    – Select 1 or 2 client payments
    – repeater custom item name/amount
    – Message (free text field)
    – field ‘invoice link’ (non editable)
    – checkbox sent (non editable)
    – paid checkbox
    – date paid

    Front end:
    – Button to generate Invoice – my thought is this: https://github.com/artkonekt/pdf-invoice just add items and there it is – what do you think?

    Need two fields in admin options panel: liason rate / developer rate

    Items for hours multiply amount appropriately

    Sets invoice link field

    – Button to send invoice/message
    Attaches invoice and sends message to client email

    Checks sent field

    Yes I am only doing invoices in GBP now:)

    5. You’ve got a form for Shubham to fill on the front end right? How hard would it be to have user meta ‘Is Liason?’ and then for those that it’s checked display a field that lets you add hours? My problem right now is to select ‘task’ in the back end I see every task for every client and ’emails’ is a common task name…

    6. In the dashboard for developers are you currently filtering for which tasks they see? Needs to filter those for which the user is either developer or moderator…

  8. Hi Shubham, as you can see Ash has done some detective work and traking down this issue on staging dev.strokesolutions.co.uk

    I wonder what would happen if he booked a 4th appointment? Would it still only display two? On live, this precise build was sometimes showing appointments but not always. Particularly previously booked ones seemed to vanish. So this could be the explanation.

    Please can you investigate further with the logins provided referring to the screeshots if needed.

  9. And now I understand… Previously saved cards never make it to stripe – the new card they tried this morning was the one that failed 3d secure – therefore that would not have been a ‘saved card’. Banks are saying we have to ‘implement 3d secure’ but it’s passing for some transactions so I’m curious what it is we have/haven’t implemented.

  10. ok so to my surprise I just found out both transactions were done via admin dashboard… So now I wonder why the first one didn’t even make it as far as stripe?! And original question still stands – ie do we have 3d secure fully implemented?

  11. I’m re-opening this task as it’s basically where most of the past info is stored. Basically, on apr 12th Jane tried to do a transaction beween instructor markfricker22@gmail.com and patient steve martin (might be other person on log but with surname martin…)

    The transaction failed and never made it to stripe.

    Then the patient tried to do the transaction apr 15th and it gotas far as a stripe ‘incomplete’. I’ll attach a screenshot and the json ‘event’ from stripe so you need not log in…

    Both were second/subsequent transactions – ie the card has worked before and thereforeas faras I know, your system saved the card details then tried to re-use them.

    However the one from the admin dash would have tagged it ‘merchant-initiated’ ie to require no 3d secure and operate as an exception. This has worked with this card previously but now no more…

    I recently re-jigged the code so that when the patient tries from their dashboard it attempts regular 3d secure transaction. These have often succeeded. Though I’m not sure if 3d secure has actually asked for anything in these cases – in the logs they just say ‘automatic’.

    And really that’s the crux of my question. In the screenshot I’m about to attach, it asks us to implement a stripe.js front end for 3d secure – but I don’t know whether that’s just a default message or if we really don’t have that.

    If we don’t, then what would be involved in getting it? Updating stripe API version? Or other front end libraries?

    Sorry to land this one on you but you’re the only one of us who stands even half a chance of getting a firm answer to this question!