TransactionSearch


/**
 * @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());
 }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章