Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(AutoIt) Adyen HMAC Signature Calculation for Hosted Payment PagesDemonstrates how to do the HMAC Signature Calculation for a hosted payment page (HPP) in Adyen. For a C# ASP.NET Razor Pages example showing the HTML Form with HMAC signature code, see Adyen HMAC Signature Calculation in C# For more information, see https://docs.adyen.com/classic-integration/hosted-payment-pages/hmac-signature-calculation/
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. Local $bSuccess Local $strHtml = "<table class=""od""><tr><th>Description</th><th>Quantity</th><th>Amount</th></tr><tr><td>1 Digital Camera</td><td class=""r"">1</td><td class=""r"">100 GBP</td></tr><tr><td class=""b"">Total</td><td class=""r""></td><td class=""b r"">100.00 GBP</td></tr></table>" $oGzip = ObjCreate("Chilkat.Gzip") Local $sGzOrderData = $oGzip.CompressStringENC($strHtml,"utf-8","base64") $oXml = ObjCreate("Chilkat.Xml") $oXml.Tag = "keyValuePairs" $oXml.NewChild2 "orderData",$sGzOrderData ; required, The payment deadline; the payment needs to occur within the specified time value. Local $sessionValidity = "2019-08-11T10:30:00Z" $oXml.NewChild2 "sessionValidity",$sessionValidity ; optional. Normally we'll let Adyen automatically know the country based on the IP address. ; By default, the payment methods offered to a shopper are filtered based on the country the shopper's IP address is mapped to. ; In this way, shoppers are not offered payment methods that are not available in the country they are carrying out the transaction from. ; This IP-to-country mapping is not 100% accurate, so if you have already established the country of the shopper, you can set it explicitly ; in the countryCode parameter. Local $sCountryCode = "GB" $oXml.NewChild2 "countryCode",$sCountryCode ; optional Local $shopperLocale = "en_GB" ; If not specified, the locale preference is set to en_GB by default. ; When it is not necessary to include the country-specific part, use only the language code. ; For example: it instead of it_IT to set the locale preferences to Italian. $oXml.NewChild2 "shopperLocale",$shopperLocale ; required, A reference to uniquely identify the payment. This reference is used in all communication with you about the payment status. ; We recommend using a unique value per payment; however, it is not a requirement. If you need to provide multiple references for a transaction, ; you can enter them in this field. Separate each reference value with a hyphen character ("-"). This field has a length restriction: ; you can enter max. 80 characters. Local $sMerchantReference = "paymentTest1234" $oXml.NewChild2 "merchantReference",$sMerchantReference ; required, The merchant account identifier you want to process the (transaction) request with. Local $sMerchantAccount = "ChilkatSoftwareIncCOM" $oXml.NewChild2 "merchantAccount",$sMerchantAccount ; required. 10000 for $100.00 Local $sPaymentAmount = "10000" $oXml.NewChild2 "paymentAmount",$sPaymentAmount ; required, The three-character ISO currency code Local $sCurrencyCode = "GBP" $oXml.NewChild2 "currencyCode",$sCurrencyCode ; required. Local $skinCode = "S7uWsvfB" $oXml.NewChild2 "skinCode",$skinCode ; optional, A unique identifier for the shopper, for example, a customer ID. ; We recommend providing this information, as it is used in velocity fraud checks. It is also the key in recurring payments. ; This field is mandatory in recurring payments. Local $shopperReference = "somebody@example.com" $oXml.NewChild2 "shopperReference",$shopperReference ; optional Local $shopperEmail = "somebody@example.com" $oXml.NewChild2 "shopperEmail",$shopperEmail ; optional, An integer value that adds up to the normal fraud score. ; The value can be either a positive or negative integer. $oXml.NewChild2 "offset","0" ; Apparently this is a required field. Local $shipBeforeDate = "2019-06-04" $oXml.NewChild2 "shipBeforeDate",$shipBeforeDate $oXml.SortByTag True ; Encode... ; "\" (backslash) as "\\" ; ":" (colon) as "\:" $oSbTags = ObjCreate("Chilkat.StringBuilder") $oSbValues = ObjCreate("Chilkat.StringBuilder") $oSbContent = ObjCreate("Chilkat.StringBuilder") Local $iN = $oXml.NumChildren Local $i = 0 While $i < $iN If ($i > 0) Then $oSbTags.Append(":") $oSbValues.Append(":") EndIf $oXml.GetChild2($i) $oSbTags.Append($oXml.Tag) $oSbContent.SetString($oXml.Content) Local $iNumReplaced = $oSbContent.Replace("\","\\") $iNumReplaced = $oSbContent.Replace(":","\:") $oSbValues.AppendSb($oSbContent) $oXml.GetParent2() $i = $i + 1 Wend $oSbSigningStr = ObjCreate("Chilkat.StringBuilder") $oSbSigningStr.AppendSb($oSbTags) $oSbSigningStr.Append(":") $oSbSigningStr.AppendSb($oSbValues) $oCrypt = ObjCreate("Chilkat.Crypt2") $oCrypt.HashAlgorithm = "sha256" $oCrypt.MacAlgorithm = "hmac" Local $sHmacKey = "934D1E806DDD99595EB430076FD7F8E4D12D0A3F51243A4C0C3897703118E739" $oCrypt.SetMacKeyEncoded($sHmacKey,"hex") $oCrypt.EncodingMode = "base64" Local $sMerchantSig = $oCrypt.HmacStringENC($oSbSigningStr.GetAsString()) ConsoleWrite($sMerchantSig & @CRLF) |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.