Nidhi Chaudhary
Nidhi Chaudhary

Reputation: 1

Paypal Advance Payment for Java Developer

I want to ask just a simple query, my client has purchased PayPal Advance payment account include $5 extra per month for additional service like payment integration to their website.

I want to ask what features I can use using this account? I have searched on google but not found relavent information.

My client is demanding that all the payment should be done on my website, don't let the users redirect to the paypal official website for any purchase.

How can I do this with this account, what are the features I can use and services or APIs?

Upvotes: 0

Views: 413

Answers (1)

Ravi Kant
Ravi Kant

Reputation: 5005

Here is the solution of your problem.Just follow the below point's.

  1. create one maven web application.
  2. include the following dependency

            <dependency>
              groupId>com.paypal.sdk</groupId>
                        <artifactId>adaptivepaymentssdk</artifactId>
                        <version>2.5.106</version>
              </dependency>
    

3.Here is the class which contain's the code for payment email to email.

    public class PaymentTest {
    public static boolean fundtransferFromClientAcount() {

        PayRequest req = new PayRequest();
        RequestEnvelope requestEnvelope = new RequestEnvelope();
        requestEnvelope.setErrorLanguage("en_US");
        req.setRequestEnvelope(requestEnvelope);
        List<Receiver> receiver = new ArrayList<Receiver>();
        Receiver rec = new Receiver();
        /** (Required) Amount to be paid to the receiver */
        rec.setAmount(10.00);
        /**Reciever and Sender should be register on paypal with same emailid.*/
        rec.setEmail("Reciever Email Id");
        receiver.add(rec);
        ReceiverList receiverlst = new ReceiverList(receiver);
        req.setReceiverList(receiverlst);
        req.setSenderEmail("Sender Email");
        req.setActionType("PAY");
        req.setCancelUrl("Cancel Url");
        req.setCurrencyCode("USD");
        /** Here we need to give success url */
        req.setReturnUrl("return or success url");
        Map<String, String> configurationMap =Configuration.getAcctAndConfig();
        // Creating service wrapper object to make an API call by loading
        // configuration map.
        AdaptivePaymentsService service = new AdaptivePaymentsService(
                configurationMap);
        try {
            PayResponse resp = service.pay(req);
            if (resp != null) {
                if (resp.getResponseEnvelope().getAck().toString()
                        .equalsIgnoreCase("SUCCESS")) {
                    Map<Object, Object> map = new LinkedHashMap<Object, Object>();
                    map.put("Ack", resp.getResponseEnvelope().getAck());

                    /**
                     * Correlation identifier. It is a 13-character,
                     * alphanumeric string (for example, db87c705a910e) that is
                     * used only by PayPal Merchant Technical Support. Note: You
                     * must log and store this data for every response you
                     * receive. PayPal Technical Support uses the information to
                     * assist with reported issues.
                     */
                    map.put("CorrelationID", resp.getResponseEnvelope()
                            .getCorrelationId());

                    /**
                     * Date on which the response was sent, for example:
                     * 2012-04-02T22:33:35.774-07:00 Note: You must log and
                     * store this data for every response you receive. PayPal
                     * Technical Support uses the information to assist with
                     * reported issues.
                     */
                    map.put("TimeStamp", resp.getResponseEnvelope()
                            .getTimestamp());

                    /**
                     * The pay key, which is a token you use in other Adaptive
                     * Payment APIs (such as the Refund Method) to identify this
                     * payment. The pay key is valid for 3 hours; the payment
                     * must be approved while the pay key is valid.
                     */
                    map.put("PayKey", resp.getPayKey());

                    /**
                     * The status of the payment. Possible values are: CREATED –
                     * The payment request was received; funds will be
                     * transferred once the payment is approved COMPLETED – The
                     * payment was successful INCOMPLETE – Some transfers
                     * succeeded and some failed for a parallel payment or, for
                     * a delayed chained payment, secondary receivers have not
                     * been paid ERROR – The payment failed and all attempted
                     * transfers failed or all completed transfers were
                     * successfully reversed REVERSALERROR – One or more
                     * transfers failed when attempting to reverse a payment
                     * PROCESSING – The payment is in progress PENDING – The
                     * payment is awaiting processing
                     */
                    map.put("Payment Execution Status",
                            resp.getPaymentExecStatus());
                    if (resp.getDefaultFundingPlan() != null) {
                        /** Default funding plan. */
                        map.put("Default Funding Plan", resp
                                .getDefaultFundingPlan().getFundingPlanId());
                    }
                    // Skipping for Implicit Payments
                    if (!resp.getPaymentExecStatus().equalsIgnoreCase(
                            "Completed")) {
                        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>");
                    }


                    for (Entry<Object, Object> entry : map.entrySet()) {
                        System.out.println("Key : " + entry.getKey()
                                + " Value : " + entry.getValue());
                    }
                    return true;
                } else {
                    return false;
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }

        return true;
    }

    public static void main(String[] args) {

        fundtransferFromClientAcount();
    }

}

4.Configuration file

/**
 *  For a full list of configuration parameters refer in wiki page(https://github.com/paypal/sdk-core-java/wiki/SDK-Configuration-Parameters). 
 */
public class Configuration {

        // Creates a configuration map containing credentials and other required configuration parameters.
        public static final Map<String,String> getAcctAndConfig(){
                Map<String,String> configMap = new HashMap<String,String>();
                configMap.putAll(getConfig());

                // Account Credential
                configMap.put("acct1.UserName", "sandbox account username");
                configMap.put("acct1.Password", "sandbox account password");
                configMap.put("acct1.Signature", "sandbox account signature");
                configMap.put("acct1.AppId", "sandbox account generated AppId");

                // Sample Certificate credential
                // configMap.put("acct2.UserName", "certuser_biz_api1.paypal.com");
                // configMap.put("acct2.Password", "D6JNKKULHN3G5B8A");
                // configMap.put("acct2.CertKey", "password");
                // configMap.put("acct2.CertPath", "resource/sdk-cert.p12");
                // configMap.put("acct2.AppId", "APP-80W284485P519543T");

                // Sandbox Email Address
                configMap.put("sandbox.EmailAddress", "email address for sandbox");

                return configMap;
        }

        public static final Map<String,String> getConfig(){
                Map<String,String> configMap = new HashMap<String,String>();

                // Endpoints are varied depending on whether sandbox OR live is chosen for mode
                configMap.put("mode", "sandbox");

                // These values are defaulted in SDK. If you want to override default values, uncomment it and add your value.
                // configMap.put("http.ConnectionTimeOut", "5000");
                // configMap.put("http.Retry", "2");
                // configMap.put("http.ReadTimeOut", "30000");
                // configMap.put("http.MaxConnection", "100");
                return configMap;
        }
}

5.Just get all the required parameter and it will work fine.

Upvotes: 1

Related Questions