diff --git a/src/main/java/com/peanut/common/utils/KdUtils.java b/src/main/java/com/peanut/common/utils/KdUtils.java index 252e1da0..f05dce14 100644 --- a/src/main/java/com/peanut/common/utils/KdUtils.java +++ b/src/main/java/com/peanut/common/utils/KdUtils.java @@ -1,7 +1,6 @@ package com.peanut.common.utils; -import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; - +import cn.hutool.core.codec.Base64; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.security.MessageDigest; diff --git a/src/main/java/com/peanut/modules/pay/applePay/controller/ApplePayController.java b/src/main/java/com/peanut/modules/pay/applePay/controller/ApplePayController.java deleted file mode 100644 index 3ac0df70..00000000 --- a/src/main/java/com/peanut/modules/pay/applePay/controller/ApplePayController.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.peanut.modules.pay.applePay.controller; - - -import cn.hutool.crypto.SecureUtil; -import cn.hutool.json.JSONArray; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import com.peanut.common.utils.R; -import com.peanut.modules.pay.applePay.service.ApplePayService; -import com.peanut.modules.pay.applePay.utils.ApplePayUtil; -import com.peanut.modules.pay.applePay.utils.IPayNotifyPo; -import com.peanut.modules.pay.IOSPay.Result; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -@Slf4j -@RestController -@Api(tags = {"苹果内购"}) -@RequestMapping(value = "/apple") -public class ApplePayController { - @Autowired - ApplePayService applePayService; - @Autowired - ApplePayUtil applePayUtil; - - /** - * @param :TransactionID订单号 - * @param :receipt订单加密收据 - * @Description: Ios客户端内购支付 - */ -// @PostMapping 文档显示都是post请求 - @RequestMapping("/applePay") - - public R doIosRequest(@RequestParam("receipt") String receipt, @RequestParam("TransactionID") String TransactionID) { - String verifyResult = applePayUtil.buyAppVerify(receipt, 0); - //苹果服务器没有返回验证结果 - if (verifyResult == null) { - return R.error(500,"服务器未接收到验证结果!"); -// return Result.failed(ResultCode.APPLE_NULL); - } else { - // -// return applePayService.getAppPay(verifyResult, TransactionID); - return R.ok(); -// return applePayService.doIosRequest(TransactionID,receipt,userId); - - } - } - - - /** - * IOS支付成功后通过APP回调服务器 - * - * @param iPayNotifyPo - * @return - */ - @ApiOperation("ios支付成功后验证结果") - @RequestMapping(value = "iPayNotify/", method = RequestMethod.POST) - @ResponseBody - public Result iPayNotify(@RequestBody IPayNotifyPo iPayNotifyPo) { - log.info("ios支付成功后验证结果[前端传递的ios支付参数:{}]", iPayNotifyPo.toString()); - System.out.println("支付"); - String receipt = iPayNotifyPo.getTransactionReceipt(); - // 拿到收据的MD5 - String receiptMd5 = SecureUtil.md5(receipt); - // 查询数据库,看是否是己经验证过的该支付收据 -// boolean existsIOSReceipt = paymentService.isExistsIOSReceipt(receiptMd5); -// if (existsIOSReceipt) { -// return Result.error("该充值已完成"); -// } - - // 1.先线上测试 发送平台验证 - - - String verifyResult = ApplePayUtil.buyAppVerify(receipt, 0); - - - log.info("1,苹果返回的参数:{}]", verifyResult); - if (verifyResult == null) { - // 苹果服务器没有返回验证结果 - log.info("苹果服务器没有返回验证结果"); - return Result.error("订单没有找到"); - } else { - // 苹果验证有返回结果 - JSONObject job = JSONUtil.parseObj(verifyResult); - log.info("2,[苹果验证返回的json串:{}]", job.toString()); - String states = job.getStr("status"); - - if ("21007".equals(states)) { - log.debug("是沙盒环境,应沙盒测试,否则执行下面"); - // 是沙盒环境,应沙盒测试,否则执行下面 - // 2.再沙盒测试 发送平台验证 - verifyResult = ApplePayUtil.buyAppVerify(receipt, 0); - job = JSONUtil.parseObj(verifyResult); - log.debug("3,沙盒环境验证返回的json字符串=" + job.toString()); - states = job.getStr("status"); - } - if ("0".equals(states)) { // 前端所提供的收据是有效的 验证成功 - log.debug("前端所提供的收据是有效的 验证成功"); - String r_receipt = job.getStr("receipt"); - JSONObject returnJson = JSONUtil.parseObj(r_receipt); - String in_app = returnJson.getStr("in_app"); - - /** - * in_app说明: - * 验证票据返回的receipt里面的in_app字段,这个字段包含了所有你未完成交易的票据信息。也就是在上面说到的APP完成交易之后,这个票据信息,就会从in_app中消失。 - * 如果APP不完成交易,这个票据信息就会在in_app中一直保留。(这个情况可能仅限于你的商品类型为消耗型) - * - * 知道了事件的原委,就很好优化解决了,方案有2个 - * 1.对票据返回的in_app数据全部进行处理,没有充值的全部进行充值 - * 2.仅对最新的充值信息进行处理(我们采取的方案) - * - * 因为采用一方案: - * 如果用户仅进行了一次充值,该充值未到账,他不再进行充值了,那么会无法导致。 - * 如果他通过客服的途径已经进行了补充充值,那么他在下一次充值的时候依旧会把之前的产品票据带回,这时候有可能出现重复充值的情况 - * - * 以上说明是我在网上找到的,可以查看原文 - * https://www.cnblogs.com/widgetbox/p/8241333.html - */ - - JSONArray jsonArray = JSONUtil.parseArray(in_app); - if (jsonArray.size() > 0) { - int index = 0; - JSONObject o = JSONUtil.parseObj(jsonArray.get(index)); - String transaction_id = o.getStr("transaction_id"); // 订单号 - String product_id = o.getStr("product_id"); // 产品id,也就是支付金额 - String purchase_date_ms = o.getStr("purchase_date_ms"); // 支付时间 -// -// // 添加支付金额 -// Result iosChargeSuccess = paymentService.iosChargeSuccess(transaction_id, product_id, purchase_date_ms, receiptMd5, iPayNotifyPo.getMoneyId(), iPayNotifyPo.getUserId()); -// int i =0; -// int a = 0; -// if (iosChargeSuccess.getCode().equals(200)){ -// i = paymentService.updateCurrentState(iPayNotifyPo.getPayId(),iPayNotifyPo.getUserId(),a); -// }else { -// a = 1; -// i = paymentService.updateCurrentState(iPayNotifyPo.getPayId(),iPayNotifyPo.getUserId(),a); -// } -// -// return iosChargeSuccess; - } - } else { - return Result.error("收到数据有误"); - } - } - return Result.ok(); - } -} diff --git a/src/main/java/com/peanut/modules/pay/applePay/controller/IapController.java b/src/main/java/com/peanut/modules/pay/applePay/controller/IapController.java deleted file mode 100644 index 9a8b24a6..00000000 --- a/src/main/java/com/peanut/modules/pay/applePay/controller/IapController.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.peanut.modules.pay.applePay.controller; - -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.net.URL; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; - -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; -import org.springframework.web.bind.annotation.RequestMapping; - -import com.alibaba.fastjson.JSONObject; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author : - * @date : - * @Version: 1.0 - * @Desc : 苹果支付 参考地址:https://www.cnblogs.com/shoshana-kong/p/10991753.html - * sendHttpsCoon 方法里面包含了增加的业务逻辑 - * 本类引入多种的Json序列化工具,选择了Hutool - */ - - - -@Slf4j -@RestController -@RequestMapping("iap") -public class IapController { - - //购买凭证验证地址 - private static final String certificateUrl = "https://buy.itunes.apple.com/verifyReceipt"; - - //测试的购买凭证验证地址 - private static final String certificateUrlTest = "https://sandbox.itunes.apple.com/verifyReceipt"; - - /** - * 重写X509TrustManager - */ - private static TrustManager myX509TrustManager = new X509TrustManager() { - - @Override - public X509Certificate[] getAcceptedIssuers() { - return null; - } - - @Override - public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { - - } - - @Override - public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { - - } - }; - - /** - * 接收iOS端发过来的购买凭证 - * @param userId - * @param receipt - * @param chooseEnv - */ - @RequestMapping("/setIapCertificate") - public String setIapCertificate(String userId, String receiptData, boolean chooseEnv){ - if(StringUtils.isEmpty(userId) || StringUtils.isEmpty(receiptData)){ - return null; - - } - String url = null; - url = chooseEnv == true? certificateUrl:certificateUrlTest; - final String certificateCode = receiptData; - if(StringUtils.isNotEmpty(certificateCode)){ - return sendHttpsCoon(url, certificateCode); - }else{ - return null; - } - } - - /** - * 发送请求 - * @param url - * @param strings - * @return - */ - private String sendHttpsCoon(String url, String code){ - if(url.isEmpty()){ - return null; - } - try { - //设置SSLContext - SSLContext ssl = SSLContext.getInstance("SSL"); - ssl.init(null, new TrustManager[]{myX509TrustManager}, null); - - //打开连接 - HttpsURLConnection conn = (HttpsURLConnection) new URL(url).openConnection(); - //设置套接工厂 - conn.setSSLSocketFactory(ssl.getSocketFactory()); - //加入数据 - conn.setRequestMethod("POST"); - conn.setDoOutput(true); - conn.setRequestProperty("Content-type","application/json"); - - JSONObject obj = new JSONObject(); - obj.put("receipt-data", code); - - BufferedOutputStream buffOutStr = new BufferedOutputStream(conn.getOutputStream()); - buffOutStr.write(obj.toString().getBytes()); - buffOutStr.flush(); - buffOutStr.close(); - - //获取输入流 - BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); - - String line = null; - StringBuffer sb = new StringBuffer(); - while((line = reader.readLine())!= null){ - sb.append(line); - } - return sb.toString(); - - } catch (Exception e) { - return null; - } - } -} - diff --git a/src/main/java/com/peanut/modules/pay/applePay/service/ApplePayService.java b/src/main/java/com/peanut/modules/pay/applePay/service/ApplePayService.java deleted file mode 100644 index 250332b5..00000000 --- a/src/main/java/com/peanut/modules/pay/applePay/service/ApplePayService.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.peanut.modules.pay.applePay.service; - -import com.peanut.modules.pay.IOSPay.Result; -import org.springframework.stereotype.Service; - -@Service -public interface ApplePayService { - - /** - * 看是否是己经验证过的该支付收据 - * @param receiptMd5 - * @return - */ - - public boolean isExistsIOSReceipt(String receiptMd5); - - - int updateCurrentState(String payId, String userId, int a); - - /** - * IOS支付 - * @param transaction_id 订单号 - * @param product_id 产品id,也就是支付金额 - * @param purchase_date_ms 支付时间 - * @param receiptMd5 拿到收据的MD5 - * @param moneyId 金额id - */ - Result iosChargeSuccess(String transaction_id, String product_id, String purchase_date_ms, String receiptMd5, String moneyId, String userId); - - - -// R getAppPay(String verifyResult, String transactionID); - - -} diff --git a/src/main/java/com/peanut/modules/pay/applePay/service/impl/ApplePayServiceImpl.java b/src/main/java/com/peanut/modules/pay/applePay/service/impl/ApplePayServiceImpl.java deleted file mode 100644 index 7c1bd5fd..00000000 --- a/src/main/java/com/peanut/modules/pay/applePay/service/impl/ApplePayServiceImpl.java +++ /dev/null @@ -1,161 +0,0 @@ -package com.peanut.modules.pay.applePay.service.impl; - -import com.peanut.common.utils.DateUtils; -import com.peanut.modules.book.service.*; -import com.peanut.modules.pay.IOSPay.Result; -import com.peanut.modules.pay.applePay.service.ApplePayService; -import com.peanut.modules.pay.applePay.utils.*; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.*; - - -@Service("ApplePayService") -@Slf4j -@AllArgsConstructor -public class ApplePayServiceImpl implements ApplePayService { - -// 日志记录,系统支付模块记录日志信息输出到sys-pay - private static final Logger logger = LoggerFactory.getLogger("sys-pay"); - - @Autowired - private MyUserService userService; - @Autowired - private BuyOrderService buyOrderService; - @Autowired - private TransactionDetailsService transactionDetailsService; - @Autowired - private ApplePayUtil applePayUtil; - @Autowired - private BookBuyConfigService bookBuyConfigService; - @Autowired - private PayPaymentOrderService payPaymentOrderService; - @Autowired - public static final String TRADE_TYPE_APP = "APP"; - @Autowired - private JdbcTemplate jdbcTemplate; - - @Override - public boolean isExistsIOSReceipt(String receiptMd5) { - return false; - } - - - @Resource - private TsBillMapper tsBillMapper; - /** - * 支付成功之后将当前订单的状态改为1 - * - * @param payId - * @param userId - * @param a - * @return - */ - @Override - public int updateCurrentState(String payId, String userId, int a) { - return 0; - } - - - /** - * IOS支付 - * @param transaction_id 订单号 - * @param product_id 产品id,也就是支付金额 - * @param purchase_date_ms 支付时间 - * @param receiptMd5 拿到收据的MD5 - * @param moneyId 金额id - */ - @Override - public Result iosChargeSuccess(String transaction_id, String product_id, String purchase_date_ms, String receiptMd5, String moneyId, String userId) { - /** - * IOS支付 - * @param transaction_id 订单号 - * @param product_id 产品id,也就是支付金额 - * @param purchase_date_ms 支付时间 - * @param receiptMd5 拿到收据的MD5 - * @param moneyId 金额id - */ - - try { - List> queryForList = jdbcTemplate.queryForList("SELECT id,showcoin_num,give_showcoin_num,rmb_price from tsm_payment_config_ios where product_id =? ", - moneyId); - - if (queryForList.size() > 0) { - String bill_content = "充值";//账单产生方式 - int bill_state = 1;// 充值 - int current_state = 1;// 支付成功 - int payment_method = 3;// IOS - String date = DateUtils.DATE_TIME_PATTERN;// 当前时间 - BigDecimal amountofmoney = new BigDecimal(queryForList.get(0).get("rmb_price").toString());// 金额 - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - // 生成消费订单 - //String sql = "insert into ts_bill (id,users_id,payment_config_id,bill_num,bill_content,bill_sumofmoney,bill_state,current_state,payment_method,receipt,createtdate) value(?,?,?,?,?,?,?,?,?,?,?);"; - //jdbcTemplate.update(sql, uuid,userId,moneyId,transaction_id,bill_content,amountofmoney,bill_state,current_state,payment_method,receiptMd5,date); - - String type = "1";// 加 - long showcoin_num = Long.parseLong(queryForList.get(0).get("showcoin_num").toString()) + Long.parseLong(queryForList.get(0).get("give_showcoin_num").toString()); - - - // 此操作为需求实际场景可根据用户产品需求更改 - //commonServiceI.updShowcoinNum(type, userId, showcoin_num); - - return Result.ok("支付成功"); - } else { - return Result.error("操作异常,所选金额不存在"); - } - } catch (Exception e) { - return Result.error("ios支付异常"); - } - - - } - -// @Override -// @Transactional -// public R getAppPay(String verifyResult, String transactionID) { -// log.info("##########################苹果支付验证!########################"); -// JSONObject jsonObject = JSONObject.parseObject(verifyResult); -// String status = jsonObject.getString("status"); -// //判断是否验证成功 -// if ("0".equals(status)) { -// //app端所提供的收据是有效的,验证成功 -// String receipt = jsonObject.getString("receipt"); -// JSONObject returnJson = JSONObject.parseObject(receipt); -// String in_app = returnJson.getString("in_app"); -// JSONObject in_appJson = JSONObject.parseObject(in_app.substring(1, in_app.length() - 1)); -// String transactionId = in_appJson.getString("transaction_id"); -// String in_app_ownership_type = in_appJson.getString("in_app_ownership_type"); -// //如果验证后的订单号与app端传来的订单号一致并且状态为已支付状态则处理自己的业务 -// if (transactionID.equals(transactionId) && "PURCHASED".equals(in_app_ownership_type)) { -// //===================处理自己的业务 ============================ -// BuyOrder order = this.buyOrderService.getOne(new QueryWrapper().eq("order_sn", transactionId )); -// PayWechatOrderEntity wechat = new PayWechatOrderEntity(); -// -// -// } -// return R.ok(); -// } -// return R.error("苹果内购验证失败"); -// } - - - - -} - - - - - - - - - - diff --git a/src/main/java/com/peanut/modules/pay/applePay/utils/AddIosOrderPM.java b/src/main/java/com/peanut/modules/pay/applePay/utils/AddIosOrderPM.java deleted file mode 100644 index 6a4f4c27..00000000 --- a/src/main/java/com/peanut/modules/pay/applePay/utils/AddIosOrderPM.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.peanut.modules.pay.applePay.utils; - - -import io.swagger.annotations.ApiModel; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -//购买所需参数类 -@ApiModel(value = "支付数据字段对比") -@Data -@AllArgsConstructor //有参数的构造方法 -@NoArgsConstructor //无参构造方法 -public class AddIosOrderPM implements Serializable { - -// -// /** -// * ios支付所需参数 -// */ -// private String receipt; -// -// /** -// * 用户id -// */ -// private Integer userId; -// - - - - /** - * 交易编号 - * eg:1000000852134037 交易唯一标识符; - */ - private String transaction_id; - /** - * APP所有权类型 eg: PURCHASED为沙箱环境 - * eg:PURCHASED - */ - private String in_app_ownership_type; - /** - * 原来的交易编号 原始购买标识符 - * eg:1000000852108057 - */ - private String original_transaction_id; - /** - * 数量 - * eg:1 购买消耗品的数量 - */ - private String quantity; - /** - * 唯一标识符 - * eg:1e10a9ec617549f986765b8546eddd0a9f349f15 - */ - private String unique_identifier; - /** - * item_id - * eg:1578853844 - */ - private String item_id; - /** - * 处于介绍报价期 - * eg:false - */ - private String is_in_intro_offer_period; - /** - * 购买日期 - * eg:2021-08-02 03:57:56 America/Los_Angeles - */ - private String purchase_date_pst; - /** - * 原始购买日期 ms - * eg:1627900203000 - */ - private String original_purchase_date_ms; - /** - * 原始购买日期 - * eg:2021-08-02 03:30:03 America/Los_Angeles 太平洋时区 - */ - private String original_purchase_date_pst; - /** - * 是试用期 - * eg:false - */ - private String is_trial_period; - /** - * 原始购买日期 - * eg:2021-08-02 10:30:03 Etc/GMT 原始购买时间 ISO 8601日期格式 - */ - private String original_purchase_date; - /** - * 购买日期ms 时间日期 - */ - private String purchase_date_ms; - /** - * 产品id 购买产品唯一标识符 - * eg:2 - */ - private String product_id; - private String bvrs; - /** - * 购买日期 - * eg:2021-08-02 10:57:56 Etc/GMT 时间日期 - */ - private String purchase_date; - private String bid; - /** - * 唯一供应商标识符 - * eg:A1D7647F-019C-4D15-A23C-3A48CFBFF4E3 - */ - private String unique_vendor_identifier; - - - -} diff --git a/src/main/java/com/peanut/modules/pay/applePay/utils/ApplePayUtil.java b/src/main/java/com/peanut/modules/pay/applePay/utils/ApplePayUtil.java deleted file mode 100644 index 1e2b41dd..00000000 --- a/src/main/java/com/peanut/modules/pay/applePay/utils/ApplePayUtil.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.peanut.modules.pay.applePay.utils; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; -import sun.misc.BASE64Decoder; - -import javax.net.ssl.*; -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; -import java.util.Locale; - -@Component -public class ApplePayUtil { - - - private static class TrustAnyTrustManager implements X509TrustManager { - - - @Override - public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { - } - - @Override - public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { - } - - @Override - public X509Certificate[] getAcceptedIssuers() { - return new X509Certificate[]{}; - } - } - - private static class TrustAnyHostnameVerifier implements HostnameVerifier { - @Override - public boolean verify(String hostname, SSLSession session) { - return true; - } - } - - private static String url_apple_pay = "https://buy.itunes.apple.com/verifyReceipt"; - - - - private static String test_url_apple_pay = "https://sandbox.itunes.apple.com/verifyReceipt"; - - - /** - * 苹果服务器验证 - * - * @param receipt 账单 - * @return null 或返回结果 - * @url 要验证的地址 沙盒 https://sandbox.itunes.apple.com/verifyReceipt - */ - public static String buyAppVerify(String receipt, int type) { - //环境判断 线上/开发环境用不同的请求链接 - try { - String url = null; - if (type == 0) { - url = test_url_apple_pay; //沙盒环境,测试 - } else { - url = url_apple_pay; //线上环境 - } - - //String url = EnvUtils.isOnline() ?url_verify : url_sandbox; - SSLContext sc = SSLContext.getInstance("SSL"); - sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom()); - URL console = new URL(url); - HttpsURLConnection conn = (HttpsURLConnection) console.openConnection(); - conn.setSSLSocketFactory(sc.getSocketFactory()); - conn.setHostnameVerifier(new TrustAnyHostnameVerifier()); - conn.setRequestMethod("POST"); - conn.setRequestProperty("content-type", "text/json"); - conn.setRequestProperty("Proxy-Connection", "Keep-Alive"); - conn.setDoInput(true); - conn.setDoOutput(true); - //r如果有错误就注释 - conn.setConnectTimeout(3000); - BufferedOutputStream hurlBufOus = new BufferedOutputStream(conn.getOutputStream()); - //拼成固定的格式传给平台 - String str = String.format(Locale.CHINA, "{\"receipt-data\":\"" + receipt + "\"}"); - // 直接将receipt当参数发到苹果验证就行,不用拼格 - String str1 = String.format(Locale.CHINA, receipt); - hurlBufOus.write(str.getBytes()); - hurlBufOus.flush(); - - - InputStream is = conn.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - String line = null; - StringBuilder sb = new StringBuilder(); - while ((line = reader.readLine()) != null) { - sb.append(line); - } - return sb.toString(); - } catch (Exception ex) { - System.out.println("苹果服务器异常"); - ex.printStackTrace(); - } - return null; - - } - - - - - - - - - - - //视情况而定,苹果app进行支付,然后收到苹果的收据(一串很长的BASE64编码的字符串) - /** - * 用BASE64加密 - * - * @param str - * @return - */ - public static String getBASE64(String str) { - byte[] b = str.getBytes(); - String s = null; - if (b != null) { - s = new sun.misc.BASE64Encoder().encode(b); - } - return s; - } - - - /** - * 解密BASE64字窜 - * @param s - * @return - */ - public static String getFromBASE64(String s) { - byte[] b = null; - if (s != null) { - BASE64Decoder decoder = new BASE64Decoder(); - try { - b = decoder.decodeBuffer(s); - return new String(b); - } catch (Exception e) { - e.printStackTrace(); - } - } - return new String(b); - } - - - - - - - -} diff --git a/src/main/java/com/peanut/modules/pay/applePay/utils/IPayNotifyPo.java b/src/main/java/com/peanut/modules/pay/applePay/utils/IPayNotifyPo.java deleted file mode 100644 index 1d5cb353..00000000 --- a/src/main/java/com/peanut/modules/pay/applePay/utils/IPayNotifyPo.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.peanut.modules.pay.applePay.utils; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class IPayNotifyPo { - @ApiModelProperty("苹果支付凭证") - private String transactionReceipt; - - @ApiModelProperty("苹果支付单号") - private String payId; - - @ApiModelProperty("用户id") - private String userId; - - @ApiModelProperty("金额id") - private String moneyId; - - -} diff --git a/src/main/java/com/peanut/modules/pay/applePay/utils/TsBill.java b/src/main/java/com/peanut/modules/pay/applePay/utils/TsBill.java deleted file mode 100644 index 8e5a6717..00000000 --- a/src/main/java/com/peanut/modules/pay/applePay/utils/TsBill.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.peanut.modules.pay.applePay.utils; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; - -import java.io.Serializable; - -@Data -@AllArgsConstructor -@NoArgsConstructor -@Accessors(chain = true) -@ApiModel("订单号") -public class TsBill implements Serializable { - private static final long serialVersionUID = 1L; -// @ApiModelProperty("苹果支付凭证") -// private String transactionReceipt; -// -// @ApiModelProperty("苹果支付单号") -// private String payId; -// iOS端支付完成,苹果返回给iOS端的那个receiptData app返回的数据 -// @ApiModelProperty("用户id") -// private String userId; -// -// @ApiModelProperty("金额id") -// private String moneyId; -// @ApiModelProperty("") -// private String currentState; -// @ApiModelProperty("IOS内购商品Id") -// private String product_id; // IOS内购商品Id -// @ApiModelProperty("应用内购买的时间") -// private String purchase_date_pst; // 应用内购买的时间 -// @ApiModelProperty("购买的消费品数量") -// private String quantity; // 购买的消费品数量 -// @ApiModelProperty("交易的唯一标识符") -// private String transaction_id; // -// -// @ApiModelProperty("支付时间") -// private String purchase_date_ms; // -// @ApiModelProperty("拿到收据的MD5") -// private String receiptMd5; // -// @ApiModelProperty("拿到收据的MD5") -// private String BillNum; // - - - - @ApiModelProperty("主键ID") - private String id; - @ApiModelProperty("用户ID") - private String usersId; - @ApiModelProperty("充值配置ID") - private String paymentConfigId; - @ApiModelProperty("交易单号,根据当前的28位当前时间加上11位随机数字对上的") - private String billNum; - @ApiModelProperty("交易号") - private String tradeNo; - @ApiModelProperty("账单生成方式,比如充值,说说币之类的") - private String billContent; - @ApiModelProperty("账单对应的金额id") - private String billSumofmoney; - @ApiModelProperty("账单类型还是充值") - private Integer billState; - @ApiModelProperty(" 当前状态,0是支付失败,1是支付成功,10是待支付") - private Integer currentState; - @ApiModelProperty("支付方式,0是虚拟币,1是支付宝,2是微信,3是ios") - private Integer paymentMethod; - @ApiModelProperty("收据MD5,仅ios可用") - private String receipt; - @ApiModelProperty("创集时间") - private String createtdate; - @ApiModelProperty("修改时间") - private String updatedate; - - - -} diff --git a/src/main/java/com/peanut/modules/pay/applePay/utils/TsBillMapper.java b/src/main/java/com/peanut/modules/pay/applePay/utils/TsBillMapper.java deleted file mode 100644 index 13266c75..00000000 --- a/src/main/java/com/peanut/modules/pay/applePay/utils/TsBillMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.peanut.modules.pay.applePay.utils; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -import org.apache.ibatis.annotations.Mapper; - -/** - * @author talkmate - */ -@Mapper -public interface TsBillMapper extends BaseMapper{ - -}