Link to home
Create AccountLog in
Avatar of robertfowler

asked on

LinkPoint WebServices Recurring Payment with Custom OrderId

I have installed the LinkPoint Webservices Api in my .Net application and use it to successfully conduct transactions for both one-time Sales as well as Recurring periodic billing.

I use the Web Reference to generate the SOAP call. I use the built in FDGGWSApiOrderService object and execute either the FDGGWSApiOrderRequest or FDGGWSApiActionRequest method.

I also customize the orderId using this pattern: firstName.lastName-personId-datetime ToOADate()  [* I strip out any invalid characters in the person's name such as apostrophes and the total length is capped at 100 character -- though the highest I have yet created was 60 long.]

When I submit a basic sale using FDGGWSApiOrder(), I set the OrderId property in the  TransactionDetails object to my custom orderId and the transaction is commits successfully with the correct custom orderId.

However, when I ‘install’ a recurring payment using FDGGWSApiAction() and also set the OrderId property in the  TransactionDetails object to my custom orderId - the transaction commits successfully but the OrderId is changed by LinkPoint to a random unique Id.

How can I force the custom orderId on action requests regarding recurring billing?
I don’t know if my RecurringPayment object is either misconfigured or is missing a setting to override LinkPoint’s auto-generated unique OrderId key.

FYI - my company switched over from using the COM object to WebServices for both ease of deployment in a web farm and the difficulties getting the 32bit api to run on 64bit OS.
While I had no problems assigning a custom created orderId to a recurring payment using the COM object, there is no going back to that method.

Thank you in advance for your help.

// oTrans – custom object containing all the info I need to build by transaction.
// oTrans.TrxnOrderNumber – my custom orderId

//Normal Sale Transaction  - Custom OrderId
Transaction oTransLP = new Transaction();
TransactionDetails oTrxnDetails = new TransactionDetails();
oTrxnDetails.PONumber = oTrans.TrxnPoNumber;
oTrxnDetails.InvoiceNumber = oTrans.TrxnInvoiceNumber;
oTrxnDetails.OrderId = oTrans.TrxnOrderNumber;
oTransLP.TransactionDetails = oTrxnDetails;
/** I also create and append to the oTransLP the following objects: CreditCardData, Payment, Billing, Shipping, and Notes **/

FDGGWSApiOrderRequest oOrderRequest = new FDGGWSApiOrderRequest();
oOrderRequest.Item = oTransLP;
oOrderResponse = oLPOrderService.FDGGWSApiOrder(oOrderRequest);

//Recurring Transaction [Install] – with custom OrderId
RecurringPayment oRecurring = new RecurringPayment();
oRecurring.Function = RecurringPaymentFunction.install;

RecurringPaymentInformation oRecurringInfo = new RecurringPaymentInformation();
oRecurringInfo.RecurringStartDate = DateTime.Now.ToString("yyyyMMdd"); 
oRecurringInfo.InstallmentCount = "60";
oRecurringInfo.InstallmentFrequency = "5";
oRecurringInfo.InstallmentPeriod = RecurringPaymentInformationInstallmentPeriod.year;
oRecurringInfo.InstallmentPeriodSpecified = true;
oRecurringInfo.MaximumFailures = "1";
oRecurring.RecurringPaymentInformation = oRecurringInfo;

TransactionDetails oTrxnDetails = new TransactionDetails();
oTrxnDetails.PONumber = oTrans.TrxnPoNumber;
oTrxnDetails.Recurring = Recurring.Yes;
oTrxnDetails.InvoiceNumber = oTrans.TrxnInvoiceNumber;
oTrxnDetails.OrderId = oTrans.TrxnOrderNumber;
oRecurring.TransactionDetails = oTrxnDetails;

/** I also create and append to the oTransLP the following objects: CreditCardData, Payment, Billing, Shipping, and Notes **/

FDGGWSApiActionRequest oActionRequest = new FDGGWSApiActionRequest();
LinkPointGateway.Action oAction = new LinkPointGateway.Action();
oAction.Item = oRecurring;
oActionRequest.Item = oAction;

Open in new window

Avatar of coreybryant
Flag of United States of America image

Have you tried calling LinkPoint to ask them what was being seen on their end when the transaction was being processed?

Unfortunately, LinkPoint just really has missed the process.  They used to be a great gateway, but when they rebuilt it a few years ago, they made a lot of errors.

If you could, I would suggest another gateway - Quantum Gateway - better and more reliable / easier to work with.  But call them - that would help you (somewhat).
Avatar of robertfowler



Thanks for the feedback. I have a call in with our Merchant Vendor regarding LinkPoint's Web Service; however, it has yet to be answered as for what LinkPoint sees - regarding the SOAP call.

I guess where I am stuck is confirming the proper configuration of the .Net 'recurring' action object being sent to the Webservice to use my custom orderId.
As I mentioned before, the recurring transaction is submitted successfully and the result is 'approved;' however, it appears the orderId is created from scratch by LinkPoint (in the exact same scenario as when I omit the orderId all together.)  

The 'single sale' order object is apparently being set up correctly as it transmits successfully and the orderId is my custom issue.

The orderId is a property of the TransactionDetails object and is being set the same way for both service requests. The only difference is one request is a 'FDGGWSApiOrderRequest' and the one I am having difficulties with is 'FDGGWSApiActionRequest'

Note: other TransactionDetails properties such as invoice number and PO number correctly get sent and recorded through my recurring billing action request - just not the OrderId.

I just don't know if there is another setting I am missing with is affecting this.
I wished I could help further.  I know I used to call in to check the transaction details and usually within a few minutes, they would be able to give me the error and let me know what was fixed.  However, they made a lot of cutbacks and when we started having problems with Windows 2003 server (found out back then they were not completely even supporting that, even though MS was one of the larger clients).  

With them - you have to be relentless.  Keep calling - ask for a supervisor.  You might also check out for a little help.  Otherwise, call - don't take know for an answer.  Stay on the phone until you get your error resolved.  If they don't resolve it - get a ticket number and keep calling back.  That is the only language that company will understand.  They think that you will just basically get fed up and go away.  You have to approve that you are not going away and that you need answers.

(BTW, I am guessing you have the OpenSSL and the other DLL that is listed in the above URL that is needed.)  
Avatar of robertfowler

Link to home
Create an account to see this answer
Signing up is free. No credit card required.
Create Account
After working with LinkPoint to identify where the problem was, I manually created the SOAP call and noticed the second OrderId property.

After testing that setting, all worked as expected.