Explorar el Código

开放KYC接口

test hace 7 meses
padre
commit
077e855872

+ 6 - 1
src/modules/dj/controller/admin/open.ts

@@ -188,7 +188,12 @@ export class PayOpenController extends BaseController {
   @CoolTag(TagTypes.IGNORE_TOKEN)
   @Post('/kyc/toPremium', { summary: 'kyc basic 保存' })
   public async submitPremium(@Files() files, @Fields() fields) {
-    console.log(files, fields)
     return this.ok(await this.kycOpenService.createOpenPremium(fields, files));
   }
+
+  @CoolTag(TagTypes.IGNORE_TOKEN)
+  @Post('/kyc/getCustomer', { summary: 'kyc basic 保存' })
+  public async getCustomer(@Body(ALL) payload: any) {
+    return this.ok(await this.kycOpenService.getCustomer(payload));
+  }
 }

+ 1 - 1
src/modules/dj/service/channels/sunpay.ts

@@ -156,7 +156,7 @@ export class SunPayService extends BaseService {
 
   async order(payload) {
     return {
-      payUrl: `http://kyc.fusionpay.one/?t=${payload.orderNo}`,
+      payUrl: `https://kyc.fusionpay.one/?t=${payload.orderNo}`,
       isDone: false
     };
   }

+ 11 - 2
src/modules/dj/service/kyc.ts

@@ -125,27 +125,36 @@ export class KycService extends BaseService {
       data.customerId = kyc.customerId
     }
     if (data.level > 3) {
+      data.payUrl = await this.validAndGetPayUrl(orderNo, data);
       return data;
     }
     const dailyLevel = this.getAmountLevel(order.amount);
     if (dailyLevel === 3) {
       data.levelEnd = dailyLevel;
+      data.payUrl = await this.validAndGetPayUrl(orderNo, data);
       return data;
     }
     const weekly = await this.getWeekLyLevel(order);
     if (weekly === 3) {
       data.levelEnd = dailyLevel;
+      data.payUrl = await this.validAndGetPayUrl(orderNo, data);
       return data;
     }
     const monthly = await this.getMonthlyLevel(order);
     data.levelEnd = Math.max(dailyLevel, weekly, monthly);
+    data.payUrl = await this.validAndGetPayUrl(orderNo, data);
+    return data;
+  }
+
+  async validAndGetPayUrl(orderNo, data) {
     if (data.level > data.levelEnd && data.customerId) {
       const { payUrl } = await this.toPay({
         orderNo: orderNo, customerId: data.customerId
       });
-      data.payUrl = payUrl;
+      return payUrl;
+    } else {
+      return '';
     }
-    return data;
   }
 
   async getMonthlyLevel(order) {

+ 42 - 6
src/modules/dj/service/openKyc.ts

@@ -24,6 +24,42 @@ export class KycOpenService extends BaseService {
   @Logger()
   logger: ILogger;
 
+  async validGetCustomer(payload) {
+    if (_.isEmpty(payload.mchId)) {
+      throw new Error('商户编号【mchId】不能为空');
+    }
+    if (_.isEmpty(payload.userId)) {
+      throw new Error('商户平台用户ID【userId】不能为空');
+    }
+  }
+
+  async getCustomer(payload) {
+    try {
+      this.logger.info('获取客户信息', JSON.stringify(payload));
+      await this.validGetCustomer(payload);
+      const merchant = await this.payService.validMerchant(payload.mchId);
+      await this.payService.validSign(payload, merchant);
+      const kyc = await this.kycEntity.findOneBy({
+        mchId: payload.mchId,
+        userId: payload.userId,
+        code: 'SUN_CARD',
+      })
+      if (!kyc || !kyc.customerId) {
+        return {};
+      }
+      return {
+        mchId: kyc.mchId,
+        userId: kyc.mchId,
+        kycUserId: kyc.userId,
+        country: kyc.country,
+        level: kyc.level
+      }
+    } catch (err) {
+      this.logger.error('KYC高级认证提交失败', JSON.stringify(payload), err.message);
+      throw new CoolCommException(err.message);
+    }
+  }
+
   async validPremiumParam(payload, files) {
     if (_.isEmpty(payload.mchId)) {
       throw new Error('商户编号【mchId】不能为空');
@@ -45,7 +81,7 @@ export class KycOpenService extends BaseService {
   async createOpenPremium(payload, files) {
     try {
       this.logger.info('KYC高级认证', JSON.stringify(payload));
-      if(!files) {
+      if (!files) {
         throw new Error('参数错误,请提交正确参数');
       }
       const fileObj = {};
@@ -56,8 +92,8 @@ export class KycOpenService extends BaseService {
       const merchant = await this.payService.validMerchant(payload.mchId);
       await this.payService.validSign(payload, merchant);
       const kyc = await this.kycEntity.findOneBy({ kycUserId: payload.kycUserId });
-      if (!kyc.customerId || !kyc) {
-        throw new CoolCommException('KYC user does not exist');
+      if (!kyc || !kyc.customerId) {
+        throw new CoolCommException('KYC用户不存在');
       }
       const data = await this.sunPayService.createPremium({
         customerId: kyc.customerId,
@@ -103,7 +139,7 @@ export class KycOpenService extends BaseService {
   async createOpenAdvanced(payload, files) {
     try {
       this.logger.info('KYC进阶认证', JSON.stringify(payload));
-      if(!files) {
+      if (!files) {
         throw new Error('参数错误,请提交正确参数');
       }
       const fileObj = {};
@@ -115,8 +151,8 @@ export class KycOpenService extends BaseService {
       await this.payService.validSign(payload, merchant);
 
       const kyc = await this.kycEntity.findOneBy({ kycUserId: payload.kycUserId });
-      if (!kyc.customerId || !kyc) {
-        throw new CoolCommException('KYC user does not exist');
+      if (!kyc || !kyc.customerId) {
+        throw new CoolCommException('KYC用户不存在');
       }
       const data = await this.sunPayService.createAdvanced({
         customerId: kyc.customerId,