portone_flutter_v2 1.0.10
portone_flutter_v2: ^1.0.10 copied to clipboard
A module for integrating PortOne V2 payment service in Flutter App.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.10 - 2025-05-07 #
Added #
- Introduces the
WebviewErrorUseCaseclass to centralize the logic for determining whichWebResourceErrorcases can be safely ignored during the PortOne payment flow in a WebView.- The
WebviewErrorUseCase.shouldIgnoremethod consults a predefined set of rules to determine if an error can be safely ignored based on its type and description. This helps to prevent unnecessary error handling for benign WebView errors that do not affect the payment process, such as cancelled navigations, host lookup failures, and network timeouts. - The
onReceivedErrorcallback inPortonePaymentStateis updated to use theWebviewErrorUseCase.shouldIgnoremethod to filter out ignorable errors, improving the robustness and clarity of the error handling logic.
- The
1.0.9 - 2025-05-03 #
Fixed #
- Prevents unnecessary error handling for
WebResourceErrortypes withUNKNOWNerrors and a description containing 'WebKitErrorDomain'. These errors are often non-critical and can be safely ignored.
1.0.8 - 2025-04-30 #
Changed #
-
Replaced the default
Container()in theIndexedStackwith aCenterwidget containing aCircularProgressIndicator. This ensures that a loading indicator is displayed to the user while the WebView is being initialized, providing visual feedback and preventing a perceived delay. -
Introduced a new
_handleSuccessmethod to encapsulate the logic for handling successful payment responses. This method calls thewidget.callbackwith thepaymentResponseand clears the_redirectedUrlslist. -
Replaced direct calls to
widget.callbackwith calls to_handleSuccessin the app link and URL override handling logic.
Added #
- Added a null check for
errorResponse.statusCodeto prevent errors when the status code is not available. If the status code is null, the error is logged and ignored. - Added a check to ignore HTTP errors that occur on subresource requests (i.e., requests that are not for the main frame document). This prevents unnecessary error handling for resources like images or stylesheets that may fail to load. The URL and status code of the ignored error are logged.
Fixed #
- Improved logging messages to provide more context about the type of HTTP error being handled or ignored.
- Ensured that
_redirectedUrlsis cleared in_handleErrorto prevent memory leaks and ensure a clean state for subsequent payment attempts. - Added a check to ignore errors that occur on subresource requests (i.e., requests that are not for the main frame document). This prevents unnecessary error handling for resources like images or stylesheets that may fail to load.
- Added checks to ignore specific
WebResourceErrortypes:UNKNOWNerrors with a description containing 'WebKitErrorDomain' are ignored, as these are often non-critical.CANCELLEDerrors with a description containing 'NSURLErrorDomain' are ignored, as these represent cancelled navigations.
1.0.7 - 2025-04-28 #
Added #
- Introduces the
PortoneErrorHandlerclass to provide a flexible way to handle error callbacks. - Added
_redirectedUrlsto track redirected URLs during WebView navigation. This list is used to generate a stack trace if an error occurs, providing a history of navigation events leading to the error.
Changed #
- Modified the
onErrorparameter in thePortonePaymentconstructor to accept aPortoneErrorHandlerinstance. - Ensured that errors originating from the PortOne SDK, WebView errors, and navigation errors include stack traces when invoking the error callback.
- Introduced the
_handleErrormethod to centralize error reporting, ensuring that both the error object and a stack trace (either the current stack trace or one generated from_redirectedUrls) are consistently passed to thewidget.onErrorcallback. - Added null safety check for url in
shouldOverrideUrlLoadingto prevent errors when the URL is null.
1.0.6 - 2025-04-27 #
Added #
- Added
onReceivedErrorcallback to capture and propagateWebResourceErrorobjects via thewidget.onErrorhandler. - Added
onReceivedHttpErrorcallback to capture and propagateWebResourceResponseobjects via thewidget.onErrorhandler.
Changed #
- Modified payment data processing to directly include the
appSchemein the payment data map. - Removed the conditional logic for setting
retAppSchemespecifically for Toss Payments, as it's no longer required. - Updated paymentData to be a mutable map to allow modification.
1.0.5 - 2025-04-26 #
- Added
portone_flutter_v2.podspecfor CocoaPods integration. - Created
PrivacyInfo.xcprivacyto declare the app's privacy practices. - Added
ios/Runner.xcodeproj/project.pbxprojto unmanaged files in.metadatato prevent template overwrites.
1.0.4 - 2025-04-26 #
Added #
- Updated the supported payment methods section in the README to reflect the new PG Company specific support.
- Enable the Android plugin so that the app has the schema without modifying the manifest separately, and declare the external app schema (including <queries> for package visibility) in the plugin manifest.
1.0.3 - 2025-04-26 #
Added #
- Added
pgfield to thePaymentRequestmodel, accepting aPGCompanyenum to specify the payment gateway. - Updated the
PaymentRequest.fromJsonfactory method to handle the newpgfield. - Added
PGCompanyenum to represent supported PG companies. - Added conditional logic to include the
retAppSchemeparameter when using the Tosspayments PG for redirect handling.
Changed #
- Introduced validation in the
PaymentRequestconstructor to ensure the selectedpayMethodis supported by the specifiedPGCompany. - Throws an
ArgumentErrorwhen an unsupportedpayMethodis provided, with a clear error message listing the supported methods. - Added unit tests verifying that an
ArgumentErroris thrown for unsupportedpayMethodcases and that object creation succeeds for supported cases. - Removed
includeToJson: falseannotation from thepgfield in thePaymentRequestmodel. (If still present, please remove.)
1.0.2 - 2025-04-25 #
Added #
- Added unit tests for most of model classes
Changed #
- Exposes the
PortonePaymentStateclass as public and adds comprehensive documentation to facilitate testing and improve understanding of the payment process. - Sets a default
redirectUrlin thepaymentDataif it is null. - Adds
retAppSchemeto thepaymentDatafor compatibility with Tosspayments' TossPay, as it requires this parameter.
1.0.1 - 2025-04-12 #
Added #
- Added
PaymentCurrencyenum with support for a wide range of currencies based on ISO 4217. - Added Missing documentation for all public members to improve code readability and maintainability.
Changed #
- Translated the CHANGELOG from Korean to English.
- Converted enum values in
CashReceiptTradeOptionto snake case for consistency.
1.0.0 - 2025-04-11 #
Added #
- Initial integration of PortOne V2 payment service
- Implementation of payment process using the
PortonePaymentwidget - Support for multiple payment methods (credit card, virtual account, easy-pay, etc.)
- Implementation of payment request model (
PaymentRequest) and payment response model (PaymentResponse) - Added
PGCompanyenumeration to support various PG companies - Added
PaymentSupportedMethodsextension for checking supported payment methods per PG company - Functionality for handling payment callbacks via app schemes
- Option to configure payment window type (iframe, popup)
- Multilingual support (Korean, English)
- Localization support for PG company names
- Support for multiple currencies (according to the ISO 4217 standard)
- Support for country information (according to the ISO 3166-1 alpha-2 standard)
- Added bypass parameter support for each PG company:
- e.g., KakaoPay, Toss Payments, Toss Pay V2, KSNET, Smartro V2, Naver Pay, etc.
- Support for transmitting additional information such as custom data, store information, and shipping address
- Error handling and logging functionality
Changed #
- Renamed class from
PortOnePaymenttoPortonePaymentfor consistency
Fixed #
- Improved handling of intent URL processing
- Improved payment response processing via app scheme
- Modified field type in PaymentRequest model (changed
isEscrowto nullable) - Changed
paypaltoconvenienceStorein thePaymentPayMethodenumeration