<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Card present transactions returning $0 amount in test mode in Integration and Testing</title>
    <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35099#M19501</link>
    <description>&lt;P&gt;response.Amount.&amp;nbsp; I view it in the debugger on return from gate.Send().&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's the CaptureResults() code:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;PRE&gt;        private TransactionResult CaptureResults(GatewayRequest request, IGatewayResponse response)
        {
            var result = new TransactionResult
            {
                Amount                  = Convert.ToDecimal(response.Amount),
                AuthorizationCode       = response.AuthorizationCode,
                ResponseCode            = Convert.ToInt32(response.ResponseCode),
                Status                  = ResponseCodeConverter.ToTransactionStatus(response.ResponseCode),
                TransactionId           = response.TransactionID,
                Reason                  = response.Message,         // Message supplies Response Reason Text

                PaymentMethod           = (request is EcheckRequest) ? PaymentMethods.ECheck : PaymentMethods.CreditCard,
            };

            var baseResponse = response as GatewayResponse;     // Cast to concrete type
            if (baseResponse != null)
            {
                // Pick up stuff not accessible through interface
                result.TransactionType          = baseResponse.TransactionType;
                result.Description              = baseResponse.Description;
                result.AvsResponse              = baseResponse.AVSResponse;
                result.CardCodeResponse         = baseResponse.CCVResponse;
                result.ReasonCode               = ExtractReasonCode(baseResponse.GetValueByIndex(2));
            };

            var cpResponse = response as CardPresentResponse;
            if (cpResponse != null)
            {
                result.AvsResponse = cpResponse.AVSResponse;
                result.CardCodeResponse = cpResponse.CardCodeResponse;

                // Not present in CardPresentResponse
                
                //result.TransactionType = cpResponse.TransactionType;
                //result.Description = cpResponse.Description;
                //result.ReasonCode = ExtractReasonCode(cpResponse.GetValueByIndex(2));
            }

            return result;
        }

        private int ExtractReasonCode(string stringVal)
        {
            int reasonCode;
            int.TryParse(stringVal, out reasonCode);
            return reasonCode;
        }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 29 Jul 2013 23:30:36 GMT</pubDate>
    <dc:creator>wcjensen</dc:creator>
    <dc:date>2013-07-29T23:30:36Z</dc:date>
    <item>
      <title>Card present transactions returning $0 amount in test mode</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35093#M19495</link>
      <description>&lt;P&gt;We are using the AIM SDK with .Net and C# to submit both card present (CP) and card not present (CNP) transactions via the &lt;STRONG&gt;CardPresentGateway &lt;/STRONG&gt;class.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In test mode, the response always contains amount=$0, even if the transaction was approved.&amp;nbsp; Using the standard &lt;STRONG&gt;Gateway &lt;/STRONG&gt;class, the actual transaction amount is returned.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1.&amp;nbsp; Is this expected behavior for the CP gateway in test mode?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2.&amp;nbsp; Are there currently any plans to make the two gateway classes behave the same?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;3.&amp;nbsp; Can we expect that live transactions submitted via the CP gateway will behave correctly, returning the actual transaction amount?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for your help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Bill&lt;/P&gt;</description>
      <pubDate>Mon, 29 Jul 2013 22:47:10 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35093#M19495</guid>
      <dc:creator>wcjensen</dc:creator>
      <dc:date>2013-07-29T22:47:10Z</dc:date>
    </item>
    <item>
      <title>Re: Card present transactions returning $0 amount in test mode</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35095#M19497</link>
      <description>&lt;P&gt;can you post your code?&lt;/P&gt;</description>
      <pubDate>Mon, 29 Jul 2013 22:56:03 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35095#M19497</guid>
      <dc:creator>RaynorC1emen7</dc:creator>
      <dc:date>2013-07-29T22:56:03Z</dc:date>
    </item>
    <item>
      <title>Re: Card present transactions returning $0 amount in test mode</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35097#M19499</link>
      <description>&lt;P&gt;Here's the build-up and submission of the request.&amp;nbsp; In Execute(), the returned response always contains $0 in the amount field.&lt;/P&gt;&lt;PRE&gt;        public override TransactionResult ProcessCreditCardTransaction(CreditCardTransactionInfo transactionInfo)
        {
            var cardPresent = (Parameters.ContainsKey("UseCardPresentGateway") &amp;amp;&amp;amp; Parameters["UseCardPresentGateway"].ToLower().Trim() == "true");
            
            var request = CreateCCRequest(transactionInfo, cardPresent);
            AddBasicInfo(request, transactionInfo);
            AddCreditCardInfo(request, transactionInfo);
            AddPayingMemberInfo(request, transactionInfo);
            AddMemberInfo(request, transactionInfo);

            var response = Execute(request, cardPresent);

            var result = CaptureResults(request, response);

            return result;
        }

        #region Implementation methods using Authorize.net SDK

        private GatewayRequest CreateCCRequest(CreditCardTransactionInfo transactionInfo, bool cardPresent)
        {
            if (cardPresent)
            {
                if (!string.IsNullOrEmpty(transactionInfo.Track1) || !string.IsNullOrEmpty(transactionInfo.Track2))
                {
                    return new CardPresentAuthorizationRequest(transactionInfo.Amount, transactionInfo.Track1, transactionInfo.Track2);
                }
                else
                {
                    var expirationMonth = transactionInfo.ExpirationDate.Substring(0, 2);
                    var expirationYear = transactionInfo.ExpirationDate.Substring(2, 2);
                    return new CardPresentAuthorizationRequest(transactionInfo.Amount, transactionInfo.CardNumber, expirationMonth, expirationYear);
                }
            }
            else
            {
                return new AuthorizationRequest(transactionInfo.CardNumber, transactionInfo.ExpirationDate, transactionInfo.Amount, string.Empty);
            }
        }

        private GatewayRequest AddBasicInfo(GatewayRequest request, Mass.EFT.Lib.TransactionInfo info)
        {
            string description = FormatDescription(info.MemberNumber, info.PayingMemberFirstName, info.PayingMemberLastName);
            request.Description = description;
            request.AddInvoice(info.InvoiceNumber);
            return request;
        }

        private string FormatDescription(string memberNumber, string payingMemberFirstName, string payingMemberLastName)
        {
            return string.Format("{0} {1} {2} - Tap {3}",
                memberNumber,
                payingMemberFirstName,
                payingMemberLastName,
                DateTime.Now.ToString("yyyy-MM-dd"));
        }

        private GatewayRequest AddCreditCardInfo(GatewayRequest request, CreditCardTransactionInfo info)
        {
            request.CardCode = info.CardCode;
            request.TransId = info.TransactionId;
            request.Type = CreditTransactionTypeConverter.ConvertToXType(info.TransactionType);
            request.AuthCode = info.AuthorizationCode;
            return request;
        }

        private GatewayRequest AddPayingMemberInfo(GatewayRequest request, Mass.EFT.Lib.TransactionInfo transactionInfo)
        {
            string billingAddress = null;
            string billingState = null;
            string billingZip = null;

            if (transactionInfo is CreditCardTransactionInfo)
            {
                CreditCardTransactionInfo info = (CreditCardTransactionInfo)transactionInfo;

                billingAddress = info.PayingMemberBillingAddress + " " + info.PayingMemberBillingCity;
                billingState = info.PayingMemberBillingState;
                billingZip = info.PayingMemberBillingZip;
            }

            request.AddCustomer(transactionInfo.PayingMemberNumber,
                                transactionInfo.PayingMemberFirstName,
                                transactionInfo.PayingMemberLastName,
                                billingAddress,
                                billingState,
                                billingZip);
            return request;
        }

        private GatewayRequest AddMemberInfo(GatewayRequest request, Mass.EFT.Lib.TransactionInfo transactionInfo)
        {
            request.AddShipping(transactionInfo.MemberNumber, transactionInfo.MemberFirstName, transactionInfo.MemberLastName, null, null, null);
            return request;
        }

        private IGatewayResponse Execute(GatewayRequest request, bool cardPresent)
        {
            request.TestRequest = (TestMode == true) ? "TRUE" : "FALSE";
            var gate = (cardPresent) ? new CardPresentGateway(AuthToken, AccessToken, TestMode) : new Gateway(AuthToken, AccessToken, TestMode);

            var response = gate.Send(request);
            return response;
        }

