xiongzhu hace 3 años
padre
commit
559bd488e5
Se han modificado 1 ficheros con 34 adiciones y 0 borrados
  1. 34 0
      src/main/java/com/izouma/nineth/web/UserBalanceController.java

+ 34 - 0
src/main/java/com/izouma/nineth/web/UserBalanceController.java

@@ -1,9 +1,14 @@
 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.ExportWithdraw;
 import com.izouma.nineth.domain.UserBalance;
 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.repo.AutoWithdrawRecordRepo;
 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.SecurityUtils;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.IOUtils;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.springframework.core.io.InputStreamResource;
@@ -29,6 +35,7 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.time.Duration;
 import java.time.LocalDate;
 import java.util.concurrent.ExecutionException;
@@ -36,6 +43,7 @@ import java.util.concurrent.ExecutionException;
 @RestController
 @RequestMapping("/userBalance")
 @AllArgsConstructor
+@Slf4j
 public class UserBalanceController extends BaseController {
 
     private final UserBalanceRepo               userBalanceRepo;
@@ -108,4 +116,30 @@ public class UserBalanceController extends BaseController {
 //    public void withdraw() {
 //        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";
+    }
 }