You just need to use the missing ID number to get the ID number you're missing



  • We are using a credit card authorization company to process credit cards on our website.  A couple of months ago, they announced that they have a system now where you can store customer data, including credit card information, on their servers, and then simply access that information using a customer ID so that the customer doesn't have to enter their info every time they make a purchase, a la Amazon or whatever.  So management decides this is a good idea and put me to work on it.

     The first thing I do is make a branch of our store into a test area that connects to their test area, and implement a function that will create an account for a logged in user.  I echo out all the code going back and forth to make sure it's working.  After a small amount of trial and error I successfully send them my e-mail address, and they send me back the ID.  Wonderful, now I can store the ID, so I add that piece of code and try again.  Instead of an ID number, I get "that record already exsts."  Hm, apparently the e-mail address must be unique for each customer.  No problem, all I have to do is retrieve the customer number and delete the account. Except I can't for the life of me find how to get the customer ID from the e-mail address.  So, finally, I put in a customer support ticket and describe the issue.

    The response I get goes something like this: "Thank you for your e-mail.  I have attached some information regarding CIM.  CIM is a new service that allows stores to save their customer data on a secure server ... " yada-yada-yada, and the rest of the e-mail is basically the text from the sales part of the website.  I'm already fairly frustrated with the system, and it's all I can do to keep my sarcasm from leaking as I reply "Thank you for your informative e-mail on what CIM is.  Unfortunately, you clearly did not read my original request and so it is attached below for your reference."

    I must have ticked them off a little with that response, because their reply is "It seems that you may have to look at our CIM guide.  Please click here to download it."  I click the link and as expected it is the same guide I have downloaded and printed out already, and read cover-to-cover in search of the answer.  So once again I reply, "I have the guide, and I may be missing something, but I don't see the solution to my problem."

    The next reply is so helpful.  "Please go to page 27 under "Input Elements for getCustomerProfileRequest" to find the steps that you need.  "Oh," I think, "I must have missed that section of code."  I look and sure enough, there is an API call "getCustomerProfileRequest."  And it take a single value: the customer ID number.  Which of course I don't have.  I reply to this e-mail and once again explain that apparently I need the customer ID number in order to execute the command that will retrieve the customer ID number, but I don't have the customer ID number, and therefore am unable to retrieve the customer ID number using this API call because it requires the customer ID number.

     The next response indicates that someone finally read my problem: "I have looked into the guide and I don't see a method for doing what it is you would like to. However, I have turned this over for research by someone a little more knowledgeable in CIM than I."  One week later and I'm still hoping for a helpful response.



  • @jdavidbakr said:

    I look and sure enough, there is an API call "getCustomerProfileRequest."  And it take a single value: the customer ID number. 

    Please, for the love of Pete, tell me that there's something keeping you from entering an arbitrary Customer ID Number and getting back info for some customer of some other merchant that you have no business looking at...



  • @DoctorFriday said:

    Please, for the love of Pete, tell me that there's something keeping you from entering an arbitrary Customer ID Number and getting back info for some customer of some other merchant that you have no business looking at...
     

     Unfortunately ... or fortunately ... the customer ID field appears to be a primary key that all merchants share but you can only access your own customer IDs.  I actually did successfully delete one of my ID's by making a new one, then going backwards from that number about 15 or 20 until a delete command was successful.  I suppose I could write a script that polls every number from 1 to 10,000 to find my missing customer ID ...



  • @jdavidbakr said:

    I suppose I could write a script that polls every number from 1 to 10,000 to find my missing customer ID ...

    So for all the companies using this there can be a maximum of 10,000 customers? 



  • @medialint said:

    So for all the companies using this there can be a maximum of 10,000 customers?

    Ha, that would be my strategy until the primary key exceeds 10,000, which actually already has very likely happened on the live server, so you're right, I'd have to run a script that would poll every number from 1 to ... well, I guess I'll have to find out what the maximum primary key would be, or develop some algorithm to determine the growth rate of the primary key using my newly created ID's as input, determining the growth of all merchants using the system as well as the growth rate of merchants adopting the system.  Sounds like fun. 



  • If it's a test area, why not just use a new test email address?  After all, they did send you the ID at some point, isn't it your fault for not storing it?  If their service dosn't have a getCustomerIDByEmail or something and that is functionality you need, then I would request it from them.



  • @Decker97 said:

    If it's a test area, why not just use a new test email address?  After all, they did send you the ID at some point, isn't it your fault for not storing it?  If their service dosn't have a getCustomerIDByEmail or something and that is functionality you need, then I would request it from them.

    I agree that I could use a new test e-mail address, but my concern is what happens if for some reason, however unlikely, a customer ID is lost on the live system (i.e. some sort of network outage that causes me to not receive the response)?  But, my story was not so much about the inability to get the customer ID without the customer ID (although that in and of itself is, to me, a design flaw) but about the time it took for the tech support to even read what my problem was.  Alas, though, we all have these tales of benighted tech support minions.



  • @jdavidbakr said:

    One week later and I'm still hoping for a helpful response.

    That's TRWTF right there.



  • @jdavidbakr said:

    @DoctorFriday said:

    Please, for the love of Pete, tell me that there's something keeping you from entering an arbitrary Customer ID Number and getting back info for some customer of some other merchant that you have no business looking at...
     

     Unfortunately ... or fortunately ... the customer ID field appears to be a primary key that all merchants share but you can only access your own customer IDs.  I actually did successfully delete one of my ID's by making a new one, then going backwards from that number about 15 or 20 until a delete command was successful.  I suppose I could write a script that polls every number from 1 to 10,000 to find my missing customer ID ...

    I can't wait to read the sidebar from some other customer of this company, wondering why his customers get randomly deleted once in a while.  And always when the tech support line is busy, for some reason ...


Log in to reply