Willem,

Did you mean message header or message body?

Regards,
Jothi


On Tue, Feb 26, 2013 at 8:41 AM, Willem jiang <willem.ji...@gmail.com>wrote:

> Yes,and we normally put the parameters into the message header.
>
>
> --
> Willem Jiang
>
> Red Hat, Inc.
> FuseSource is now part of Red Hat
> Web: http://www.fusesource.com | http://www.redhat.com
> Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/)
> (English)
>           http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
> Twitter: willemjiang
> Weibo: 姜宁willem
>
>
>
>
>
> On Tuesday, February 26, 2013 at 1:58 PM, Joe San wrote:
>
> > So you mean to say that in my Producer, I can get all the properties
> that I
> > need to use to connect to the service from the Message body. I'm just
> > wondering how. Just for me to be clear, here is a scenario wherein the
> > paypal call is made based on the result of a http call
> >
> >
> from(httpCallWithPayPalParametersSetByTheUser).to(paypal://adaptivepayments?operation=pay)
> >
> > So if I understand this correctly, the result of the from(...) operation
> > will have the parameters set in the Message's body and I can get that
> form
> > there are create the PayPal type objects and call the PayPal API?
> >
> > Regrds,
> > Jothi
> >
> >
> > On Mon, Feb 25, 2013 at 10:59 PM, Christian Müller <
> > christian.muel...@gmail.com (mailto:christian.muel...@gmail.com)> wrote:
> >
> > > A few comments:
> > > The AdaptivePaymentsService should be created once (in the doStart()
> > > method).
> > > You can look up the parameter from the in message header. You can also
> use
> > > a map as body and look up the properties from there. You can also let
> the
> > > user configure its own binding...
> > >
> > > Best,
> > > Christian
> > >
> > > Sent from a mobile device
> > > Am 24.02.2013 02:16 schrieb "Joe San" <codeintheo...@gmail.com(mailto:
> codeintheo...@gmail.com)>:
> > >
> > > > Camel Riders,
> > > >
> > > > Out of interest and with advice from Christian Müller, I took up the
> task
> > > > of writing this component. I created the stubs and I'm trying now to
> get
> > > > the Producer written.
> > > >
> > > > On a high level, PayPay adaptive payments API has different
> operations
> > > > (Pay, PaymentDetails and many more....).
> > >
> > >
> > >
> https://www.x.com/developers/paypal/documentation-tools/adaptive-payments/integration-guide/APIntro
> > > >
> > > > So the goal is to provide integration to all those API operations. I
> > > > downloaded the API from x.com (http://x.com) and the API comes with
> a sample web
> > > > application that has an example to all those API operations. There
> is a
> > > > PayRequest type object which must be sent as a parameter to all the
> > >
> > >
> > > service
> > > > calls to the API. So I'm currently stuck with how to stuff the values
> > >
> > >
> > > into
> > > > the PayRequest type object.
> > > >
> > > > Here is a snippet from my implementation so far.... This is actually
> a
> > > > snippet from my Producer
> > > >
> > > > @Override
> > > > public void doRequest(final Exchange exchange) throws Exception {
> > > > final PayRequest req = populatePayRequest(exchange);
> > > >
> > > > try {
> > > > final PayRequest request = this.populatePayRequest(exchange);
> > > > PayResponse resp = this.sendPayRequest(request);
> > > >
> > > > }
> > > > catch (Exception ex) {
> > > >
> > > > }
> > > > }
> > > >
> > > > /**
> > > > *
> > > > * @param req
> > > > * @return
> > > > */
> > > > private PayResponse sendPayRequest(final PayRequest req) throws
> > > > PayPalException {
> > > > PayResponse resp = null;
> > > >
> > > > try {
> > > > // TODO... Get the properties from a Properties file
> > > > AdaptivePaymentsService service = new
> > > > AdaptivePaymentsService(this
> > > >
> > > > .getClass().getResourceAsStream("/sdk_config.properties"));
> > > > PayResponse resp = service.pay(req);
> > > >
> > > > } catch (IOException ex) {
> > > >
> > > > } catch (MissingCredentialException e) {
> > > > e.printStackTrace(); //To change body of catch statement use
> > > > File | Settings | File Templates.
> > > > } catch (InterruptedException e) {
> > > > e.printStackTrace(); //To change body of catch statement use
> > > > File | Settings | File Templates.
> > > > } catch (ClientActionRequiredException e) {
> > > > e.printStackTrace(); //To change body of catch statement use
> > > > File | Settings | File Templates.
> > > > } catch (SSLConfigurationException e) {
> > > > e.printStackTrace(); //To change body of catch statement use
> > > > File | Settings | File Templates.
> > > > } catch (OAuthException e) {
> > > > e.printStackTrace(); //To change body of catch statement use
> > > > File | Settings | File Templates.
> > > > } catch (HttpErrorException e) {
> > > > e.printStackTrace(); //To change body of catch statement use
> > > > File | Settings | File Templates.
> > > > } catch (InvalidCredentialException e) {
> > > > e.printStackTrace(); //To change body of catch statement use
> > > > File | Settings | File Templates.
> > > > } catch (InvalidResponseDataException e) {
> > > > e.printStackTrace(); //To change body of catch statement use
> > > > File | Settings | File Templates.
> > > > } finally {
> > > > // Do some cleanup if necessary...
> > > > }
> > > >
> > > > return resp;
> > > > }
> > > >
> > > > /**
> > > > * Populate the pay request
> > > > * @param exchange
> > > > * @return
> > > > */
> > > > private PayRequest populatePayRequest(Exchange exchange) {
> > > >
> > > > //final PayRequest req = (PayRequest) exchange.getIn().getBody();
> > > >
> > > > Map < String, Object > headers = exchange.getIn().getHeaders();
> > > >
> > > > final PayRequest req = new PayRequest();
> > > >
> > > > final String currencyCode =
> > > > headers.get(PayPalConstants.PAYPAL_CURRENCY_CODE) != null
> > > > ? (String)
> > > > headers.get(PayPalConstants.PAYPAL_CURRENCY_CODE)
> > > > : config.getCurrencyCode();
> > > > req.setCurrencyCode(currencyCode);
> > > >
> > > >
> > > >
> > > > final RequestEnvelope envelop =
> > > > headers.get(PayPalConstants.PAYPAL_REQUEST_ENVELOP) != null
> > > > ? new
> > >
> > >
> > >
> RequestEnvelope((String)headers.get(PayPalConstants.PAYPAL_REQUEST_ENVELOP))
> > > > : new
> > >
> > >
> > > RequestEnvelope(config.getRequestEnvelopErrorLang());
> > > >
> > > > final List < Receiver > receiver = populateReceiver(headers);
> > > > final ClientDetailsType clientDetails =
> > > > populateClientDetails(headers);
> > > >
> > > >
> > > > return req;
> > > > }
> > > >
> > > > Given below is a snippet from the sample web application that came
> with
> > > the
> > > > API that I downloaded. All I want to know is of an elegant way to
> create
> > > > the PayRequest object for the API call. What I want to avoid is to
> > >
> > >
> > > provide
> > > > the user with a whole bunch of parameters that he has to set in the
> > >
> > >
> > > header
> > > > to make the PayPal API call.
> > > >
> > > > protected void doPost(HttpServletRequest request,
> > > > HttpServletResponse response) throws
> > > > ServletException, IOException {
> > > > // TODO Auto-generated method stub
> > > > HttpSession session = request.getSession();
> > > > session.setAttribute("url", request.getRequestURI());
> > > > session.setAttribute(
> > > > "relatedUrl",
> > > > "<ul><li><a href='Pay'>Pay</a></li><li><a
> > > > href='PaymentDetails'>PaymentDetails</a></li><li><a
> > > > href='Refund'>Refund</a></li><li><a
> > > > href='GetPaymentOptions'>GetPaymentOptions</a></li><li><a
> > > > href='ExecutePayment'>ExecutePayment</a></li><li><a
> > > > href='SetPaymentOptions'>SetPaymentOptions</a></li></ul>");
> > > > RequestEnvelope requestEnvelope = new RequestEnvelope("en_US");
> > > >
> > > > com.paypal.svcs.types.ap.PayRequest req = new
> > > > com.paypal.svcs.types.ap.PayRequest();
> > > >
> > > > List<com.paypal.svcs.types.ap.Receiver> receiver = new
> > > > ArrayList<com.paypal.svcs.types.ap.Receiver>();
> > > >
> > > > com.paypal.svcs.types.ap.Receiver rec = new
> > > > com.paypal.svcs.types.ap.Receiver();
> > > > if (request.getParameter("amount") != "")
> > > >
> > > > rec.setAmount(Double.parseDouble(request.getParameter("amount")));
> > > > if (request.getParameter("mail") != "")
> > > > rec.setEmail(request.getParameter("mail"));
> > > > if (request.getParameter("invoiceID") != "")
> > > > rec.setInvoiceId(request.getParameter("invoiceID"));
> > > > if (request.getParameter("paymentSubType") != "")
> > >
> > >
> > > rec.setPaymentSubType(request.getParameter("paymentSubType"));
> > > > if (request.getParameter("paymentType") != "")
> > > > rec.setPaymentType(request.getParameter("paymentType"));
> > > > if (request.getParameter("phoneNumber") != "") {
> > > > PhoneNumberType phone = new PhoneNumberType(
> > > > request.getParameter("countryCode"),
> > > > request.getParameter("phoneNumber"));
> > > > phone.setExtension(request.getParameter("extension"));
> > > > rec.setPhone(phone);
> > > > }
> > > > if (request.getParameter("setPrimary") != "")
> > > > rec.setPrimary(Boolean.parseBoolean(request
> > > > .getParameter("setPrimary")));
> > > > receiver.add(rec);
> > > > ReceiverList receiverlst = new ReceiverList(receiver);
> > > > req.setReceiverList(receiverlst);
> > > > req.setRequestEnvelope(requestEnvelope);
> > > > ClientDetailsType clientDetails = new ClientDetailsType();
> > > > if (request.getParameter("applicationID") != "")
> > > > clientDetails.setApplicationId(request
> > > > .getParameter("applicationID"));
> > > > if (request.getParameter("customerID") != "")
> > > >
> > > > clientDetails.setCustomerId(request.getParameter("customerID"));
> > > > if (request.getParameter("customerType") != "")
> > > >
> > > > clientDetails.setCustomerType(request.getParameter("customerType"));
> > > > if (request.getParameter("deviceID") != "")
> > > > clientDetails.setDeviceId(request.getParameter("deviceID"));
> > > > if (request.getParameter("location") != "")
> > >
> > >
> > > clientDetails.setGeoLocation(request.getParameter("location"));
> > > > if (request.getParameter("ipAddress") != "")
> > >
> > >
> > > clientDetails.setIpAddress(request.getParameter("ipAddress"));
> > > > if (request.getParameter("model") != "")
> > > > clientDetails.setModel(request.getParameter("model"));
> > > > if (request.getParameter("partnerName") != "")
> > > >
> > > > clientDetails.setPartnerName(request.getParameter("partnerName"));
> > > > req.setClientDetails(clientDetails);
> > > > if (request.getParameter("ipnNotificationURL") != "")
> > > > req.setIpnNotificationUrl(request
> > > > .getParameter("ipnNotificationURL"));
> > > > if (request.getParameter("memo") != "")
> > > > req.setMemo(request.getParameter("memo"));
> > > > if (request.getParameter("pin") != "")
> > > > req.setPin(request.getParameter("pin"));
> > > > if (request.getParameter("senderEmail") != "")
> > > > req.setSenderEmail(request.getParameter("senderEmail"));
> > > > if (request.getParameter("feesPayer") != "")
> > > > req.setFeesPayer(request.getParameter("feesPayer"));
> > > > FundingConstraint fundingConstraint = new FundingConstraint();
> > > > List<FundingTypeInfo> fundingTypeInfoList = new
> > > > ArrayList<FundingTypeInfo>();
> > > > if (request.getParameter("fundingType") != "") {
> > > > FundingTypeInfo fundingTypeInfo = new FundingTypeInfo(
> > > > request.getParameter("fundingType"));
> > > > fundingTypeInfoList.add(fundingTypeInfo);
> > > > }
> > > > FundingTypeList fundingTypeList = new FundingTypeList(
> > > > fundingTypeInfoList);
> > > > fundingConstraint.setAllowedFundingType(fundingTypeList);
> > > > req.setFundingConstraint(fundingConstraint);
> > > > if (request.getParameter("preapprovalKey") != "")
> > >
> > >
> > > req.setPreapprovalKey(request.getParameter("preapprovalKey"));
> > > > if (request.getParameter("reverseAllPaymentsOnError") != "")
> > > > req.setReverseAllParallelPaymentsOnError(Boolean
> > > > .parseBoolean(request
> > > > .getParameter("reverseAllPaymentsOnError")));
> > > >
> > > > SenderIdentifier senderIdentifier = new SenderIdentifier();
> > > > if (request.getParameter("senderIdentifierEmail") != "")
> > > > senderIdentifier.setEmail(request
> > > > .getParameter("senderIdentifierEmail"));
> > > > if (request.getParameter("senderCountryCode") != ""
> > > > && request.getParameter("senderPhoneNumber") != "") {
> > > > PhoneNumberType senderPhone = new PhoneNumberType(
> > > > request.getParameter("senderCountryCode"),
> > > > request.getParameter("senderPhoneNumber"));
> > > > if (request.getParameter("senderExtension") != "")
> > > > senderPhone.setExtension(request
> > > > .getParameter("senderExtension"));
> > > > senderIdentifier.setPhone(senderPhone);
> > > > }
> > > > if (request.getParameter("useCredentials") != "")
> > >
> > >
> > > senderIdentifier.setUseCredentials(Boolean.parseBoolean(request
> > > > .getParameter("useCredentials")));
> > > > req.setSender(senderIdentifier);
> > > >
> > > > if (request.getParameter("trackingID") != "")
> > > > req.setTrackingId(request.getParameter("trackingID"));
> > > > if (request.getParameter("actionType") != "")
> > > > req.setActionType(request.getParameter("actionType"));
> > > > if (request.getParameter("cancelURL") != "")
> > > > req.setCancelUrl(request.getParameter("cancelURL"));
> > > > if (request.getParameter("currencyCode") != "")
> > > > req.setCurrencyCode(request.getParameter("currencyCode"));
> > > > if (request.getParameter("returnURL") != "")
> > > > req.setReturnUrl(request.getParameter("returnURL"));
> > > > AdaptivePaymentsService service = new
> > >
> > >
> > > AdaptivePaymentsService(this
> > >
> > >
> > > .getClass().getResourceAsStream("/sdk_config.properties"));
> > > > try {
> > > > com.paypal.svcs.types.ap.PayResponse resp = service.pay(req);
> > > > response.setContentType("text/html");
> > > > if (resp != null) {
> > > > session.setAttribute("RESPONSE_OBJECT", resp);
> > > > session.setAttribute("lastReq",
> > >
> > >
> > > service.getLastRequest());
> > > > session.setAttribute("lastResp",
> > > > service.getLastResponse());
> > > > if (resp.getResponseEnvelope().getAck().toString()
> > > > .equalsIgnoreCase("SUCCESS")) {
> > > > Map<Object, Object> map = new LinkedHashMap<Object,
> > > > Object>();
> > > > map.put("Ack", resp.getResponseEnvelope().getAck());
> > > > map.put("Correlation ID", resp.getResponseEnvelope()
> > > > .getCorrelationId());
> > > > map.put("Time Stamp", resp.getResponseEnvelope()
> > > > .getTimestamp());
> > > > map.put("Pay Key", resp.getPayKey());
> > > > map.put("Payment Execution Status",
> > > > resp.getPaymentExecStatus());
> > > > if (resp.getDefaultFundingPlan() != null)
> > > > map.put("Default Funding Plan", resp
> > > >
> > > > .getDefaultFundingPlan().getFundingPlanId());
> > > > map.put("Redirect URL",
> > > > "<a href=
> > > >
> https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_ap-payment&paykey=";
> > > > + resp.getPayKey()
> > > > + ">
> > > >
> https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_ap-payment&paykey=";
> > > > + resp.getPayKey() + "</a>");
> > > > session.setAttribute("map", map);
> > > > response.sendRedirect("Response.jsp");
> > > > } else {
> > > > session.setAttribute("Error", resp.getError());
> > > > response.sendRedirect("Error.jsp");
> > > > }
> > > > }
> > > > } catch (SSLConfigurationException e) {
> > > > // TODO Auto-generated catch block
> > > > e.printStackTrace();
> > > > } catch (InvalidCredentialException e) {
> > > > // TODO Auto-generated catch block
> > > > e.printStackTrace();
> > > > } catch (HttpErrorException e) {
> > > > // TODO Auto-generated catch block
> > > > e.printStackTrace();
> > > > } catch (InvalidResponseDataException e) {
> > > > // TODO Auto-generated catch block
> > > > e.printStackTrace();
> > > > } catch (ClientActionRequiredException e) {
> > > > // TODO Auto-generated catch block
> > > > e.printStackTrace();
> > > > } catch (MissingCredentialException e) {
> > > > // TODO Auto-generated catch block
> > > > e.printStackTrace();
> > > > } catch (OAuthException e) {
> > > > // TODO Auto-generated catch block
> > > > e.printStackTrace();
> > > > } catch (InterruptedException e) {
> > > > // TODO Auto-generated catch block
> > > > e.printStackTrace();
> > > > }
> > > >
> > > > }
> > > >
> > > > Thanks for going through such a long post.
> > > >
> > > > Regards,
> > > > Jothi
> > >
> >
>
>
>
>

Reply via email to