Java Developer的Paypal预付款

时间:2013-11-15 12:18:09

标签: java paypal

我想问一个简单的查询,我的客户已经购买了PayPal预付款帐户,每月额外增加5美元,用于支付其网站付款等附加服务。

我想问一下使用此帐户可以使用哪些功能?我在谷歌搜索但未找到相关信息。

我的客户要求所有付款都应在我的网站上完成,不要让用户重定向到paypal官方网站进行任何购买。

如何使用此帐户执行此操作,我可以使用哪些功能以及服务或API?

1 个答案:

答案 0 :(得分:1)

以下是您问题的解决方案。请按照以下要点进行操作。

  1. 创建一个maven Web应用程序。
  2. 包含以下依赖项

            <dependency>
              groupId>com.paypal.sdk</groupId>
                        <artifactId>adaptivepaymentssdk</artifactId>
                        <version>2.5.106</version>
              </dependency>
    
  3. 3.这是包含电子邮件付款电子邮件代码的类。

        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.配置文件

    /**
     *  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.只需获得所有必需的参数,它就能正常工作。