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