标签:
背景:
业务需求,需要开发一款小程序每天自动从Paypal上下载前一天的交易记录,并存入SQL SERVER数据库,以便与财务的Invoice进行金额比对。
开发构想:
采用Java为开发语言,Spring MVC框架,CXF Webservice。持久层采用Hibernate,并通过Spring的Schedule Task完成定时任务功能。
与Paypal的接口参考官方的SDK,但首先需要决定采用REST API或是Classic API。
官方SDK:https://developer.paypal.com/developer/
先是考虑使用最新的REST API,但根据官方SDK写了一个小例子获取个人Paypal账户的历史交易记录,取得的Transaction记录数为0。
然而在Paypal的Sandbox环境下创建的测试账户,以及建立的虚拟交易,却能通过REST API正常取得数据。
对此疑惑不解,Google了一下发现官方SDK上就有对此进行说明:
Currently, the REST APIs can be used to get history of only those transactions that were created using the REST APIs. Use the Classic TransactionSearch API operation to retrieve a history of the transactions that were created using the Classic APIs and JavaScript Buttons.
原来REST API并不能获取非REST API创建的交易记录,只能通过Classic API获取。不向后兼容这一点让人很无语好不好。
好吧,用Classic API就用吧,查阅SDK文档之后发现以下两个API方法就应该可以搞定需求。
1) transactionSearch
2)getTransactionDetails
参考了一个官方的小例子,调用方法还是比较简单的(SOAP)
// 调用TransactionSearch方法
1 TransactionSearchRequestType searchReqType = new TransactionSearchRequestType(); 2 searchReqType.setStartDate(TransactionUtils.convertUTCDate(dateFrom)); 3 searchReqType.setEndDate(TransactionUtils.convertUTCDate(dateTo)); 4 TransactionSearchReq searchReq = new TransactionSearchReq(); 5 searchReq.setTransactionSearchRequest(searchReqType); 6 7 TransactionSearchResponseType searchResp = new TransactionSearchResponseType(); 8 searchResp = service.transactionSearch(searchReq);
//调用getTransactionDetails方法
1 GetTransactionDetailsReq getDetailsReq = new GetTransactionDetailsReq(); 2 GetTransactionDetailsRequestType getDetailsReqType = new GetTransactionDetailsRequestType(); 3 getDetailsReqType.setTransactionID(id); 4 getDetailsReq.setGetTransactionDetailsRequest(getDetailsReqType); 5 6 GetTransactionDetailsResponseType getDetailsResp = null; 7 getDetailsResp = service.getTransactionDetails(getDetailsReq);
调用方法比较直观,先new一个对应的Request对象,往该对象传入查询的参数,然后将该Request作为API方法的参数传入,通过service对象得到Response。
在Response对象中就可以获取对应的Transaction数据信息。
——待续——
Paypal获取Transaciton历史交易API初步研究(一)——REST or Classic API
标签:
原文地址:http://www.cnblogs.com/kogen/p/4662652.html