diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java index 155e2b8..3efe7a6 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java @@ -75,6 +75,7 @@ public interface PayService { * @param id 业务id, 数据的真实性. * @return true通过 */ + @Deprecated boolean verifySource(String id); diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/bean/RefundOrder.java b/pay-java-common/src/main/java/com/egzosn/pay/common/bean/RefundOrder.java index 410743c..286d0f8 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/bean/RefundOrder.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/bean/RefundOrder.java @@ -38,6 +38,15 @@ public class RefundOrder { */ private Date orderDate; + /** + * 货币 + */ + private CurType curType; + /** + * 退款说明 + */ + private String description; + public String getRefundNo() { return refundNo; } @@ -86,6 +95,22 @@ public class RefundOrder { this.orderDate = orderDate; } + public CurType getCurType() { + return curType; + } + + public void setCurType(CurType curType) { + this.curType = curType; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + public RefundOrder() { } @@ -109,4 +134,6 @@ public class RefundOrder { this.refundAmount = refundAmount; this.totalAmount = totalAmount; } + + } diff --git a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java index 032934f..c08dcf8 100644 --- a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java +++ b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java @@ -128,17 +128,22 @@ public class PayPalPayService extends BasePayService{ @Override public boolean verify(Map params) { - return false; + + HttpStringEntity httpEntity = new HttpStringEntity("{\"payer_id\":\""+(String)params.get("PayerID")+"\"}", ContentType.APPLICATION_JSON); + httpEntity.setHeaders(authHeader()); + JSONObject resp = getHttpRequestTemplate().postForObject(String.format(getReqUrl(PayPalTransactionType.EXECUTE), (String) params.get("paymentId")), httpEntity, JSONObject.class); + return "approved".equals(resp.getString("state")); + } @Override public boolean signVerify(Map params, String sign) { - return false; + return true; } @Override public boolean verifySource(String id) { - return false; + return true; } /** @@ -265,9 +270,22 @@ public class PayPalPayService extends BasePayService{ */ @Override public Map refund(RefundOrder refundOrder) { -// JSONObject resp = getHttpRequestTemplate().getForObject(String.format(getReqUrl(PayPalTransactionType.REFUND), refundOrder.getTradeNo()), authHeader(), JSONObject.class); -// return resp; - return null; + JSONObject request = new JSONObject(); + + if (null != refundOrder.getRefundAmount() && BigDecimal.ZERO.compareTo( refundOrder.getRefundAmount()) > 0){ + Amount amount = new Amount(); + amount.setCurrency(refundOrder.getCurType().name()); + amount.setTotal(refundOrder.getRefundAmount().toString()); + request.put("amount", amount); + request.put("description", refundOrder.getDescription()); + } + + HttpStringEntity httpEntity = new HttpStringEntity(request, ContentType.APPLICATION_JSON); + httpEntity.setHeaders(authHeader()); + JSONObject resp = getHttpRequestTemplate().postForObject(String.format(getReqUrl(PayPalTransactionType.REFUND), refundOrder.getTradeNo()), httpEntity, JSONObject.class); + return resp; +// +// return null; } /** * 查询退款 diff --git a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/bean/PayPalTransactionType.java b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/bean/PayPalTransactionType.java index 7769612..4a9c87d 100644 --- a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/bean/PayPalTransactionType.java +++ b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/bean/PayPalTransactionType.java @@ -25,10 +25,17 @@ public enum PayPalTransactionType implements TransactionType { * 付款 网页支付 */ sale("payments/payment"), - REFUND("payments/sale/{0}/refund"), + /** + * sale 支付退款 + */ + REFUND("payments/sale/{saleId}/refund"), REFUND_QUERY("payments/refund/{refundId}"), PAYOUT("payments/payouts/{payoutBatchId}"), ORDERS("payments/orders/{orderId}"), + /** + * 回调订单状态查询 + */ + EXECUTE("v1/payments/payment/{paymentId}/execute"), ;