/**
* @author dhan
*
* java TransactionSearch
*
*/
import java.net.URL;
import java.text.DateFormat;
import org.apache.axis.message.SOAPHeaderElement;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.MessageElement;
import org.apache.axis.AxisFault;
import org.apache.axis.client.*;
import java.io.*;
import java.util.*;
import com.paypal.api.client.*; //PayPal Library, See the src directory.
import eBLBaseComponents.apis.ebay.*; // eBay Business Logic definition, from eBL_* wsdl.
import PayPalAPI.api.ebay.*; // Based on PayPalSvc.wsdl.
import CoreComponentTypes.apis.ebay.*;
public class TransactionSearch
{
public static void main(String[] args) throws Exception
{
TransactionSearch client = new TransactionSearch();
ReadArgs a = new ReadArgs("h:s u:s p:s k:s w:s v:s",args);
if (!a.ok()) usage();
Hashtable h = a.hash();
String[] argv = a.args();
if (argv.length != 0) {
System.out.println("Usage: java TransactionSearch [options]");
return;
}
SimpleConfigFile cfg = new SimpleConfigFile("client_config.nvp");
if (a.contains("h")) {cfg.set("url",(String)a.val("h"));}
if (a.contains("u")) {cfg.set("user_name",(String)a.val("u"));}
if (a.contains("p")) {cfg.set("user_passwd",(String)a.val("p"));}
if (a.contains("k")) {cfg.set("cert_file",(String)a.val("k"));}
if (a.contains("w")) {cfg.set("cert_password",(String)a.val("w"));}
if (a.contains("v")) {cfg.set("ts_version",(String)a.val("v"));}
client.runTransactionSearch(cfg);
}
public TransactionSearch() {}
public static void usage() {
System.out.println("usage: java <action> [options] <txn-id>");
System.out.println(" Options:");
System.out.println(" -f config-file Default: client_config.nvp in current directory.");
System.out.println(" Command line options override this file.");
System.out.println(" -h url");
System.out.println(" -u username");
System.out.println(" -p password");
System.out.println(" -k keystore-file (as in *.p12, aka PKCS12)");
System.out.println(" -w keystore-paswd");
//System.out.println(" -v version (as in "1.0" -- currently not supported by axia 1.1)");
System.out.println(" -v version ");
System.out.println(" -e ");
System.out.println(" actions:");
System.out.println(" RefundTransaction <transaction-id> [<memo>]");
System.out.println(" GetTxnDetails <transaction-id>");
System.out.println(" BillUserRequest <merchantpayment_id> [<memo>]");
System.out.println(" TransactionSearch ");
System.exit(1);
}
public void runTransactionSearch(SimpleConfigFile cfg) throws Exception {
// First, we load the config file, and build a request object...
String url = cfg.val("url");
System.out.println("connecting to /""+url+"/": testing TransactionSearch");
PayPalAPIInterface binding = null;
try {
binding = new PayPalAPIInterfaceServiceLocator().getPayPalAPI(new URL(url));
((PayPalAPISoapBindingStub)binding).setTimeout(60000);
}
catch(Exception e) {
org.apache.axis.AxisFault afe = null;
if (e instanceof org.apache.axis.AxisFault) {
afe = (org.apache.axis.AxisFault) e;
}
String note = afe.getFaultString();
System.out.println("Got AxisFault exception " + note.toString());
e.printStackTrace();
// throw AxisFault.makeFault(e);
return;
}
// start composing the request object
TransactionSearchRequestType request = new TransactionSearchRequestType();
String startDate = cfg.val("ts_start_date");
String endDate = cfg.val("ts_end_date");
String payerEmail = cfg.val("ts_payer_email");
String receiverEmail = cfg.val("ts_receiver_email");
String transactionClass = cfg.val("ts_transaction_Class");
String amount = cfg.val("ts_amount");
String currencyCode = cfg.val("ts_currency_code");
String status = cfg.val("ts_status");
PersonNameType payername = new PersonNameType();
String salutation = cfg.val("ts_payer_salutation");
String firstname = cfg.val("ts_payer_firstName");
String middlename = cfg.val("ts_payer_middleName");
String lastname = cfg.val("ts_payer_lastName");
String suffix = cfg.val("ts_payer_suffix");
if (salutation.length() !=0 )
payername.setSalutation(new eBLBaseComponents.apis.ebay.SalutationType(salutation));
if (firstname.length() !=0 )
payername.setFirstName(new eBLBaseComponents.apis.ebay.NameType(firstname));
if (middlename.length() !=0 )
payername.setMiddleName(new eBLBaseComponents.apis.ebay.NameType(middlename));
if (lastname.length() !=0 )
payername.setLastName(new eBLBaseComponents.apis.ebay.NameType(lastname));
if (suffix.length() !=0 )
payername.setSuffix(new eBLBaseComponents.apis.ebay.SuffixType(suffix));
/* if (payername != null)
request.setPayerName(payername);
*/
if (startDate.length() != 0) {
java.util.Calendar startdate = Calendar.getInstance();
startdate.setTime(new java.util.Date(startDate));
request.setStartDate(startdate);
}
if (endDate.length() != 0) {
java.util.Calendar enddate = Calendar.getInstance();
enddate.setTime(new java.util.Date(endDate));
request.setEndDate(enddate);
}
if (payerEmail.length() != 0)
request.setPayer(new eBLBaseComponents.apis.ebay.EmailAddressType(payerEmail));
if (receiverEmail.length() != 0)
request.setReceiver(new eBLBaseComponents.apis.ebay.EmailAddressType(receiverEmail));
String receiptID = cfg.val("ts_receipt_ID");
if (receiptID.length() != 0)
request.setReceiptID(receiptID);
String txnID = cfg.val("ts_transaction_ID");
if (txnID.length() != 0) {
TransactionId tid = new TransactionId(txnID);
request.setTransactionID(tid);
}
String itemnumber = cfg.val("ts_auction_ItemNumber");
if (itemnumber.length() != 0)
request.setAuctionItemNumber(itemnumber);
if (transactionClass.length() != 0)
request.setTransactionClass(eBLBaseComponents.apis.ebay.PaymentTransactionClassCodeType.fromString(transactionClass));
//String currencyID = cfg.val("mp_currency_code");
if (amount.length() != 0) {
CoreComponentTypes.apis.ebay.BasicAmountType amountType = new CoreComponentTypes.apis.ebay.BasicAmountType(amount);
request.setAmount(amountType);
}
if (currencyCode.length() != 0)
request.setCurrencyCode(eBLBaseComponents.apis.ebay.CurrencyCodeType.fromString(currencyCode));
if (status.length() != 0)
request.setStatus(eBLBaseComponents.apis.ebay.PaymentTransactionStatusCodeType.fromString(status));
//amountType.setCurrencyID(eBLBaseComponents.apis.ebay.CurrencyCodeType.fromString(currencyID));
request.setVersion(cfg.val("ts_version")); // A bug in axis 1.1 causes this to fail.
_TransactionSearchReq _req = new _TransactionSearchReq();
if (request == null) {
System.out.println("No search critiria being defined!!!!");
return;
}
_req.setTransactionSearchRequest(request);
// Use proxy settings if set in config file...
if (cfg.val("proxy_host") != null) {
System.setProperty("http.proxyHost",cfg.val("proxy_host"));
if (cfg.val("proxy_host") != null) {
System.setProperty("http.proxyPort",cfg.val("proxy_port"));
} else {
System.setProperty("http.proxyPort","80");
}
}
// Insert ebl security ...
PrefixedQName pqn = new PrefixedQName("urn:ebay:api:PayPalAPI",
"RequesterCredentials", "");
SOAPHeaderElement eblSecurity = new SOAPHeaderElement(pqn);
eblSecurity.setMustUnderstand(true);
MessageElement credentials = new MessageElement("Credentials", "ebl", "urn:ebay:apis:eBLBaseComponents");
MessageElement username = new MessageElement("", "ebl:Username");
MessageElement password = new MessageElement("", "ebl:Password");
MessageElement subject = new MessageElement("", "ebl:Subject");
username.setObjectValue(cfg.val("user_name"));
credentials.addChild(username);
password.setObjectValue(cfg.val("user_passwd"));
credentials.addChild(password);
subject.setObjectValue(cfg.val("user_subject"));
credentials.addChild(subject);
eblSecurity.addChild(credentials);
org.apache.axis.client.Stub s = (Stub)binding;
s.setHeader(eblSecurity);
// Below allows SSL connections...
org.apache.axis.AxisProperties.setProperty("axis.socketSecureFactory",
"com.paypal.api.client.SSLFactory");
//Print the request object
printsetTransactionSearchReq(request);
// This actually does the transaction ...
TransactionSearchResponseType resp = null;
try {
resp = binding.transactionSearch(_req);
} catch(Exception e) {
org.apache.axis.AxisFault afe = null;
if (e instanceof org.apache.axis.AxisFault){
afe = (org.apache.axis.AxisFault)e;
}
String note = afe.dumpToString();
System.out.println("Failed on transaction: " + note.toString());
//e.printStackTrace();
return;
}
//process the response...
printTransactionSearchRes(resp);
}
public void printsetTransactionSearchReq(TransactionSearchRequestType req) {
PrintResults display = new PrintResults();
System.out.println();
System.out.println("************TransactionSearch Request************");
if (req.getStartDate() != null)
System.out.println("Start Date: " + req.getStartDate().getTime());
if (req.getEndDate() != null)
System.out.println("End Date: " + req.getEndDate().getTime());
if (req.getPayer() != null)
System.out.println("Payer Email: " + req.getPayer());
if (req.getReceiver()!= null)
System.out.println("Receiver Email: " + req.getReceiver());
if (req.getReceiptID() != null)
System.out.println("Receipt ID: " + req.getReceiptID());
if (req.getTransactionID() != null)
System.out.println("Transaction ID: " + req.getTransactionID());
if (req.getAuctionItemNumber() != null)
System.out.println("Auction ItemNumber: " + req.getAuctionItemNumber());
if (req.getTransactionClass() != null)
System.out.println("TransactionClass: " + req.getTransactionClass().toString());
if (req.getAmount() != null)
System.out.println("Amount: " + req.getAmount().toString() + " " + req.getAmount().getCurrencyID().toString());
if (req.getCurrencyCode() != null)
System.out.println("Currency Code: " + req.getCurrencyCode().toString());
if (req.getStatus() != null)
System.out.println("Status: " + req.getStatus());
if (req.getPayerName() != null) {
System.out.println("Payer Name: ");
display.printPersonNameType(req.getPayerName());
}
}
public void printTransactionSearchRes(TransactionSearchResponseType res) {
System.out.println();
System.out.println("************ Transaction Search Response ***********");
System.out.println("Ack: " + res.getAck().toString());
System.out.println("TimeStamp: " + res.getTimestamp().getTime());
if (res.getCorrelationID() != null)
System.out.println("CorrelationID: " + res.getCorrelationID().toString());
if (res.getVersion() != null)
System.out.println("Version: " + res.getVersion().toString());
if (res.getBuild() != null)
System.out.println("Build: " + res.getBuild().toString());
PrintResults display = new PrintResults();
eBLBaseComponents.apis.ebay.PaymentTransactionSearchResultType[] paymentResult = res.getPaymentTransactions();
if (paymentResult != null) {
for (int j=0; j<paymentResult.length; j++) {
System.out.println("---- Payment Transaction Search Result[" + j + "]:");
display.printPaymentTnxSearchResult(paymentResult[j]);
}
}
eBLBaseComponents.apis.ebay.ErrorType err[] = res.getErrors();
for (int i=0; err != null&&i<err.length; i++) {
System.out.println();
System.out.println("Error Code: " + err[i].getErrorCode());
System.out.println("Short mssg: " + err[i].getShortMessage());
System.out.println("Long messg: " + err[i].getLongMessage());
System.out.println("Severity: " + err[i].getSeverityCode());
}
}
}