【问题标题】:Get card details through which payment is done using PayPal api in Java使用 Java 中的 PayPal api 获取支付卡的详细信息
【发布时间】:2019-07-21 05:40:39
【问题描述】:

我正在使用 PayPal API 类在 Java 我的应用程序中进行支付。我的paypal沙盒账户里有三张卡,分别是master、visa和美国运通。

我在付款前设置了所需的信息,我正在添加相同的代码。

// ###Details
        Details details = new Details();
        details.setShipping("0");
        details.setSubtotal("1");
        details.setTax("0");

        // ###Amount
        Amount amount = new Amount();
        amount.setCurrency(jobLine.getCurrency());
        amount.setTotal("1");
        amount.setDetails(details);

        // ###Transaction
        Transaction transaction = new Transaction();
        transaction.setAmount(amount);
        transaction.setDescription("This is the payment transaction for vetjobs.com.au");

        // ### Items
        Item item = new Item();
        item.setName("vetjob post job").setQuantity("1").setCurrency(jobLine.getCurrency()).setPrice("1");
        ItemList itemList = new ItemList();
        List<Item> items = new ArrayList<Item>();
        items.add(item);
        itemList.setItems(items);

        transaction.setItemList(itemList);

        List<Transaction> transactions = new ArrayList<Transaction>();
        transactions.add(transaction);

        Payer payer = new Payer();
        payer.setPaymentMethod("paypal");

        // ###Payment

        Payment payment = new Payment();
        payment.setIntent("sale");
        payment.setPayer(payer);
        payment.setTransactions(transactions);

所以,卡不是在付款前决定的,付款后就知道了。

现在我已经使用 Visa 完成了支付,我想在我的 jsp 页面上显示该卡名称。那么如何检索这些详细信息呢?

【问题讨论】:

    标签: java paypal paypal-sandbox


    【解决方案1】:

    我解决了您的问题。 这是答案

    获取卡片详细信息的功能。

    public Map<String, Object> getCardDetails() throws PayPalRESTException {
            Map<String, Object> response = new HashMap<String, Object>();
            try {
                APIContext context = new APIContext(clientId, clientSecret, "sandbox");
                CreditCard creditCard = CreditCard.get(context, "CARD-9D2462350Y753123NLS4YVTY");
                response.put("status", "sucsess");
                response.put("Details", creditCard);
                return response;
    
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    

    获取卡片详细信息的 API

    @RequestMapping(value = "cardDetails", method = RequestMethod.GET)
        public ResponseEntity<Map<String, Object>> cardDetails() {
            Map<String, Object> response = new HashMap<String, Object>();
            Map<String, Object> data = new HashMap<String, Object>();
            try {
                Map<String, Object> cardResponse = paypalVaultPaymentService.getCardDetails();
    
                String json = cardResponse.get("Details").toString();
                Map<String, Object> map = toMap(new JSONObject(json));
                data.put("cardDetails", map);
                response.put("data", data);
                response.put("status", "OK");
                response.put("code", "200");
                response.put("message", "Card Details Found successfully.");
                return new ResponseEntity<Map<String, Object>>(response, HttpStatus.OK);
    
            } catch (Exception e) {
                e.printStackTrace();
                response.put("status", "ERROR");
                response.put("code", "500");
                response.put("message", "Something went wrong");
                return new ResponseEntity<Map<String, Object>>(response, HttpStatus.INTERNAL_SERVER_ERROR);
            }
        }
    
    public static Map<String, Object> toMap(JSONObject object) throws JSONException {
            Map<String, Object> map = new HashMap<String, Object>();
    
            Iterator<String> keysItr = object.keys();
            while (keysItr.hasNext()) {
                String key = keysItr.next();
                Object value = object.get(key);
    
                if (value instanceof JSONArray) {
                    value = toList((JSONArray) value);
                }
    
                else if (value instanceof JSONObject) {
                    value = toMap((JSONObject) value);
                }
                map.put(key, value);
            }
            return map;
        }
    
        public static List<Object> toList(JSONArray array) throws JSONException {
            List<Object> list = new ArrayList<Object>();
            for (int i = 0; i < array.length(); i++) {
                Object value = array.get(i);
                if (value instanceof JSONArray) {
                    value = toList((JSONArray) value);
                }
    
                else if (value instanceof JSONObject) {
                    value = toMap((JSONObject) value);
                }
                list.add(value);
            }
            return list;
        }
    

    【讨论】:

      【解决方案2】:

      当您存储信用卡时,它会返回 card_id,如“CARD-1SW33690TH184423CKM2Z”,您可以使用 card_id 获取卡详细信息。 尝试此请求以获取卡详细信息

      Sample Request
          curl -v -X GET https://api.sandbox.paypal.com/v1/vault/credit-cards/CARD-54E6956910402550WKGRL6EA \
          -H "Content-Type: application/json" \
          -H "Authorization: Bearer Access-Token"
      
      Sample Response
      
      {
        "valid_until": "2016-05-26T00:00:00Z",
        "first_name": "Joe",
        "last_name": "Shopper",
        "expire_month": "11",
        "state": "ok",
        "billing_address": {
          "city": "Johnstown",
          "state": "OH",
          "postal_code": "43210",
          "country_code": "US",
          "line1": "52 N. Main St."
        },
        "expire_year": "2018",
        "number": "0000000000000000",
        "type": "visa",
        "id": "CARD-54E6956910402550WKGRL6EA",
        "links": [
          {
            "href": "https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-54E6956910402550WKGRL6EA",
            "method": "GET",
            "rel": "self"
          },
          {
            "href": "https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-54E6956910402550WKGRL6EA",
            "method": "DELETE",
            "rel": "delete"
          },
          {
            "href": "https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-54E6956910402550WKGRL6EA",
            "method": "PATCH",
            "rel": "patch"
          }
        ]
      }
      

      有关 PayPal Vault 集成的更多详细信息,您可以访问:[https://developer.paypal.com/docs/api/vault/v1/#credit-cards_get]

      对于一段代码,您可以访问: [https://github.com/paypal/PayPal-Java-SDK/blob/master/rest-api-sample/src/main/java/com/paypal/api/payments/servlet/GetCreditCardServlet.java][1]

      如果仍然无效,请告诉我 谢谢

      【讨论】:

        猜你喜欢
        • 2020-10-16
        • 2014-12-08
        • 2011-12-01
        • 2015-07-22
        • 2018-04-05
        • 2021-09-08
        • 2016-09-24
        • 2016-07-18
        • 2014-07-03
        相关资源
        最近更新 更多