KimHJ 3 Posted 6 hours ago I have a rest server module that process credit cards. It is running on a Windows 2016 R2 server in the cloud since February 2021 with no problems. I have two different processor in the module, one works fine the other stopped working end of February 2025 and I can't find out why. They booth works fine on my Windows 10 computer. Both processors uses TLS1.2 and I checked using the Nartac ISS Crypto 3.3 and it show that TLS1.2 is the only valid protocol. On the server using IE I get this when I enter https://secure.usaepay.com/soap/gate/BBLQPYNC/usaepay.wsdl <!-- USAePay Soap Interface - v1.6 (RPC) --> <!-- WSDL file generated painstakingly by hand --> <!-- For further documentation on the USAePay API Please visit http://help.usaepay.com/developer/soap --> <definitions xmlns:typens="urn:usaepay" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" name="usaepay" targetNamespace="urn:usaepay"> ... </definitions> When I enter this WSDL: https://ps1.merchantware.net/Merchantware/ws/RetailTransaction/v45/Credit.asmx I get this. (Imported to Delphi like this: https://ps1.merchantware.net/Merchantware/ws/RetailTransaction/v45/Credit.asmx?WSDL) This page can’t be displayed Turn on TLS 1.0, TLS 1.1, and TLS 1.2 in Advanced settings and try connecting to https://ps1.merchantware.net again. If this error persists, it is possible that this site uses an unsupported protocol or cipher suite such as RC4 (link for the details), which is not considered secure. Please contact your site administrator. I can run the https://ps1.merchantware.net/Merchantware/ws/RetailTransaction/v45/Credit.asmx in Nartac ISS Crypto 3.3 in Site Scan and it works fine and does the whole scan. Here is the code for the one that is not working: function TEWBModule1.CayanProcessing(MCCNumber, MExpDate, Mcvv, MWAmount, MCusNum, MName, MTransNum, MWType: string; SaveIt: Boolean): Boolean; var ReturnStr: TransactionResponse45; MerchantC: MerchantCredentials; PData: PaymentData; Sale: SaleRequest; Void: VoidRequest; Service: CreditSoap; RIO: TRIO; MwCardType, CCardNumber, Authoriz, CardT, CCToken, ApproveS: String; MYApprovedAmount: Double; DidConnect: Boolean; begin DidConnect := True; CoInitialize(nil); MerchantC:= MerchantCredentials.Create; MerchantC.MerchantName := MasterTbl.FieldByName('Mlogin').AsString; MerchantC.MerchantSiteId := MasterTbl.FieldByName('MPassword').AsString; MerchantC.MerchantKey := MasterTbl.FieldByName('Merchantnum').AsString; Try if MWType='C' then begin PData:= PaymentData.Create; Sale:= SaleRequest.Create; PData.Source := 'KEYED'; PData.CardNumber := MCCNumber; PData.ExpirationDate := MExpDate; PData.CardHolder := MName; PData.CardVerificationValue := Mcvv; Sale.Amount := MWAmount; Sale.InvoiceNumber := MTransNum; Sale.CustomerCode := MCusNum; Sale.RegisterNumber := 'Web'; Sale.MerchantTransactionId := MTransNum; Sale.CardAcceptorTerminalId := '1'; Sale.EnablePartialAuthorization := 'false'; Sale.ForceDuplicate := 'false'; end else begin Void := VoidRequest.Create; Void.Token := MCCNumber; Void.RegisterNumber := 'Web'; Void.MerchantTransactionId := MTransNum; Void.CardAcceptorTerminalId := '1'; end; Service := GetCreditSoap(Boolean(False), ''); RIO := (Service as IRIOAccess).RIO; if RIO is THTTPRIO then begin THTTPRIO(RIO).HTTPWebNode.ConnectTimeout := 1000 * 30; THTTPRIO(RIO).HTTPWebNode.SendTimeout := 1000 * 15; THTTPRIO(RIO).HTTPWebNode.ReceiveTimeout := 1000 * 60; end; try if MWType='C' then ReturnStr := Service.Sale(MerchantC,PData,Sale) else ReturnStr := Service.Void(MerchantC,Void); except On E:Exception do begin Result := False; DidConnect := False; end; end; Finally if MWType='C' then begin PData.Free; Sale.Free; end else Void.Free; MerchantC.Free; CoUnInitialize; End; end; The ReturnStr is blank. This is the second processor also imported as a WSDL and it is still working fine. function TEWBModule1.ProcessCreditcard(card,Exp,cvv, Amount, account, transnum, PType: String; Saveit: Boolean): Boolean; var NewToken: usaepay.ueSecurityToken; tran: usaepay.TransactionRequestObject; response: usaepay.TransactionResponse; Wclient: usaepay.ueSoapServerPortType; CData: usaepay.CreditcardData; CDetails: usaepay.TransactionDetail; NewAmount: Double; RIO: TRIO; I: Integer; VoidResponse, CApproved: Boolean; Errormsg: String; begin NewToken := nil; tran := nil; Response := nil; try CoInitialize(nil); NewToken := CreateToken(MasterTbl.FieldByName('Merchantnum').AsString, MasterTbl.FieldByName('Mlogin').AsString); tran := usaepay.TransactionRequestObject.Create; if PType='C' then begin CData:= usaepay.CreditcardData.Create; CDetails:= usaepay.TransactionDetail.Create; CData.CardNumber := card; CData.CardExpiration := Exp; CData.CardCode := cvv; NewAmount := StrToFloat(Amount); CDetails.Amount := NewAmount; CDetails.AllowPartialAuth := False; CDetails.Description := 'Web Payment'; tran.Details := CDetails; tran.CreditCardData := CData; tran.CustomerID := account; tran.Software := 'ComcaWeb'; tran.Command := 'sale'; end; Wclient := GetueSoapServerPortType(False,''); RIO := (Wclient as IRIOAccess).RIO; if RIO is THTTPRIO then begin THTTPRIO(RIO).HTTPWebNode.ConnectTimeout := 1000 * 30; THTTPRIO(RIO).HTTPWebNode.SendTimeout := 1000 * 15; THTTPRIO(RIO).HTTPWebNode.ReceiveTimeout := 1000 * 60; end; finally NewToken.Free; tran.Free; response.Free; CoUnInitialize; end; end; The only thing I can think off is that something changed in Windows Server 2016 R2 in February 2025. Thanks for any help. Share this post Link to post