|
@@ -1,9 +1,14 @@
|
|
|
package com.izouma.nineth.web;
|
|
package com.izouma.nineth.web;
|
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
+import com.github.kevinsawicki.http.HttpRequest;
|
|
|
import com.izouma.nineth.domain.BalanceRecord;
|
|
import com.izouma.nineth.domain.BalanceRecord;
|
|
|
import com.izouma.nineth.domain.ExportWithdraw;
|
|
import com.izouma.nineth.domain.ExportWithdraw;
|
|
|
import com.izouma.nineth.domain.UserBalance;
|
|
import com.izouma.nineth.domain.UserBalance;
|
|
|
import com.izouma.nineth.dto.PageQuery;
|
|
import com.izouma.nineth.dto.PageQuery;
|
|
|
|
|
+import com.izouma.nineth.enums.BalanceType;
|
|
|
|
|
+import com.izouma.nineth.enums.PayMethod;
|
|
|
import com.izouma.nineth.exception.BusinessException;
|
|
import com.izouma.nineth.exception.BusinessException;
|
|
|
import com.izouma.nineth.repo.AutoWithdrawRecordRepo;
|
|
import com.izouma.nineth.repo.AutoWithdrawRecordRepo;
|
|
|
import com.izouma.nineth.repo.BalanceRecordRepo;
|
|
import com.izouma.nineth.repo.BalanceRecordRepo;
|
|
@@ -14,6 +19,7 @@ import com.izouma.nineth.utils.DateTimeUtils;
|
|
|
import com.izouma.nineth.utils.JpaUtils;
|
|
import com.izouma.nineth.utils.JpaUtils;
|
|
|
import com.izouma.nineth.utils.SecurityUtils;
|
|
import com.izouma.nineth.utils.SecurityUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.io.IOUtils;
|
|
import org.apache.commons.io.IOUtils;
|
|
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
|
import org.springframework.core.io.InputStreamResource;
|
|
import org.springframework.core.io.InputStreamResource;
|
|
@@ -29,6 +35,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
import java.io.File;
|
|
import java.io.File;
|
|
|
import java.io.FileInputStream;
|
|
import java.io.FileInputStream;
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.time.Duration;
|
|
import java.time.Duration;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
import java.util.concurrent.ExecutionException;
|
|
import java.util.concurrent.ExecutionException;
|
|
@@ -36,6 +43,7 @@ import java.util.concurrent.ExecutionException;
|
|
|
@RestController
|
|
@RestController
|
|
|
@RequestMapping("/userBalance")
|
|
@RequestMapping("/userBalance")
|
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
|
|
|
+@Slf4j
|
|
|
public class UserBalanceController extends BaseController {
|
|
public class UserBalanceController extends BaseController {
|
|
|
|
|
|
|
|
private final UserBalanceRepo userBalanceRepo;
|
|
private final UserBalanceRepo userBalanceRepo;
|
|
@@ -108,4 +116,30 @@ public class UserBalanceController extends BaseController {
|
|
|
// public void withdraw() {
|
|
// public void withdraw() {
|
|
|
// userBalanceService.withdraw(SecurityUtils.getAuthenticatedUser().getId());
|
|
// userBalanceService.withdraw(SecurityUtils.getAuthenticatedUser().getId());
|
|
|
// }
|
|
// }
|
|
|
|
|
+
|
|
|
|
|
+ @PostMapping(value = "/iap")
|
|
|
|
|
+ public String iap(@RequestParam String receiptData) {
|
|
|
|
|
+ String data = "{\"receipt-data\":\"" + receiptData + "\"}";
|
|
|
|
|
+ String body = HttpRequest.post("https://buy.itunes.apple.com/verifyReceipt")
|
|
|
|
|
+ .contentType("application/json")
|
|
|
|
|
+ .send(data)
|
|
|
|
|
+ .body();
|
|
|
|
|
+ JSONObject jsonObject = JSON.parseObject(body);
|
|
|
|
|
+ int status = jsonObject.getInteger("status");
|
|
|
|
|
+ if (status == 21007) {
|
|
|
|
|
+ jsonObject = JSON.parseObject(HttpRequest.post("https://sandbox.itunes.apple.com/verifyReceipt")
|
|
|
|
|
+ .contentType("application/json")
|
|
|
|
|
+ .send(data)
|
|
|
|
|
+ .body());
|
|
|
|
|
+ status = jsonObject.getInteger("status");
|
|
|
|
|
+ }
|
|
|
|
|
+ log.info("verifyReceipt {}", JSON.toJSONString(jsonObject, true));
|
|
|
|
|
+ if (status == 0) {
|
|
|
|
|
+ JSONObject inApp = jsonObject.getJSONObject("receipt").getJSONArray("in_app").getJSONObject(0);
|
|
|
|
|
+ BigDecimal amount = inApp.getBigDecimal("product_id");
|
|
|
|
|
+ userBalanceService.modifyBalance(SecurityUtils.getAuthenticatedUser().getId(), amount, BalanceType.RECHARGE,
|
|
|
|
|
+ null, false, null);
|
|
|
|
|
+ }
|
|
|
|
|
+ return "ok";
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|