|
@@ -0,0 +1,159 @@
|
|
|
+package com.ym.mec.thirdparty.adapay;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.huifu.adapay.AdaPay;
|
|
|
+import com.huifu.adapay.demo.BaseDemo;
|
|
|
+import com.huifu.adapay.demo.NotifyCallbackDemo;
|
|
|
+import com.huifu.adapay.exception.BaseAdaPayException;
|
|
|
+import com.huifu.adapay.model.DeviceInfo;
|
|
|
+import com.huifu.adapay.model.payment.*;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author jane.zhao
|
|
|
+ */
|
|
|
+public class Pay {
|
|
|
+ private static final String appId = "app_7d87c043-aae3-4357-9b2c-269349a980d6";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 运行支付类接口
|
|
|
+ * @return paymentId
|
|
|
+ * @throws Exception 异常
|
|
|
+ */
|
|
|
+ public static void init() throws Exception {
|
|
|
+ //apiKey,商户联调用
|
|
|
+ String apiKey = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176";
|
|
|
+ //apiKey,真实交易用(live)
|
|
|
+ String apiKeyLive = "api_live_9c14f264-e390-41df-984d-df15a6952031";
|
|
|
+ //公钥
|
|
|
+ String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwN6xgd6Ad8v2hIIsQVnbt8a3JituR8o4Tc3B5WlcFR55bz4OMqrG/356Ur3cPbc2Fe8ArNd/0gZbC9q56Eb16JTkVNA/fye4SXznWxdyBPR7+guuJZHc/VW2fKH2lfZ2P3Tt0QkKZZoawYOGSMdIvO+WqK44updyax0ikK6JlNQIDAQAB";
|
|
|
+ //私钥
|
|
|
+ String privateKey= "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0=";
|
|
|
+
|
|
|
+ //设置AdaPay全局参数,不同环境设置不同的apiKey/pubKey/privateKey
|
|
|
+ AdaPay.apiKey = apiKeyLive;
|
|
|
+ AdaPay.pubKey = pubKey;
|
|
|
+ AdaPay.privateKey = privateKey;
|
|
|
+ AdaPay.debug = true;
|
|
|
+
|
|
|
+ //启动 mqtt 异步监听
|
|
|
+ AdaPay.iNotifyCallback = new NotifyCallbackDemo();
|
|
|
+ AdaPay.startNotifyListener();
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String executePaymentTest() throws Exception{
|
|
|
+ //test chargeId = "002112019080716223300005091372336111616";
|
|
|
+ Pay demo = new Pay();
|
|
|
+ //支付接口
|
|
|
+ String orderNo = "jsdk_payment_"+System.currentTimeMillis();
|
|
|
+ String payChannel = PayChannelEnum.ALIPAY_QR.getCode();
|
|
|
+ BigDecimal amount = new BigDecimal("0.01");
|
|
|
+ String orderSubject = "测试大雅订单";
|
|
|
+ String orderBody = "测试大雅订单";
|
|
|
+ Payment payment = Pay.executePayment(amount,orderNo,payChannel,orderSubject,orderBody);
|
|
|
+ //支付查询接口
|
|
|
+ //demo.queryPayment(payment.getId());
|
|
|
+ //关单接口
|
|
|
+ //demo.closePayment(payment.getId());
|
|
|
+
|
|
|
+ return payment.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 执行一个支付交易
|
|
|
+ * @return 创建的支付对象
|
|
|
+ * @throws Exception 异常
|
|
|
+ */
|
|
|
+ public static Payment executePayment(BigDecimal amount,String orderNo,String payChannel,String orderSubject,String orderBody) throws Exception {
|
|
|
+ init();
|
|
|
+ System.out.println("=======execute payment begin=======");
|
|
|
+ //创建支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/04-trade.html#id3
|
|
|
+ Map<String, Object> paymentParams = new HashMap<>(10);
|
|
|
+ paymentParams.put("app_id", appId);
|
|
|
+ paymentParams.put("order_no", orderNo);
|
|
|
+ paymentParams.put("pay_channel", payChannel);
|
|
|
+ paymentParams.put("pay_amt", amount);
|
|
|
+ paymentParams.put("currency", CurrencyEnum.CNY.getCode());
|
|
|
+ paymentParams.put("goods_title", orderSubject);
|
|
|
+ paymentParams.put("goods_desc", orderBody);
|
|
|
+
|
|
|
+ DeviceInfo deviceInfo = new DeviceInfo();
|
|
|
+ deviceInfo.setDeviceType(DeviceTypeEnum.MOBILE.getCode());
|
|
|
+ deviceInfo.setDeviceIp("127.0.0.1");
|
|
|
+ paymentParams.put("device_info", deviceInfo);
|
|
|
+
|
|
|
+ List<GoodsDetail> goodsDetailList = new ArrayList<>();
|
|
|
+ GoodsDetail goodsDetail = new GoodsDetail();
|
|
|
+ goodsDetail.setGoodsId("your goods id");
|
|
|
+ goodsDetail.setGoodsName("your goods name");
|
|
|
+ goodsDetail.setQuantity("1");
|
|
|
+ goodsDetail.setPrice("100.00");
|
|
|
+ goodsDetailList.add(goodsDetail);
|
|
|
+
|
|
|
+ PromotionDetail promotionDetail = new PromotionDetail();
|
|
|
+ promotionDetail.setGoodsDetail(goodsDetailList);
|
|
|
+ promotionDetail.setCostPrice("100.00");
|
|
|
+
|
|
|
+ PaymentExpend expend = new PaymentExpend();
|
|
|
+ expend.setPromotionDetail(promotionDetail);
|
|
|
+ expend.setBuyerId("2088012928900274");
|
|
|
+ expend.setBuyerLogonId("");
|
|
|
+
|
|
|
+ paymentParams.put("expend", expend);
|
|
|
+
|
|
|
+ //调用sdk方法,创建支付,得到支付对象
|
|
|
+ Payment payment = null;
|
|
|
+ try {
|
|
|
+ payment = Payment.create(paymentParams);
|
|
|
+ } catch (BaseAdaPayException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ System.out.println("payment result="+JSON.toJSONString(payment));
|
|
|
+ return payment;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 关闭一个支付交易
|
|
|
+ * @param paymentId 要关闭的支付id
|
|
|
+ * @return 关闭的支付对象
|
|
|
+ * @throws Exception 异常
|
|
|
+ */
|
|
|
+ public Payment closePayment(String paymentId) throws Exception{
|
|
|
+ System.out.println("=======close payment begin=======");
|
|
|
+ //关闭支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/04-trade.html#id11
|
|
|
+ //调用sdk方法,关闭支付,得到支付对象
|
|
|
+ Payment payment = null;
|
|
|
+ try {
|
|
|
+ payment = Payment.close(paymentId);
|
|
|
+ } catch (BaseAdaPayException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ System.out.println("close payment result="+JSON.toJSONString(payment));
|
|
|
+ return payment;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询一个支付交易
|
|
|
+ * @param paymentId 要查询的支付id
|
|
|
+ * @return 查询的支付对象
|
|
|
+ * @throws Exception 异常
|
|
|
+ */
|
|
|
+ public Payment queryPayment(String paymentId) throws Exception{
|
|
|
+ System.out.println("=======query payment begin=======");
|
|
|
+ //查询支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/04-trade.html#id7
|
|
|
+ //调用sdk方法,查询支付交易,得到支付对象
|
|
|
+ Payment payment = null;
|
|
|
+ try {
|
|
|
+ payment = Payment.query(paymentId);
|
|
|
+ } catch (BaseAdaPayException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ System.out.println("query payment result="+JSON.toJSONString(payment));
|
|
|
+ return payment;
|
|
|
+ }
|
|
|
+}
|