PG 수정
- 휴대폰 결제: 웰컴페이먼츠 - 나머지 : 헥토파이낸스(세틀뱅크)
This commit is contained in:
		| @@ -19,6 +19,7 @@ enum CanApi { | ||||
|      | ||||
|     case pgChargeCan(request: PgChargeRequest) | ||||
|     case pgVerify(request: PgVerifyRequest) | ||||
|     case pgVerifyHecto(request: PgVerifyRequest) | ||||
|      | ||||
|     case useCanCoupon(request: UseCanCouponRequest) | ||||
| } | ||||
| @@ -54,6 +55,9 @@ extension CanApi: TargetType { | ||||
|         case .pgVerify: | ||||
|             return "/charge/verify" | ||||
|              | ||||
|         case .pgVerifyHecto: | ||||
|             return "/charge/verify/hecto" | ||||
|              | ||||
|         case .useCanCoupon: | ||||
|             return "/can/coupon/use" | ||||
|         } | ||||
| @@ -64,7 +68,7 @@ extension CanApi: TargetType { | ||||
|         case .getCanStatus, .getCanChargeStatus, .getCanUseStatus, .getCans: | ||||
|             return .get | ||||
|              | ||||
|         case .chargeCan, .verify, .pgChargeCan, .pgVerify, .useCanCoupon: | ||||
|         case .chargeCan, .verify, .pgChargeCan, .pgVerify, .pgVerifyHecto, .useCanCoupon: | ||||
|             return .post | ||||
|         } | ||||
|     } | ||||
| @@ -103,6 +107,9 @@ extension CanApi: TargetType { | ||||
|         case .pgVerify(let request): | ||||
|             return .requestJSONEncodable(request) | ||||
|              | ||||
|         case .pgVerifyHecto(let request): | ||||
|             return .requestJSONEncodable(request) | ||||
|              | ||||
|         case .useCanCoupon(let request): | ||||
|             return .requestJSONEncodable(request) | ||||
|         } | ||||
|   | ||||
| @@ -41,6 +41,10 @@ final class CanRepository { | ||||
|         return api.requestPublisher(.pgVerify(request: PgVerifyRequest(receiptId: receiptId, orderId: orderId))) | ||||
|     } | ||||
|      | ||||
|     func pgVerifyHecto(receiptId: String, orderId: String) -> AnyPublisher<Response, MoyaError> { | ||||
|         return api.requestPublisher(.pgVerifyHecto(request: PgVerifyRequest(receiptId: receiptId, orderId: orderId))) | ||||
|     } | ||||
|      | ||||
|     func getCans() -> AnyPublisher<Response, MoyaError> { | ||||
|         return api.requestPublisher(.getCans) | ||||
|     } | ||||
|   | ||||
| @@ -11,8 +11,8 @@ import Combine | ||||
| import Bootpay | ||||
|  | ||||
| enum PaymentMethod: String { | ||||
|     case card = "디지털카드" | ||||
|     case bank = "디지털계좌이체" | ||||
|     case card = "카드" | ||||
|     case bank = "계좌이체" | ||||
|     case phone = "휴대폰" | ||||
| } | ||||
|  | ||||
| @@ -55,6 +55,14 @@ final class CanPgPaymentViewModel: ObservableObject { | ||||
|                         payload.orderId = "\(data.chargeId)" | ||||
|                         payload.method = paymentMethod!.rawValue | ||||
|                          | ||||
|                         if paymentMethod == .phone { | ||||
|                             let bootUser = BootUser() | ||||
|                             bootUser.userId = "\(UserDefaults.int(forKey: .userId))" | ||||
|                             bootUser.username = UserDefaults.string(forKey: .nickname) | ||||
|                              | ||||
|                             payload.user = bootUser | ||||
|                         } | ||||
|                          | ||||
|                         onSuccess() | ||||
|                     } else { | ||||
|                         if let message = decoded.message { | ||||
| @@ -82,45 +90,84 @@ final class CanPgPaymentViewModel: ObservableObject { | ||||
|             let receiptId = data["receipt_id"] as! String | ||||
|             let orderId = data["order_id"] as! String | ||||
|              | ||||
|             repository.pgVerify(receiptId: receiptId, orderId: orderId) | ||||
|                 .sink { result in | ||||
|                     switch result { | ||||
|                     case .finished: | ||||
|                         DEBUG_LOG("finish") | ||||
|                     case .failure(let error): | ||||
|                         ERROR_LOG(error.localizedDescription) | ||||
|                     } | ||||
|                 } receiveValue: { [unowned self] response in | ||||
|                     self.isLoading = false | ||||
|                     let responseData = response.data | ||||
|             if paymentMethod == .phone { | ||||
|                 repository.pgVerify(receiptId: receiptId, orderId: orderId) | ||||
|                     .sink { result in | ||||
|                         switch result { | ||||
|                         case .finished: | ||||
|                             DEBUG_LOG("finish") | ||||
|                         case .failure(let error): | ||||
|                             ERROR_LOG(error.localizedDescription) | ||||
|                         } | ||||
|                     } receiveValue: { [unowned self] response in | ||||
|                         self.isLoading = false | ||||
|                         let responseData = response.data | ||||
|                          | ||||
|                     do { | ||||
|                         let jsonDecoder = JSONDecoder() | ||||
|                         let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData) | ||||
|                         do { | ||||
|                             let jsonDecoder = JSONDecoder() | ||||
|                             let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData) | ||||
|                              | ||||
|                         if decoded.success { | ||||
|                             self.errorMessage = "캔이 충전되었습니다" | ||||
|                             self.isShowPopup = true | ||||
|                             if decoded.success { | ||||
|                                 self.errorMessage = "캔이 충전되었습니다" | ||||
|                                 self.isShowPopup = true | ||||
|                                  | ||||
|                             onSuccess() | ||||
|                         } else { | ||||
|                             if let message = decoded.message { | ||||
|                                 self.errorMessage = message | ||||
|                                 onSuccess() | ||||
|                             } else { | ||||
|                                 self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." | ||||
|                             } | ||||
|                                 if let message = decoded.message { | ||||
|                                     self.errorMessage = message | ||||
|                                 } else { | ||||
|                                     self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." | ||||
|                                 } | ||||
|                                  | ||||
|                                 self.isShowPopup = true | ||||
|                             } | ||||
|                         } catch { | ||||
|                             self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." | ||||
|                             self.isShowPopup = true | ||||
|                         } | ||||
|                     } catch { | ||||
|                         self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." | ||||
|                         self.isShowPopup = true | ||||
|                     } | ||||
|                 } | ||||
|                 .store(in: &subscription) | ||||
|                     .store(in: &subscription) | ||||
|             } else { | ||||
|                 repository.pgVerifyHecto(receiptId: receiptId, orderId: orderId) | ||||
|                     .sink { result in | ||||
|                         switch result { | ||||
|                         case .finished: | ||||
|                             DEBUG_LOG("finish") | ||||
|                         case .failure(let error): | ||||
|                             ERROR_LOG(error.localizedDescription) | ||||
|                         } | ||||
|                     } receiveValue: { [unowned self] response in | ||||
|                         self.isLoading = false | ||||
|                         let responseData = response.data | ||||
|                          | ||||
|                         do { | ||||
|                             let jsonDecoder = JSONDecoder() | ||||
|                             let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData) | ||||
|                              | ||||
|                             if decoded.success { | ||||
|                                 self.errorMessage = "캔이 충전되었습니다" | ||||
|                                 self.isShowPopup = true | ||||
|                                  | ||||
|                                 onSuccess() | ||||
|                             } else { | ||||
|                                 if let message = decoded.message { | ||||
|                                     self.errorMessage = message | ||||
|                                 } else { | ||||
|                                     self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." | ||||
|                                 } | ||||
|                                  | ||||
|                                 self.isShowPopup = true | ||||
|                             } | ||||
|                         } catch { | ||||
|                             self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." | ||||
|                             self.isShowPopup = true | ||||
|                         } | ||||
|                     } | ||||
|                     .store(in: &subscription) | ||||
|             } | ||||
|         } else { | ||||
|             isLoading = false | ||||
|             errorMessage = "본인인증 중 오류가 발생했습니다." | ||||
|             self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." | ||||
|             isShowPopup = true | ||||
|         } | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yu Sung
					Yu Sung