<?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: Invalid OTS Token in Integration and Testing</title>
    <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/61537#M35969</link>
    <description>&lt;P&gt;Yes the option you mentioned is a good way of creating profile from Accept TOken , and then using the profile to create a subscription .&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 07 Feb 2018 07:43:51 GMT</pubDate>
    <dc:creator>Anurag</dc:creator>
    <dc:date>2018-02-07T07:43:51Z</dc:date>
    <item>
      <title>Invalid OTS Token</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/61522#M35956</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm currently integrating Accept.js into my site to become PCI compliant. Here was my old server-side work flow:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Create new monthly subscription:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Authorize credit card for first month payment&amp;nbsp;&lt;SPAN&gt;(send credit card info: number, exp date,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;etc.&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;If authorization succeeds&lt;OL&gt;&lt;LI&gt;Create subscription (send credit card info: number, exp date, etc.) and start billing from the second month since the first month payment is handled now&lt;/LI&gt;&lt;LI&gt;Capture previous authorization&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;If authorization fails&lt;OL&gt;&lt;LI&gt;Void authorization transaction&amp;nbsp;&lt;SPAN&gt;(send credit card info: number, exp date,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;etc.&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN&gt;Now I want to tweak this work flow so that I send the opaqueData (&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;dataDescriptor&lt;/STRONG&gt; and &lt;STRONG&gt;dataValue&lt;/STRONG&gt;) in place of the card info.&amp;nbsp;So the new work flow is now:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Create new monthly&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;subscription:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Authorize credit card for first month payment&amp;nbsp;&lt;SPAN&gt;(send opaqueData&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;If authorization succeeds&lt;OL&gt;&lt;LI&gt;Create subscription&amp;nbsp;&lt;SPAN&gt;(send&amp;nbsp;opaqueData&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; and start billing from the second month since the first month payment is handled now&lt;/LI&gt;&lt;LI&gt;Capture previous authorization&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;If authorization fails&lt;OL&gt;&lt;LI&gt;Void authorization transaction&lt;SPAN&gt;(send&amp;nbsp;opaqueData&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN&gt;Step 1 succeeds but step 2.1 fails with the response "Invalid OTS Token". I understand that this is because the &lt;STRONG&gt;dataValue&lt;/STRONG&gt; token has already been processed in step 1 (the authorization).&amp;nbsp;&lt;/SPAN&gt;So my question is, how do I handle not sending the same &lt;STRONG&gt;dataValue&lt;/STRONG&gt;&amp;nbsp;in step 2.1 without sending card info since my server no longer receives that? Also, are neither the card info nor the opaqueData required for steps 2.2 and 3.1?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;An&amp;nbsp;option I'm considering:&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Create a customer profile by setting the (&lt;STRONG&gt;&lt;SPAN&gt;createProfile&lt;/SPAN&gt;&lt;/STRONG&gt; parameter to true) in the authorization request (if&amp;nbsp;it doesn't already default to true). Then pass the customer profile info instead of the opaqueData in the Create Subscription request.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Please let me know if this is&amp;nbsp;the recommended solution or if there is a better solution. Thanks.&lt;/P&gt;</description>
      <pubDate>Tue, 06 Feb 2018 18:16:07 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/61522#M35956</guid>
      <dc:creator>blackwood821</dc:creator>
      <dc:date>2018-02-06T18:16:07Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid OTS Token</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/61537#M35969</link>
      <description>&lt;P&gt;Yes the option you mentioned is a good way of creating profile from Accept TOken , and then using the profile to create a subscription .&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 07 Feb 2018 07:43:51 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/61537#M35969</guid>
      <dc:creator>Anurag</dc:creator>
      <dc:date>2018-02-07T07:43:51Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid OTS Token</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/62937#M37158</link>
      <description>&lt;P&gt;I am trying to implement accept.js&amp;nbsp;with&amp;nbsp;similar requirements.&lt;/P&gt;&lt;P&gt;We process simple payments, sometimes create a subscription after the payment if they ordered a recurring membership, and usually give the customer the option to save their card info. (even for normal payment transactions without subscription).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So we implement all this with up to three API transactions one after the next:&lt;/P&gt;&lt;P&gt;- charge the card&lt;/P&gt;&lt;P&gt;- save customer/payment profile&lt;/P&gt;&lt;P&gt;- create subscription&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This was all working fine when submitting the card info to our server and sending it along for each transaction.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But now it seems that the OTS token can only be used for one transaction.&amp;nbsp; So I took the advice here and tried to use the CreateProfile = true option on the initial charge a card transaction.&amp;nbsp; I get an error telling that create profile is not supported for "this payment method"&amp;nbsp; (I supposed when using accept.js token).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The payment goes through but profile response error comes back like so:&lt;/P&gt;&lt;P&gt;&amp;lt;profileResponse&amp;gt;&lt;BR /&gt;&amp;lt;messages&amp;gt;&lt;BR /&gt;&amp;lt;resultCode&amp;gt;&lt;BR /&gt;Error&lt;BR /&gt;&amp;lt;/resultCode&amp;gt;&lt;BR /&gt;&amp;lt;message&amp;gt;&lt;BR /&gt;&amp;lt;code&amp;gt;&lt;BR /&gt;E00103&lt;BR /&gt;&amp;lt;/code&amp;gt;&lt;BR /&gt;&amp;lt;text&amp;gt;&lt;BR /&gt;Customer profile creation failed. This payment method does not support profile creation.&lt;BR /&gt;&amp;lt;/text&amp;gt;&lt;BR /&gt;&amp;lt;/message&amp;gt;&lt;BR /&gt;&amp;lt;/messages&amp;gt;&lt;BR /&gt;&amp;lt;/profileResponse&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I also get invalid OTS token if I try to create the subscription after the payment transaction.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am coming to the conclusion that it's not really possible to use accept.js with these requirements.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What do you think?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;KR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 May 2018 00:41:04 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/62937#M37158</guid>
      <dc:creator>worldmodern</dc:creator>
      <dc:date>2018-05-03T00:41:04Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid OTS Token</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/62939#M37159</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.developer.cybersource.com/t5/user/viewprofilepage/user-id/18691"&gt;@worldmodern&lt;/a&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can use the one time Accept&amp;nbsp;&amp;nbsp;token to first create the payment&amp;nbsp;&amp;nbsp;profile via API&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://developer.authorize.net/api/reference/index.html#customer-profiles-create-customer-profile" target="_blank"&gt;https://developer.authorize.net/api/reference/index.html#customer-profiles-create-customer-profile&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;or&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://developer.authorize.net/api/reference/index.html#customer-profiles-create-customer-payment-profile" target="_blank"&gt;https://developer.authorize.net/api/reference/index.html#customer-profiles-create-customer-payment-profile&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE class="table table-condensed"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="threeBullet"&gt;opaqueData&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;Required.&lt;/STRONG&gt;&lt;BR /&gt;Contains&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;dataDescriptor&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;dataValue&lt;/CODE&gt;.&lt;BR /&gt;&lt;BR /&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="fourBullet"&gt;dataDescriptor&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;Required.&lt;/STRONG&gt;&lt;BR /&gt;Specifies how the request should be processed.&lt;BR /&gt;&lt;BR /&gt;The value of&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;dataDescriptor&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is based on the source of the value of&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;dataValue&lt;/CODE&gt;.&lt;/TD&gt;
