Hi, I didn't use any of the languages provided by Cybersource (PHP, .NET ect...). I wrote my own in ColdFusion. I have the pages below working. Just put in your Profile ID, AccessKey, and SecretKey. When cutting-and-pasting from this forum, you will sometimes get hard-returns where you don't want them. In the middle of a cfset for example. So after pasting, be sure to go through the code and look for those. Let me know how you do. Thanks, - Shawn ============================================================ payment_form.cfm ============================================================ <cfoutput> <!--- CREATE UNIQUE ID FOR TRANSACTION ---> <cfset uniqid = randrange(10000000, 99999999) & randrange(00000000, 99999999)> <!--- FORMAT CURRENT DATE/TIME TO GREENWICH MEAN TIME ---> <cfset dtNow = Now() /> <cfset dtSimple = DateFormat(dtNow, "mm_dd_yyyy_mm_ss") /> <cfset dtGMT = DateAdd("s", GetTimeZoneInfo().UTCTotalOffset, dtNow) /> <cfset strGMT = (DateFormat( dtGMT, "yyyy-mm-dd" )&"T"&TimeFormat( dtGMT, "HH:mm:ss" ) &"Z") /> <!--- CREATE REFERENCE_NUMBER AND TOTAL_COST ---> <cfset reference_number = #dtSimple#> <cfset total_cost = '100.00'> <form action="payment_confirmation.cfm" method="POST"> <!--- FIELDS FOR CYBERSOURCE CONNECTION ---> <input type="text" name="access_key" value="[--- ---YOUR ACCESS KEY--- ---]"> <input type="text" name="profile_id" value="[--- ---YOUR PROFILE ID--- ---]"> <input type="text" name="transaction_uuid" value="#uniqid#"> <input type="text" name="signed_field_names" value="access_key,profile_id,transaction_uuid,signed_field_names,unsigned_field_names,signed_date_time,locale,transaction_type,reference_number,amount,currency,bill_to_forename,bill_to_surname,bill_to_email,bill_to_address_line1,bill_to_address_city,bill_to_address_postal_code,bill_to_address_state,bill_to_address_country"> <input type="text" name="unsigned_field_names" value=""> <input type="text" name="signed_date_time" value="#strGMT#"> <input type="text" name="locale" value="en"> <input type="text" name="transaction_type" size="25" value="authorization"> <input type="text" name="reference_number" size="25" value="#reference_number#"> <input type="text" name="amount" size="25" value="#total_cost#"> <input type="text" name="currency" size="25" value="USD"> <input type="text" name="bill_to_forename" size="25" value="John"> <input type="text" name="bill_to_surname" size="25" value="JOHNSON"> <input type="text" name="bill_to_email" size="25" value="#john@johnson.com"> <input type="text" name="bill_to_address_line1" size="25" value="123 1st Ave"> <input type="text" name="bill_to_address_city" size="25" value="AnyTown"> <input type="text" name="bill_to_address_state" size="2" value="FL"> <input type="text" name="bill_to_address_postal_code" size="25" value="33351"> <input type="text" name="bill_to_address_country" size="2" value="US"> <input type="submit" id="submit" name="submit" value="Submit"/> </form> </cfoutput> ============================================================ ============================================================ payment_confirmation.cfm ============================================================ <!--- REQUIRED LIST OF SIGNED FIELDS FOR HMAC ---> <cfset signed_items = "access_key="&#access_key#&",profile_id="&#profile_id#&",transaction_uuid="&#transaction_uuid#&",signed_field_names="&#signed_field_names#&",unsigned_field_names="&#unsigned_field_names#&",signed_date_time="&#signed_date_time#&",locale="&#locale#&",transaction_type="&#transaction_type#&",reference_number="&#reference_number#&",amount="&#amount#&",currency="&#currency#&",bill_to_forename="&#bill_to_forename#&",bill_to_surname="&#bill_to_surname#&",bill_to_email="&#bill_to_email#&",bill_to_address_line1="&#bill_to_address_line1#&",bill_to_address_city="&#bill_to_address_city#&",bill_to_address_postal_code="&#bill_to_address_postal_code#&",bill_to_address_state="&#bill_to_address_state#&",bill_to_address_country="&#bill_to_address_country#> <cfoutput> <cfset key = "[--- ---YOUR SECRET KEY--- ---]"> <!--- 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_items.GetBytes()); </cfscript> <!--- ENCODE AS iso-8859-1 ---> <cfset theSigHMAC = CharsetEncode(digest, 'iso-8859-1')> <!--- CREATE Base64 signature ---> <cfset signature = ToBase64(digest)> <!--- HIDDEN FORM ELEMENTS TO SUBMIT TO CYBERSOURCE ---> <!--- LIVE TRANSACTIONS https://secureacceptance.cybersource.com/pay ---> <!--- TEST TRANSACTIONS https://testsecureacceptance.cybersource.com/pay ---> <form id="payment_form" name="payment_form" action="https://secureacceptance.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=""> <input type="hidden" name="signed_field_names" value="#signed_field_names#"> <input type="hidden" name="bill_to_forename" size="25" value="#bill_to_forename#"><br/> <input type="hidden" name="bill_to_surname" size="25" value="#bill_to_surname#"><br/> <input type="hidden" name="bill_to_email" size="25" value="#bill_to_email#"><br/> <input type="hidden" name="bill_to_address_line1" size="25" value="#bill_to_address_line1#"><br/> <input type="hidden" name="bill_to_address_city" size="25" value="#bill_to_address_city#"><br/> <input type="hidden" name="bill_to_address_postal_code" size="25" value="#bill_to_address_postal_code#"><br/> <input type="hidden" name="bill_to_address_state" value="#bill_to_address_state#"> <input type="hidden" name="bill_to_address_country" value="#bill_to_address_country#"> <input type="hidden" name="signature" value="#signature#"> </form> </cfoutput> <!--- SCRIPT TO SUBMIT THE HIDDEN FORM ---> <!--- SCRIPT WAITS 1/2 SECOND THEN SUBMITS AUTOMATICALLY ---> <script type="text/javascript"> if (document.getElementById("payment_form")) { // if it's loaded form = document.getElementById("payment_form"); setTimeout("submitForm()", 500); // set timout } function submitForm() { form.submit(); // submits form } </script> ============================================================ ============================================================ receipt.cfm ============================================================ <!--- If YOU HAVE A Transaction Response Page SETUP IN CYBERSOURCE ---> <!--- CYBERSOURCE CONTROL PANEL - Tool & Settings>Profiles>[your profile]>Customer Response>Transaction Response Page ---> <!--- THESE ARE ALL THE FIELDS RETURNED BACK TO YOU FROM CYBERSOURCE ---> <cfoutput> <br> AUTH_AMOUNT=#AUTH_AMOUNT# <br> AUTH_AVS_CODE=#AUTH_AVS_CODE# <br> AUTH_AVS_CODE_RAW=#AUTH_AVS_CODE_RAW# <br> AUTH_CODE=#AUTH_CODE# <br> AUTH_RESPONSE=#AUTH_RESPONSE# <br> AUTH_TIME=#AUTH_TIME# <br> DECISION=#DECISION# <br> FIELDNAMES=#FIELDNAMES# <br> MESSAGE=#MESSAGE# <br> REASON_CODE=#REASON_CODE# <br> REQ_ACCESS_KEY=#REQ_ACCESS_KEY# <br> REQ_AMOUNT=#REQ_AMOUNT# <br> REQ_BILL_TO_ADDRESS_CITY=#REQ_BILL_TO_ADDRESS_CITY# <br> REQ_BILL_TO_ADDRESS_COUNTRY=#REQ_BILL_TO_ADDRESS_COUNTRY# <br> REQ_BILL_TO_ADDRESS_LINE1=#REQ_BILL_TO_ADDRESS_LINE1# <br> REQ_BILL_TO_ADDRESS_POSTAL_CODE=#REQ_BILL_TO_ADDRESS_POSTAL_CODE# <br> REQ_BILL_TO_ADDRESS_STATE=#REQ_BILL_TO_ADDRESS_STATE# <br> REQ_BILL_TO_EMAIL=#REQ_BILL_TO_EMAIL# <br> REQ_BILL_TO_FORENAME=#REQ_BILL_TO_FORENAME# <br> REQ_BILL_TO_PHONE=#REQ_BILL_TO_PHONE# <br> REQ_BILL_TO_SURNAME=#REQ_BILL_TO_SURNAME# <br> REQ_CARD_EXPIRY_DATE=#REQ_CARD_EXPIRY_DATE# <br> REQ_CARD_NUMBER=#REQ_CARD_NUMBER# <br> REQ_CARD_TYPE=#REQ_CARD_TYPE# <br> REQ_CURRENCY=#REQ_CURRENCY# <br> REQ_LOCALE=#REQ_LOCALE# <br> REQ_PAYMENT_METHOD=#REQ_PAYMENT_METHOD# <br> REQ_PROFILE_ID=#REQ_PROFILE_ID# <br> REQ_REFERENCE_NUMBER=#REQ_REFERENCE_NUMBER# <br> REQ_TRANSACTION_TYPE=#REQ_TRANSACTION_TYPE# <br> REQ_TRANSACTION_UUID=#REQ_TRANSACTION_UUID# <br> SIGNATURE=#SIGNATURE# <br> SIGNED_DATE_TIME=#SIGNED_DATE_TIME# <br> SIGNED_FIELD_NAMES=#SIGNED_FIELD_NAMES# <br> TRANSACTION_ID=#TRANSACTION_ID# </cfoutput> ============================================================
... View more