Quantcast
Channel: Adobe Community : Unanswered Discussions - ColdFusion
Viewing all articles
Browse latest Browse all 5794

Cybersource Secure Acceptance and the elimination of the HOP (hosted order page)

$
0
0

Hi All,

I have used Cybersource's Hosted Order Page for the past 8 years, but they are eliminating that option and are offering Secure-Acceptance in it's place. The only trouble is, Cybersource offers no ColdFusion support or API.  I have pulled apart their PHP example and thought I'd share what I have working so far. You should follow the steps in http://www.cybersource.com/resources/collateral/pdf/Secure_Acceptance_WM_Quick_Start_Guide .pdf  to get the AccessKey, ProfileID, and SecretKey you'll need for this example. Here are the two pages I created "payment_form.cfm" and "payment_confirmation.cfm". You can get the payment.css, payment_form.js and jquery.js from the PHP download link in the PDF I mentioned. 

I'll post more, as I get father along...

 

Have a good one,

- Shawn

 

=================================================

payment_form.cfm

=================================================

<html>

<head>

    <title>Secure Acceptance - Payment Form Example</title>

    <link rel="stylesheet" type="text/css" href="payment.css"/>

    <script type="text/javascript" src="jquery-1.7.min.js"></script>

    <script type="text/javascript" src="payment_form.js"></script>

</head>

<body>

 

  <!--- CREATE UNIQUE ID FOR TRANSACTION --->

  <cfset uniqid = randrange(10000000, 99999999) & randrange(00000000, 99999999)>

 

  <!--- FORMAT CURRENT DATE/TIME TO GREENWICH MEAN TIME AND MATCH FORMATTING FROM PHP --->

  <cfset dtNow = Now() />

  <cfset dtGMT = DateAdd("s", GetTimeZoneInfo().UTCTotalOffset, dtNow) />

  <cfset strGMT = (DateFormat( dtGMT, "yyyy-mm-dd" )&"T"&TimeFormat( dtGMT, "HH:mm:ss" ) &"Z") />

 

  <cfset accessKey = "[ -----PUT YOUR ACCESS_KEY HERE----- ]">

 

  <cfset profileID = "[ -----PUT YOUR PROFILE_ID HERE----- ]">

 

<cfoutput>

  <form id="payment_form" action="payment_confirmation.cfm" method="post">

  <!--- HIDDEN FIELDS --->

  <input type="hidden" name="access_key" value="#accessKey#">

  <input type="hidden" name="profile_id" value="#profileID#">

  <input type="hidden" name="transaction_uuid" value="#uniqid#">

  <input type="hidden" name="signed_field_names" value="access_key,profile_id,transaction_uuid,signed_field_names,unsigned_field_names,sig ned_date_time,locale,transaction_type,reference_number,amount,currency">

  <input type="hidden" name="unsigned_field_names" value="">

  <input type="hidden" name="signed_date_time" value="#strGMT#">

  <input type="hidden" name="locale" value="en">

    <fieldset>

        <legend>Payment Details</legend>

        <div id="paymentDetailsSection" class="section">

            <span>transaction_type:</span><input type="text" name="transaction_type" size="25" value="authorization"><br/>

            <span>reference_number:</span><input type="text" name="reference_number" size="25"><br/>

            <span>amount:</span><input type="text" name="amount" size="25" value="100.00"><br/>

            <span>currency:</span><input type="text" name="currency" size="25" value="USD"><br/>

        </div>

    </fieldset>

    <input type="submit" id="submit" name="submit" value="Submit"/>

</form>

    </cfoutput>

</body>

</html>

 

 

 

 

 

=================================================

payment_confirmation.cfm

=================================================

 

<cfset signed_inputs_values =

"access_key="&#access_key#&",profile_id="&#profile_id#&",transaction_uuid="&#transaction_u uid#&",signed_field_names="&#signed_field_names#&",unsigned_field_names="&#unsigned_field_ names#&",signed_date_time="&#signed_date_time#&",locale="&#locale#&",transaction_type="&#t ransaction_type#&",reference_number="&#reference_number#&",amount="&#amount#&",currency="& #currency#>

 

<cfset key = "[ -----PUT YOUR  SECRET_KEY  HERE----- ]">

 

<cfoutput>

  <!---  CREATE HMAC SHA256  --->

  <cfscript>

       secret = createObject('java', 'javax.crypto.spec.SecretKeySpec' ).Init(key.GetBytes(), 'HmacSHA256');

       mac = createObject('java', "javax.crypto.Mac");

       mac = mac.getInstance("HmacSHA256");

       mac.init(secret);

       digest = mac.doFinal(signed_inputs_values.GetBytes());

  </cfscript>

 

  <!--- ENCODE AS iso-8859-1 --->

  <cfset theSigHMAC = CharsetEncode(digest, 'iso-8859-1')>

 

  <!--- CREATE Base64 signature --->

  <cfset signature = ToBase64(digest)>

 

    <fieldset>

        <legend>Confirm Payment</legend>

        Amount: #amount#

        <br><br>

        Date: #signed_date_time#

  </fieldset>

 

  <form id="payment_form" action="https://testsecureacceptance.cybersource.com/pay" method="post">

       <input type="hidden" name="access_key" value="#access_key#">

       <input type="hidden" name="amount" value="#amount#">

       <input type="hidden" name="currency" value="#currency#">

       <input type="hidden" name="locale" value="#locale#">

       <input type="hidden" name="profile_id" value="#profile_id#">

       <input type="hidden" name="reference_number" value="#reference_number#">

       <input type="hidden" name="signed_date_time" value="#signed_date_time#">

       <input type="hidden" name="transaction_type" value="#transaction_type#">

       <input type="hidden" name="transaction_uuid" value="#transaction_uuid#">

       <input type="hidden" name="unsigned_field_names" value="#unsigned_field_names#">

       <input type="hidden" name="signed_field_names" value="#signed_field_names#">

       <input type="hidden" name="signature" value="#signature#">

  <input type="submit" id="submit" name="submit" value="confirm"/>

  </form>

 

</cfoutput>


Viewing all articles
Browse latest Browse all 5794

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>