I tried to create a program with an expired date, but if the date on the computer is changed, the expired date does not work anymore. how to solve it ?I made it using delphi
Need some more information to answer this effectively but it sounds like the issue occurs because the system is using the device's date/time/clock to determine the validity of dates.
The only way around this would be to hook into a webservice for an accurate date value that is then difficult to manipulate by changing the system clock.
There is another stackoverflow thread that addresses using internet time for these sorts of purposes:
Get internet time in delphi
I hope this helps!
Related
I am experiencing a very frustrating issue with SagePay Direct when a card payment initiates a 3DSecure challenge.
Customers are reporting either a hanging iFrame, or payment declined response. Whats worse is that in some instances, Sage takes the payment but the user is unaware of this and tries to buy again
Looking at my logs my code is working as expected and is loading the iFrame with the returned ACSURL as the src.
After searching the web, it appears it is a known issue with a timeout occurring on the secure merchant issuer that i hand off to.
The trouble i have is that i have no control of the response(or lack of) from the issuer as its in an iFrame.
Sage have not been very helpful with this problem only going as far as to say "we have heard of customers who experience this issue"
Does anyone have any experience of this problem and know how to resolve it? I guess the bottom line is to turn off the 3DSecure checks but this seems counter productive to the new EU ruling coming into force at some point.
Worth pointing out that this is only affecting a small percentage of my customer base and a lot of transactions are processing successfully (even with the password challenge) but the customers who experience problems are rightly shouting loudly.
anyone any ideas?
Thanks
We process up to 1000-2000 transactions daily via SagePay, using the Direct protocol. They are very cheap but their service is in all honesty fairly terrible. We have a single digit quantity of transactions every day that fail in this way. We've also got another provider and don't experience the same issues.
We have a routine job that asks the SagePay Reporting API about transactions that failed, to see what the current status is (did SagePay get the transaction? was it successfully authorised? etc). This API is utterly, utterly terrible and was a nightmare to integrate with, but it's useful as at least we can refund customers without having to log into the SagePay dashboard.
One thing that we discovered (that isn't documented anywhere on the SagePay site as far as I can tell) is that you're limited to one transaction at a time, or around 20-30 transactions per minute by default. If you go over this (a temporary peak or whatever) your transactions queue up and are delayed. If it gets really busy it completely falls over, and takes a while to recover. We had to switch SagePay off entirely for a few hours due to this (we've got backups in place).
Anyway, so it turns out our transactions were all being processed on one TID (short for Terminal ID). This is akin to a physical card terminal in a shop which can only process one transaction at a time. We asked SagePay support for more and we now have 10-15.
I hope this helps you. I'd recommend implementing a fallback payment supplier in case SagePay fails. A year or two ago they had a 3 day(!!!!) outage which was fairly devastating for us. We now take this seriously!
We've recently had an increase in what I believe may be the same thing. Basically the customer would be sent off to the 3ds page, then returned to the callback page, but for reasons I can't explain the PHP session wouldn't reestablish. The POST response to the callback page was enough to identify the order and complete it (as we'd taken payment), but the customer would then subsequently be prompted to log in again - they'd then see their basket as still having products in and place a second order (that would go through successfully).
After many hours debugging and making changes I managed to replicate this on a development server whilst using mobile emulation...
Long story short, what I have done is to add:
session_regenerate_id();
When I perform the initial vsp register CURL (this is the CURL where you get given the ACSURL). So far, this seems to be enough to ensure that the session gets reestablished when the customer returns to the callback page.
When trying to send a push alert through Parse.com, I came across the following warning:
Installations without a known timezone will not receive this campaign.
So, how do I make sure Parse knows a user's timezones? Is there any specific code, or does it to that without the need for code/by default, and this is a moot question?
Thanks!
This is recorded on a per-Installation basis by the Parse library, and should be automatically updated whenever it is updated by the client.
You can verify that Parse is saving time zones by logging into your account, selecting 'Core' (at top) and 'Installation' (at left). You'll see a list of all current installations - the relevant column is timeZone.
The notice that you see when attempting to send a push is just a general reminder, not an indication that there is necessarily anything wrong on your end.
UPDATE 3/1/2015:
I found a bug in this, BTW, that some people might run into. So I'm posting it here in case it might help somebody.
In the current version of Parse, there is a bug wherein an iOS device with their Date & Time "Set Automatically" setting disabled will (potentially) return a timeZone that Parse won't understand. In such an event, local-time scheduled push notifications will not be sent to a user with that setting turned off.
I verified this, myself, on two devices. With "Set Automatically" turned on the Parse Installation is set to "America/Los Angeles" (which is accurate for me). With it turned off, it sets it to "US/Pacific". This is still accurate, obviously, but for some reason Parse does not like that value.
I imagine there are a non-trivial number of iOS users with that setting disabled, so I hope Parse fixes this.
We've been using the EWS SDK for a few years now and after many mistakes, we've decided it was time to refactor our code base to reflect what we've learned. One issue we see happen every once in a while is that all EWS call fails because it's pointing to a CAS that is malfunctioning. The solution seems as easy as firing off a background thread every n seconds where n represents how often we'll autodiscover.
I've scoured the web and can't seem to find any information relating to the matter.
How often should I autodiscover?
From the "How To: Refresh configuration information by using Autodiscover" topic on MSDN:
We recommend that you refresh your user settings by sending a new Autodiscover request after 24 hours have passed since your last Autodiscover request. This time can be adjusted to meet the requirements of your application.
I have server application written in python3. It stores date and time of logins and logouts in sqlite3 database. What I need it to do is to check if a certain hour has passed eg. 23:00 and then write to database logout time eg. 24:00:00 to those users that haven't loged out yet (because at 23:00 it's obvious that they forgot to logout) . I don't really know how to code this.
Edit:OK I'll specify my question maybe I wrote it too general, I don't really want it to write somebody for me just a hint how to start. How is possible trigger function after certain hour has passed.
Depends how this program is being run. If it is only running when the user does something (such as a web app, which serves a request, then terminates), you might need to create another job which is run by say cron (in the unix world) which would fire off at 23:00 and see if there's anyone who's been logged on for 10+ hours but hasn't had recent activity. If on the other hand the server program is constantly running, you could look into something like the threading.Timer class to run a method at a specified time.
I am creating a desktop application using AIR. In that application user is allowed to download some resources which have life span of 2 days. I am storing the date when the user is downloaded.
But how can i check whether the date is passed 2 days or not? Right now I am checking with the current system date.But when the user changes the system date to back, it will start to work which i dont want.
How the desktop applications say like flex builder and all having trial period.? How are they tracking the dates remaining?
~Umesh
In our application we store a license file on the client machine which stores the date the product was installed and has a counter (so only days the user actually opens the application causes a decrement). We also expire the license if the system date is tampered i.e. if the date < date the product was installed set the counter to the max days allowed. (to punish cheats :))
You could implement a similar solution or even just ignore the license and store the settings in the registry.