I'm working with the Authorize.net API in powershell to return some transaction data. The output is in XML and I need to get it into CSV. Here is what I'm needing it to do.
API : https://developer.authorize.net/api/reference/index.html /developerbook
Get batchId from data range ( getSettledBatchListRequest )
Get all transactionId from batchId ( getTransactionListRequest )
Get transaction details for each ( getTransactionDetailsRequest )
Take each transaction details response and create a csv file
Need some kind of error handling to insure all transactions that are called are wrote to the file
In each transaction details response i really only care about the following XML nodes: settleAmount, customer id, firstName, lastName, creditCard, bankAccount
Ideally i need two separate files, one for credit card and one for bank account but the challenge is I don't know what type it is until the transactionId is called again getTransactionDetailsRequest
Below is what I've got so far. I've having a bit of trouble with the variable inside of a single quote on the getTransactionDetailsRequest. Any help would be greatly appreciated:
EDIT: fixed the xml variables and then figured out the foreach issue. Now just need to get the foreach results to CSV
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $url = "https://api.authorize.net/xml/v1/request.api" $api_login_id = "api_login_id" $transaction_key = "transaction_key" $authorize_path = "C:\Users\Admin\Desktop\authorize" $getSettledBatchListRequest_xml = @" <getSettledBatchListRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"> <merchantAuthentication> <name>$api_login_id</name> <transactionKey>$transaction_key</transactionKey> </merchantAuthentication> <includeStatistics>true</includeStatistics> <firstSettlementDate>2018-08-01T00:00:00</firstSettlementDate> <lastSettlementDate>2018-08-01T23:59:59</lastSettlementDate> </getSettledBatchListRequest> "@ # Call for batchId on certain date range. Output XML and get batchId from XML Invoke-RestMethod -Uri $url -Method Post -Body $getSettledBatchListRequest_xml -ContentType 'application/xml' -OutFile $authorize_path\getSettledBatchListRequest.xml $getSettledBatchListRequest_results = Get-Content $authorize_path\getSettledBatchListRequest.xml $batchid = ([xml]$getSettledBatchListRequest_results).getSettledBatchListResponse.batchList.batch.batchId $getTransactionListRequest_xml = @" <getTransactionListRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"> <merchantAuthentication> <name>$api_login_id</name> <transactionKey>$transaction_key</transactionKey> </merchantAuthentication> <batchId>$batchid</batchId> <sorting> <orderBy>submitTimeUTC</orderBy> <orderDescending>true</orderDescending> </sorting> <paging> <limit>1000</limit> <offset>1</offset> </paging> </getTransactionListRequest> "@ Invoke-RestMethod -Uri $url -Method Post -Body $getTransactionListRequest_xml -ContentType 'application/xml' -OutFile $authorize_path\getTransactionListRequest.xml $getTransactionListRequest_results = Get-Content $authorize_path\getTransactionListRequest.xml $transactionids = ([xml]$getTransactionListRequest_results).getTransactionListResponse.transactions.transaction.transId $getTransactionDetailsRequest = @" <getTransactionDetailsRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"> <merchantAuthentication> <name>$api_login_id</name> <transactionKey>$transaction_key</transactionKey> </merchantAuthentication> <transId>$transactionid</transId> </getTransactionDetailsRequest> "@ $results = foreach ($transactionid in $transactionids) { Invoke-RestMethod -Uri $url -Method Post -Body $getTransactionDetailsRequest -ContentType 'application/xml' } $results
10-04-2022 03:43 AM