&lt;TD&gt;
&lt;DIV&gt;String, 128 characters.&lt;BR /&gt;&lt;BR /&gt;Use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;COMMON.ACCEPT.INAPP.PAYMENT&lt;/CODE&gt;for Accept transactions.&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="fourBullet"&gt;dataValue&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;Required.&lt;/STRONG&gt;&lt;BR /&gt;Base64 encoded data that contains encrypted payment data.&lt;BR /&gt;&lt;BR /&gt;The payment gateway expects the encrypted payment data and meta data for the encryption keys.&lt;/TD&gt;
&lt;TD&gt;
&lt;DIV&gt;String, 8192 characters.&lt;/DIV&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;and pass the paymentProfile in the createTransaction or to create subscription from it .&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://developer.authorize.net/api/reference/index.html#payment-transactions-charge-a-customer-profile" target="_blank"&gt;https://developer.authorize.net/api/reference/index.html#payment-transactions-charge-a-customer-profile&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;or&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://developer.authorize.net/api/reference/index.html#recurring-billing-create-a-subscription-from-customer-profile" target="_blank"&gt;https://developer.authorize.net/api/reference/index.html#recurring-billing-create-a-subscription-from-customer-profile&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 May 2018 06:04:23 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/62939#M37159</guid>
      <dc:creator>Anurag</dc:creator>
      <dc:date>2018-05-03T06:04:23Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid OTS Token</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/62949#M37164</link>
      <description>&lt;P&gt;Thanks for quick response.&amp;nbsp; Funny after thinking it over overnight, I realized that's what I should try next - create the profile first and then run the payment and then create subscription if necessary.&amp;nbsp; So never uyse the token more than once.&amp;nbsp; If it's a refular payment with no subscription and customer did not request to save info, then I will run the payment normally directly from the token.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But one thing I'm wondering - what about AVS check?&amp;nbsp; I suppose create profile does not check AVS right?&amp;nbsp; So what if a bad address is entered (pretty frequent case).&amp;nbsp; Will the payment request kick it out as an error?&amp;nbsp; Then I suppose I would want to delete the payment profile since it's not really valid.&amp;nbsp; Up till now, I only was creating the profile AFTER the payment was successful.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Finally what about CVV ?&amp;nbsp; Does create token validate the CVV?&amp;nbsp; I noticed on my sandbox transactions that the payment txn shows CVV not processed even though I submitted CVV to get the token.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will restructure my code this morning and give this all a try.&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;KR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 May 2018 13:25:58 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/62949#M37164</guid>
      <dc:creator>worldmodern</dc:creator>
      <dc:date>2018-05-03T13:25:58Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid OTS Token - Workaround using Payment Profiles.  CVV problem.</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/62959#M37173</link>
      <description>&lt;P&gt;Hi -&amp;nbsp;&lt;/P&gt;&lt;P&gt;So I got this basically working.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When taking a transaction with accept token, it now does the following:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- if customer requested to save card info OR if order includes a subscription, create customer profile and payment profile&lt;/P&gt;&lt;P&gt;- then charge the card using the payment profile&lt;/P&gt;&lt;P&gt;- if charge fails, remove the payment profile and return&lt;/P&gt;&lt;P&gt;- if success, continue to create subscription from payment profile&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;One problem I am having is that when I created the token, I just tried using an invalid CVV.&amp;nbsp; I used 4 digits not 3 for a Visa card.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The tokenizer did not raise any error and the transaction went through with CVV Not Processed = Not Processed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This ties back to my earlier question:&amp;nbsp; how do we enforce CVV to be correct using Accept.js?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;KR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 04 May 2018 03:08:28 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/62959#M37173</guid>
      <dc:creator>worldmodern</dc:creator>
      <dc:date>2018-05-04T03:08:28Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid OTS Token</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/64868#M38659</link>
      <description>&lt;P&gt;&lt;A href="https://mobdro.io/" target="_blank"&gt;&lt;FONT color="#000000"&gt;Mobdro&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://community.developer.cybersource.com/t5/user/viewprofilepage/user-id/23043"&gt;@blackwood821&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm currently integrating Accept.js into my site to become PCI compliant. Here was my old server-side work flow:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Create new monthly subscription:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Authorize credit card for first month payment&amp;nbsp;&lt;SPAN&gt;(send credit card info: number, exp date,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;etc.&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;If authorization succeeds&lt;OL&gt;&lt;LI&gt;Create subscription (send credit card info: number, exp date, etc.) and start billing from the second month since the first month payment is handled now&lt;/LI&gt;&lt;LI&gt;Capture previous authorization&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;If authorization fails&lt;OL&gt;&lt;LI&gt;Void authorization transaction&amp;nbsp;&lt;SPAN&gt;(send credit card info: number, exp date,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;etc.&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN&gt;Now I want to tweak this work flow so that I send the opaqueData (&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;dataDescriptor&lt;/STRONG&gt; and &lt;STRONG&gt;dataValue&lt;/STRONG&gt;) in place of the card info.&amp;nbsp;So the new work flow is now:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Create new monthly&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;subscription:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Authorize credit card for first month payment&amp;nbsp;&lt;SPAN&gt;(send opaqueData&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;If authorization succeeds&lt;OL&gt;&lt;LI&gt;Create subscription&amp;nbsp;&lt;SPAN&gt;(send&amp;nbsp;opaqueData&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; and start billing from the second month since the first month payment is handled now&lt;/LI&gt;&lt;LI&gt;Capture previous authorization&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;If authorization fails&lt;OL&gt;&lt;LI&gt;Void authorization transaction&lt;SPAN&gt;(send&amp;nbsp;opaqueData&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN&gt;Step 1 succeeds but step 2.1 fails with the response "Invalid OTS Token". I understand that this is because the &lt;STRONG&gt;dataValue&lt;/STRONG&gt; token has already been processed in step 1 (the authorization).&amp;nbsp;&lt;/SPAN&gt;So my question is, how do I handle not sending the same &lt;STRONG&gt;dataValue&lt;/STRONG&gt;&amp;nbsp;in step 2.1 without sending card info since my server no longer receives that? Also, are neither the card info nor the opaqueData required for steps 2.2 and 3.1?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;An&amp;nbsp;option I'm considering:&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Create a customer profile by setting the (&lt;STRONG&gt;&lt;SPAN&gt;createProfile&lt;/SPAN&gt;&lt;/STRONG&gt; parameter to true) in the authorization request (if&amp;nbsp;it doesn't already default to true). Then pass the customer profile info instead of the opaqueData in the Create Subscription request.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Please let me know if this is&amp;nbsp;the recommended solution or if there is a better solution. Thanks.&lt;/P&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;SPAN&gt;This error means Authorize.Net rejected the one-time-use payment&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;token&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;we sent them for the transaction. After they get that error message, they immediately try hitting 'Place Order' again, without changing any of their billing or payment info.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 25 Oct 2018 06:44:30 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/64868#M38659</guid>
      <dc:creator>Campos369</dc:creator>
      <dc:date>2018-10-25T06:44:30Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid OTS Token</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/64921#M38694</link>
      <description>&lt;P&gt;&lt;a href="https://community.developer.cybersource.com/t5/user/viewprofilepage/user-id/18691"&gt;@worldmodern&lt;/a&gt;&amp;nbsp;I ended up doing&amp;nbsp;something similar. I require the user to create a payment profile before&amp;nbsp;processing any charges. It made it much simpler.&lt;/P&gt;</description>
      <pubDate>Wed, 31 Oct 2018 14:12:54 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/64921#M38694</guid>
      <dc:creator>blackwood821</dc:creator>
      <dc:date>2018-10-31T14:12:54Z</dc:date>
    </item>
    <item>
      <title>Re: Invalid OTS Token</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/65161#M38865</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://community.developer.cybersource.com/t5/user/viewprofilepage/user-id/24987"&gt;@Campos369&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;&lt;P&gt;&lt;A href="https://www.inthow.com/mobdro-for-pc/" target="_blank"&gt;&lt;FONT color="#000000"&gt;Mobdro&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://community.developer.cybersource.com/t5/user/viewprofilepage/user-id/23043"&gt;@blackwood821&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm currently integrating Accept.js into my site to become PCI compliant. Here was my old server-side work flow:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Create new monthly subscription:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Authorize credit card for first month payment&amp;nbsp;&lt;SPAN&gt;(send credit card info: number, exp date,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;etc.&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;If authorization succeeds&lt;OL&gt;&lt;LI&gt;Create subscription (send credit card info: number, exp date, etc.) and start billing from the second month since the first month payment is handled now&lt;/LI&gt;&lt;LI&gt;Capture previous authorization&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;If authorization fails&lt;OL&gt;&lt;LI&gt;Void authorization transaction&amp;nbsp;&lt;SPAN&gt;(send credit card info: number, exp date,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;etc.&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN&gt;Now I want to tweak this work flow so that I send the opaqueData (&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;dataDescriptor&lt;/STRONG&gt; and &lt;STRONG&gt;dataValue&lt;/STRONG&gt;) in place of the card info.&amp;nbsp;So the new work flow is now:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Create new monthly&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;subscription:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Authorize credit card for first month payment&amp;nbsp;&lt;SPAN&gt;(send opaqueData&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;If authorization succeeds&lt;OL&gt;&lt;LI&gt;Create subscription&amp;nbsp;&lt;SPAN&gt;(send&amp;nbsp;opaqueData&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; and start billing from the second month since the first month payment is handled now&lt;/LI&gt;&lt;LI&gt;Capture previous authorization&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;If authorization fails&lt;OL&gt;&lt;LI&gt;Void authorization transaction&lt;SPAN&gt;(send&amp;nbsp;opaqueData&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN&gt;Step 1 succeeds but step 2.1 fails with the response "Invalid OTS Token". I understand that this is because the &lt;STRONG&gt;dataValue&lt;/STRONG&gt; token has already been processed in step 1 (the authorization).&amp;nbsp;&lt;/SPAN&gt;So my question is, how do I handle not sending the same &lt;STRONG&gt;dataValue&lt;/STRONG&gt;&amp;nbsp;in step 2.1 without sending card info since my server no longer receives that? Also, are neither the card info nor the opaqueData required for steps 2.2 and 3.1?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;An&amp;nbsp;option I'm considering:&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Create a customer profile by setting the (&lt;STRONG&gt;&lt;SPAN&gt;createProfile&lt;/SPAN&gt;&lt;/STRONG&gt; parameter to true) in the authorization request (if&amp;nbsp;it doesn't already default to true). Then pass the customer profile info instead of the opaqueData in the Create Subscription request.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Please let me know if this is&amp;nbsp;the recommended solution or if there is a better solution. Thanks.&lt;/P&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;SPAN&gt;This error means Authorize.Net rejected the one-time-use payment&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;token&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;we sent them for the transaction. After they get that error message, they immediately try hitting 'Place Order' again, without changing any of their billing or payment info.&lt;/SPAN&gt;&lt;/P&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Thanks.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Nov 2018 13:40:30 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/Invalid-OTS-Token/m-p/65161#M38865</guid>
      <dc:creator>jamespslab</dc:creator>
      <dc:date>2018-11-27T13:40:30Z</dc:date>
    </item>
  </channel>
</rss>

