From 6844bcd98eac2e26531d3afdd7e3d45922820650 Mon Sep 17 00:00:00 2001 From: gnongsie Date: Thu, 24 Apr 2025 17:59:18 +0530 Subject: [PATCH] Added sample code for Batch Upload --- .../upload-transaction-batch.rb | 32 ++++++++ data/ConfigurationForBatchUpload.rb | 72 ++++++++++++++++++ resource/qaebc2.p12 | Bin 0 -> 4929 bytes resource/qaebc2.rgdltnd0.csv | 5 ++ 4 files changed, 109 insertions(+) create mode 100644 Samples/TransactionBatches/upload-transaction-batch.rb create mode 100644 data/ConfigurationForBatchUpload.rb create mode 100644 resource/qaebc2.p12 create mode 100644 resource/qaebc2.rgdltnd0.csv diff --git a/Samples/TransactionBatches/upload-transaction-batch.rb b/Samples/TransactionBatches/upload-transaction-batch.rb new file mode 100644 index 0000000..807251d --- /dev/null +++ b/Samples/TransactionBatches/upload-transaction-batch.rb @@ -0,0 +1,32 @@ +require 'cybersource_rest_client' +require_relative '../../data/ConfigurationForBatchUpload.rb' + +public +class Upload_transaction_batch + def run() + opts = {} + file_to_upload = 'resource/qaebc2.rgdltnd0.csv' + + config = ConfigurationForBatchUpload.new.merchantConfigProp() + api_client = CyberSource::ApiClient.new + api_instance = CyberSource::TransactionBatchesApi.new(api_client, config) + + data, status_code, headers = api_instance.upload_transaction_batch(file_to_upload) + + puts data, status_code, headers + write_log_audit(status_code) + return data + rescue StandardError => err + write_log_audit(err.code) + puts err.message + end + + def write_log_audit(status) + filename = ($0.split("/")).last.split(".")[0] + puts "[Sample Code Testing] [#{filename}] #{status}" + end + + if __FILE__ == $0 + Upload_transaction_batch.new.run() + end +end diff --git a/data/ConfigurationForBatchUpload.rb b/data/ConfigurationForBatchUpload.rb new file mode 100644 index 0000000..d16ce05 --- /dev/null +++ b/data/ConfigurationForBatchUpload.rb @@ -0,0 +1,72 @@ +require 'cybersource_rest_client' + +public +class ConfigurationForBatchUpload + def merchantConfigProp() + # Common Paramaters + merchantId='qaebc2' + runEnvironment='apitest.cybersource.com' + timeout=1000 #In Milliseconds + authenticationType='jwt' + jsonFilePath='resource/request.json' + enableLog=true + loggingLevel='DEBUG' + logDirectory='log' + logFilename='cybs' + maxLogSize=10485760 + maxLogFiles=5 + enableMasking=true + # proxyAddress='userproxy.com' + # proxyPort=443 + # HTTP Parameters + merchantKeyId='08c94330-f618-42a3-b09d-e1e43be5efda' + merchantSecretKey='yBJxy6LjM2TmcPGu+GaJrHtkke25fPpUX+UY6/L/1tE=' + # JWT Parameters + keysDirectory='resource' + keyAlias='qaebc2' + keyPass='?Test1234' + keyFilename='qaebc2' + + # MetaKey Params + useMetaKey = false + portfolioID = '' + + # Add the property if required to override the cybs default developerId in all request body + defaultDeveloperId = "" + + configurationDictionary={} + configurationDictionary['merchantID'] = merchantId + configurationDictionary['runEnvironment'] = runEnvironment + configurationDictionary['timeout'] = timeout + configurationDictionary['authenticationType'] = authenticationType + configurationDictionary['jsonFilePath'] = jsonFilePath + # configurationDictionary['proxyPort'] = proxyPort + # configurationDictionary['proxyAddress'] = proxyAddress + configurationDictionary['merchantsecretKey'] = merchantSecretKey + configurationDictionary['merchantKeyId'] = merchantKeyId + configurationDictionary['keysDirectory'] = keysDirectory + configurationDictionary['keyAlias'] = keyAlias + configurationDictionary['keyPass'] = keyPass + configurationDictionary['useMetaKey'] = useMetaKey + configurationDictionary['portfolioID'] = portfolioID + configurationDictionary['keyFilename'] = keyFilename + configurationDictionary['defaultDeveloperId'] = defaultDeveloperId + + log_config = {} + log_config['enableLog'] = enableLog + log_config['loggingLevel'] = loggingLevel + log_config['logDirectory'] = logDirectory + log_config['logFilename'] = logFilename + log_config['maxLogSize'] = maxLogSize + log_config['maxLogFiles'] = maxLogFiles + log_config['enableMasking'] = enableMasking + + configurationDictionary['logConfiguration'] = log_config + + # PEM Key file path for decoding JWE Response Enter the folder path where the .pem file is located. + # It is optional property, require adding only during JWE decryption. + configurationDictionary['pemFileDirectory'] = 'resource/NetworkTokenCert.pem' + + return configurationDictionary + end +end \ No newline at end of file diff --git a/resource/qaebc2.p12 b/resource/qaebc2.p12 new file mode 100644 index 0000000000000000000000000000000000000000..a66a4e26c3f3fb490651b6cdaeda737a405de531 GIT binary patch literal 4929 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 literal 0 HcmV?d00001 diff --git a/resource/qaebc2.rgdltnd0.csv b/resource/qaebc2.rgdltnd0.csv new file mode 100644 index 0000000..0b8df03 --- /dev/null +++ b/resource/qaebc2.rgdltnd0.csv @@ -0,0 +1,5 @@ +merchantID=qaebc2,batchID=rgdltnd0,recordCount=2,statusEmail=ynachire@visa.com,targetAPIVersion=1.86,creationDate=2025-03-05,reference= +merchantID,merchantReferenceCode,merchantDefinedData_field1,ccAuthService_run,billTo_firstName,billTo_lastName,billTo_email,billTo_street1,billTo_city,billTo_state,billTo_country,billTo_postalCode,card_accountNumber,card_expirationMonth,card_expirationYear,card_cardType,purchaseTotals_currency,purchaseTotals_grandTotalAmount,item_#_productCode +qaebc2,1,4837,true,Jay,Smith,ynachire@visa.com,8 Mission Street,San Francisco,CA,US,94101,4111111111111111,12,2036,001,GBP,8.00,1 +qaebc2,2,7209,true,Jay,Smith,ynachire@visa.com,8 Mission Street,San Francisco,CA,US,94101,4111111111111111,12,2036,001,GBP,8.00,1 +END,SUM=16.00 \ No newline at end of file