Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

Access Violation Occurs When Pipeline Fails on Invalid Credit Card


View products that this article applies to.

Symptoms

When the SupplierAD Solution Site is customized, an invalid credit card can cause the following error:
Error Type:
  Microsoft VBScript runtime (0x800A01FB)
  An exception occurred: 'mscsOrderGrp.RunPipe'
  /include/std_pipeline_lib.asp, line 121

Browser Type:
  Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0) 
  Page:
    POST /crdtcard.asp 
  POST Data:
    verify_with_total=44.33&mode=2&btnSubmit=Place+Order 
Time:
  Monday, April 02, 2001, 6:10:57 PM 

  Active Server Pages error 'ASP 0115' 
  Unexpected error

  /crdtcard.asp 
  A trappable error (C0000005) occurred in an external object. The script
cannot continue running.
					

↑ Back to the top


Cause

Visual Basic cannot find the DispID after the error occurs.

↑ Back to the top


Resolution

Commerce Server 2000

To resolve this problem, obtain the latest service pack for Microsoft Commerce Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
297216 INFO: How to Obtain the Latest Commerce Server 2000 Service Pack

↑ Back to the top


Workaround

To work around this problem, change the processing in Crdtcard.asp. If you find that the credit card is invalid during the POST, you can redirect back to the Crdtcard.asp page as follows:
		iErrorLevel = ValidateSubmittedCreditCardData(mscsOrderGrp,
listFlds, dictFldVals, dictFldErrs, listFrmErrs, sVerifyWithTotal)
		If iErrorLevel = 0 Then
			' Validation of submitted data succeeded.
			bSuccess = True
		Else
		    'This will prevent the AV in basket.pcf
  			'Response.Redirect(GenerateURL(MSCSSitePages.CreditCard,
Array("verify_with_total"), Array(sVerifyWithTotal))+"?Error=1")
		End If
				
The URL is appended with "?Error=1". This value is read by the Request object in the Main function as follows:
Dim CreditCardError

Sub Main()
	Dim bSuccess
	Dim listMethods, listFrmErrs
	Dim dictFldVals, dictFldErrs
	Dim sVerifyWithTotal
	Dim urlAction
	Dim iOrderGroupID, iErrorLevel
	
	CreditCardError = Request("Error")
				
This initializes the CreditCardError global variable that is declared before Main. When the page is rendered by htmRenderCreditCardPage, the variable is checked and the error message is appended as follows:
	If CreditCardError Then
	 htmContent = htmContent & "ERROR : " & RenderText(mscsMessageManager.GetMessage("pur_badcc", sLanguage),
MSCSSiteStyle.Error) & BR
	End If
				

↑ Back to the top


Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

↑ Back to the top


Keywords: KB300840, kbfix, kbcommserv2000sp2fix, kbbug

↑ Back to the top

Article Info
Article ID : 300840
Revision : 4
Created on : 10/31/2003
Published on : 10/31/2003
Exists online : False
Views : 468