diff --git a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayController.java b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayController.java index 51824b5..821ddc9 100644 --- a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayController.java +++ b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayController.java @@ -112,6 +112,12 @@ public class PayController { order.setBankType(bankType); } Map orderInfo = payResponse.getService().orderInfo(order); + + //某些支付下单时无法设置单号,通过下单后返回对应单号,如 paypal,友店。 + String outTradeNo = order.getOutTradeNo(); + + System.out.println("支付订单号:" + outTradeNo + " 这里可以进行回存"); + return payResponse.getService().buildRequest(orderInfo, MethodType.POST); } diff --git a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayPalPayController.java b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayPalPayController.java index 84611a8..79042aa 100644 --- a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayPalPayController.java +++ b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayPalPayController.java @@ -40,13 +40,13 @@ public class PayPalPayController { @PostConstruct public void init() { PayPalConfigStorage storage = new PayPalConfigStorage(); - storage.setClientID("商户id"); - storage.setClientSecret("商户密钥"); + storage.setClientID("1AZ7HTcvrEAxYbzYx_iDZAi06GdqbjhqqQzFgPBFLxm2VUMzwlmiNUBk_y_5QNP4zWKblTuM6ZBAmxScd"); + storage.setClientSecret("1EBMIjAag6NiRdXZxteTv0amEsmKN345xJv3bN7f_HRXSqcRJlW7PXhYXjI9sk5I4nKYOHgeqzhXCXKFo"); storage.setTest(true); //发起付款后的页面转跳地址 - storage.setReturnUrl("http://127.0.0.1:8088/pay/success"); + storage.setReturnUrl("http://www.egzosn.com/pay/success"); //取消按钮转跳地址,这里用异步通知地址的兼容的做法 - storage.setNotifyUrl("http://127.0.0.1:8088/pay/cancel"); + storage.setNotifyUrl("http://www.egzosn.com/pay/cancel"); service = new PayPalPayService(storage); //请求连接池配置 @@ -72,6 +72,13 @@ public class PayPalPayController { PayOrder order = new PayOrder("订单title", "摘要", null == price ? new BigDecimal(0.01) : price, UUID.randomUUID().toString().replace("-", ""), PayPalTransactionType.sale); Map orderInfo = service.orderInfo(order); + + //某些支付下单时无法设置单号,通过下单后返回对应单号,如 paypal,友店。 + String outTradeNo = order.getOutTradeNo(); + + System.out.println("支付订单号:" + outTradeNo + " 这里可以进行回存"); + + return service.buildRequest(orderInfo, MethodType.POST); } /** diff --git a/pay-java-demo/src/main/java/com/egzosn/pay/demo/dao/ApyAccountRepository.java b/pay-java-demo/src/main/java/com/egzosn/pay/demo/dao/ApyAccountRepository.java index d43e5a1..3bbae60 100644 --- a/pay-java-demo/src/main/java/com/egzosn/pay/demo/dao/ApyAccountRepository.java +++ b/pay-java-demo/src/main/java/com/egzosn/pay/demo/dao/ApyAccountRepository.java @@ -109,6 +109,16 @@ public class ApyAccountRepository { apyAccount5.setMsgType(MsgType.json); apyAccount5.setTest(true); apyAccounts.put(apyAccount5.getPayId(), apyAccount5); + + ApyAccount apyAccount6 = new ApyAccount(); + apyAccount6.setPayId(6); + apyAccount6.setAppid("1AZ7HTcvrEAxYbzYx_iDZAi06GdqbjhqqQzFgPBFLxm2VUMzwlmiNUBk_y_5QNP4zWKblTuM6ZBAmxScd");//Program ID + apyAccount6.setPrivateKey("1EBMIjAag6NiRdXZxteTv0amEsmKN345xJv3bN7f_HRXSqcRJlW7PXhYXjI9sk5I4nKYOHgeqzhXCXKFo");//API password + apyAccount6.setInputCharset("UTF-8"); + apyAccount6.setPayType(PayType.payPal); + apyAccount6.setMsgType(MsgType.json); + apyAccount6.setTest(true); + apyAccounts.put(apyAccount6.getPayId(), apyAccount6); } //_____________________________________________________________ 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 19c2332..57987c7 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 @@ -181,6 +181,9 @@ public class PayPalPayService extends BasePayService{ HttpStringEntity entity = new HttpStringEntity(JSON.toJSONString(payment), ContentType.APPLICATION_JSON); entity.setHeaders(authHeader()); JSONObject resp = getHttpRequestTemplate().postForObject(getReqUrl(order.getTransactionType()), entity, JSONObject.class); + if ("created".equals(resp.getString("state")) && StringUtils.isNotEmpty(resp.getString("id"))){ + order.setOutTradeNo(resp.getString("id")); + } return resp; }