&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 29 Jul 2013 23:06:00 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35097#M19499</guid>
      <dc:creator>wcjensen</dc:creator>
      <dc:date>2013-07-29T23:06:00Z</dc:date>
    </item>
    <item>
      <title>Re: Card present transactions returning $0 amount in test mode</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35098#M19500</link>
      <description>&lt;P&gt;Which field are you getting the amount in CaptureResults()?&lt;/P&gt;</description>
      <pubDate>Mon, 29 Jul 2013 23:23:42 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35098#M19500</guid>
      <dc:creator>RaynorC1emen7</dc:creator>
      <dc:date>2013-07-29T23:23:42Z</dc:date>
    </item>
    <item>
      <title>Re: Card present transactions returning $0 amount in test mode</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35099#M19501</link>
      <description>&lt;P&gt;response.Amount.&amp;nbsp; I view it in the debugger on return from gate.Send().&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's the CaptureResults() code:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;PRE&gt;        private TransactionResult CaptureResults(GatewayRequest request, IGatewayResponse response)
        {
            var result = new TransactionResult
            {
                Amount                  = Convert.ToDecimal(response.Amount),
                AuthorizationCode       = response.AuthorizationCode,
                ResponseCode            = Convert.ToInt32(response.ResponseCode),
                Status                  = ResponseCodeConverter.ToTransactionStatus(response.ResponseCode),
                TransactionId           = response.TransactionID,
                Reason                  = response.Message,         // Message supplies Response Reason Text

                PaymentMethod           = (request is EcheckRequest) ? PaymentMethods.ECheck : PaymentMethods.CreditCard,
            };

            var baseResponse = response as GatewayResponse;     // Cast to concrete type
            if (baseResponse != null)
            {
                // Pick up stuff not accessible through interface
                result.TransactionType          = baseResponse.TransactionType;
                result.Description              = baseResponse.Description;
                result.AvsResponse              = baseResponse.AVSResponse;
                result.CardCodeResponse         = baseResponse.CCVResponse;
                result.ReasonCode               = ExtractReasonCode(baseResponse.GetValueByIndex(2));
            };

            var cpResponse = response as CardPresentResponse;
            if (cpResponse != null)
            {
                result.AvsResponse = cpResponse.AVSResponse;
                result.CardCodeResponse = cpResponse.CardCodeResponse;

                // Not present in CardPresentResponse
                
                //result.TransactionType = cpResponse.TransactionType;
                //result.Description = cpResponse.Description;
                //result.ReasonCode = ExtractReasonCode(cpResponse.GetValueByIndex(2));
            }

            return result;
        }

        private int ExtractReasonCode(string stringVal)
        {
            int reasonCode;
            int.TryParse(stringVal, out reasonCode);
            return reasonCode;
        }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 29 Jul 2013 23:30:36 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35099#M19501</guid>
      <dc:creator>wcjensen</dc:creator>
      <dc:date>2013-07-29T23:30:36Z</dc:date>
    </item>
    <item>
      <title>Re: Card present transactions returning $0 amount in test mode</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35100#M19502</link>
      <description>&lt;P&gt;That the approved amount. I think it only use for split tender(Partial Authorization Transactions).&lt;/P&gt;</description>
      <pubDate>Mon, 29 Jul 2013 23:37:43 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35100#M19502</guid>
      <dc:creator>RaynorC1emen7</dc:creator>
      <dc:date>2013-07-29T23:37:43Z</dc:date>
    </item>
    <item>
      <title>Re: Card present transactions returning $0 amount in test mode</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35101#M19503</link>
      <description>&lt;P&gt;We do not do partial authorization transactions at this time.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Apparently there was a similar problem when partial authorization transactions were first introduced as mentioned several years ago here:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://community.developer.cybersource.com/t5/News-and-Announcements/Amount-field-returning-0-in-test-transaction-responses/m-p/3846#M32" target="_blank"&gt;http://community.developer.authorize.net/t5/News-and-Announcements/Amount-field-returning-0-in-test-transaction-responses/m-p/3846#M32&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That problem seems to have been fixed in the standard NCP gateway.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So will&amp;nbsp;a live (non-test-mode) CP transaction also return 0 in the response.Amount field, or would you recommend that we simply ASSUME that the approved amount was equal to the requested amount if the transaction was approved?&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jul 2013 00:11:06 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35101#M19503</guid>
      <dc:creator>wcjensen</dc:creator>
      <dc:date>2013-07-30T00:11:06Z</dc:date>
    </item>
    <item>
      <title>Re: Card present transactions returning $0 amount in test mode</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35102#M19504</link>
      <description>&lt;P&gt;If you are not using partial auth. then yes "we simply ASSUME that the approved amount was equal to the requested amount if the transaction was approved?"&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jul 2013 00:36:24 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Card-present-transactions-returning-0-amount-in-test-mode/m-p/35102#M19504</guid>
      <dc:creator>RaynorC1emen7</dc:creator>
      <dc:date>2013-07-30T00:36:24Z</dc:date>
    </item>
  </channel>
</rss>

