django-payments icon indicating copy to clipboard operation
django-payments copied to clipboard

Cybersource: with capture true process data returns error xid is missing

Open awais786 opened this issue 6 years ago • 6 comments

After 3D-Secure window call back come for process data and after making final call receiving following response.

{
   merchantReferenceCode = "some id"
   requestID = "some id"
   decision = "REJECT"
   reasonCode = 101
   missingField[] =
      "c:xid",
   requestToken = "some toke"
   ccCreditReply =
      (CCCreditReply){
         reasonCode = 101
      }
   payerAuthValidateReply =
      (PayerAuthValidateReply){
         reasonCode = 100
         authenticationResult = "0"
         authenticationStatusMessage = "Success"
         cavv = "some id "
         cavvAlgorithm = "2"
         commerceIndicator = "vbv"
         eci = "05"
         eciRaw = "05"
         xid = "d1BMazdJalhJV0l6d2NVOHajA="
         paresStatus = "Y"
      }
 }

awais786 avatar May 29 '18 09:05 awais786

Which payment gateway is that?

patrys avatar May 29 '18 10:05 patrys

Cybersource Soap tool kit api.

awais786 avatar May 29 '18 13:05 awais786

These are request params.

ccCreditService': (CCCreditService){
   captureRequestID = None
   reconciliationID = None
   partialPaymentID = None
   purchasingLevel = None
   industryDatatype = None
   commerceIndicator = None
   billPayment = None
   authorizationXID = "RE05V3ZqZGtBWDVSbjQ4enZLMzA="
   occurrenceNumber = None
   authCode = None
   captureRequestToken = None
   merchantReceiptNumber = None
   checksumKey = None
   aggregatorID = None
   aggregatorName = None
   _run = "true"

awais786 avatar May 29 '18 13:05 awais786

In 3D-Secure call back it is going into CCCreditService.

    def _prepare_payer_auth_validation_check(self, payment, card_data,
                                             pa_response):

        check_service = self.client.factory.create(
            'data:PayerAuthValidateService')
        check_service._run = 'true'
        check_service.signedPARes = pa_response
        params = self._get_params_for_new_payment(payment)
        params['payerAuthValidateService'] = check_service

        if payment.attrs.capture:
            logger.info('in CCCreditService')
            service = self.client.factory.create('data:CCCreditService')
            service.authorizationXID = payment.attrs.xid
            service._run = 'true'
            params['ccCreditService'] = service

awais786 avatar May 29 '18 13:05 awais786

The authorizationXID looks ok, I'm not sure which field (c:xid) it complains about, will need to consult Cybersource documentation.

patrys avatar May 29 '18 14:05 patrys

Did not find any useful information on the Cybersource.

awais786 avatar May 29 '18 14:05 awais786