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
(C#) Cybersource Process PaymentProcess a Payment. Demonstrates how to send a POST request to the Cybersource API with HTTP signature authorization. For more information, see https://developer.cybersource.com/api-reference-assets/index.html#payments_payments_process-a-payment_samplerequests-dropdown_simple-authorization-internet_liveconsole-tab-request-headers
// This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Chilkat.JsonObject json = new Chilkat.JsonObject(); bool success; // Create the following JSON: // // { // "keyId": "aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", // "hmacKey": "Bx42CFD+cp++kMdkmavDMqVCN6YwNQ0M1bRmcxsLal5=", // "algorithm": "HmacSHA256", // "headers": [ // "host", // "(request-target)", // "digest", // "v-c-merchant-id" // ] // } // Substitute your actual API key and API secret in place of "api-key" and "api-secret" json.UpdateString("keyId","api-key"); json.UpdateString("hmacKey","api-secret"); json.UpdateString("algorithm","HmacSHA256"); // Indicate the names of the headers to be included in the signature. // "(request-target)" is not actually a header name, but is a special name for HTTP signatures. // Copy the following three lines of code exactly as-is. // Do not replace "host", "date", or "(request-target)" with values. json.UpdateString("headers[0]","host"); json.UpdateString("headers[1]","(request-target)"); json.UpdateString("headers[2]","digest"); json.UpdateString("headers[3]","v-c-merchant-id"); // Build the following JSON to be sent in the request body: // { // "clientReferenceInformation": { // "code": "TC50171_3" // }, // "paymentInformation": { // "card": { // "number": "4111111111111111", // "expirationMonth": "12", // "expirationYear": "2031" // } // }, // "orderInformation": { // "amountDetails": { // "totalAmount": "102.21", // "currency": "USD" // }, // "billTo": { // "firstName": "John", // "lastName": "Doe", // "address1": "1 Market St", // "locality": "san francisco", // "administrativeArea": "CA", // "postalCode": "94105", // "country": "US", // "email": "test@cybs.com", // "phoneNumber": "4158880000" // } // } // } // Use this online tool to generate code from sample JSON: // Generate Code to Create JSON Chilkat.JsonObject jsonBody = new Chilkat.JsonObject(); jsonBody.UpdateString("clientReferenceInformation.code","TC50171_3"); jsonBody.UpdateString("paymentInformation.card.number","4111111111111111"); jsonBody.UpdateString("paymentInformation.card.expirationMonth","12"); jsonBody.UpdateString("paymentInformation.card.expirationYear","2031"); jsonBody.UpdateString("orderInformation.amountDetails.totalAmount","102.21"); jsonBody.UpdateString("orderInformation.amountDetails.currency","USD"); jsonBody.UpdateString("orderInformation.billTo.firstName","John"); jsonBody.UpdateString("orderInformation.billTo.lastName","Doe"); jsonBody.UpdateString("orderInformation.billTo.address1","1 Market St"); jsonBody.UpdateString("orderInformation.billTo.locality","san francisco"); jsonBody.UpdateString("orderInformation.billTo.administrativeArea","CA"); jsonBody.UpdateString("orderInformation.billTo.postalCode","94105"); jsonBody.UpdateString("orderInformation.billTo.country","US"); jsonBody.UpdateString("orderInformation.billTo.email","test@cybs.com"); jsonBody.UpdateString("orderInformation.billTo.phoneNumber","4158880000"); Chilkat.Http http = new Chilkat.Http(); // Temporary... http.SessionLogFilename = "c:/aaworkarea/sessionLog.txt"; // Setting the AuthSignature property causes the following header to be computed and added: // Authorization: Signature keyId="...", algorithm="hmac-sha256", headers="(request-target) host date", signature="..." http.AuthSignature = json.Emit(); http.SetRequestHeader("v-c-merchant-id","your-merchant-id"); // Calculate the digest of the body.. Chilkat.StringBuilder sbBody = new Chilkat.StringBuilder(); jsonBody.EmitCompact = false; sbBody.Append(jsonBody.Emit()); sbBody.ToLF(); http.SetRequestHeader("digest",sbBody.GetHash("sha256","base64","utf-8")); Chilkat.CkDateTime dtNow = new Chilkat.CkDateTime(); dtNow.SetFromCurrentSystemTime(); // Add a v-c-date header such as Fri, 19 May 2023 14:32:51 GMT http.SetRequestHeader("v-c-date",dtNow.GetAsRfc822(false)); // This is needed for the CyberSource HTTP Signature -- internally, the shared secret needs to be decoded from base64 and not taken literally as a string. http.UncommonOptions = "DecodeHmacKeyBytes"; Chilkat.HttpResponse resp = http.PostJson2("https://apitest.cybersource.com/pts/v2/payments","application/json",sbBody.GetAsString()); if (http.LastMethodSuccess == false) { Debug.WriteLine(http.LastErrorText); return; } Debug.WriteLine(resp.BodyStr); Debug.WriteLine("----"); // A 201 status code indicates success. Debug.WriteLine("Status code = " + Convert.ToString(http.LastStatus)); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.