DISCLAIMER: this plugin isn't maintained anymore.
This plugin is a wrapper around HyperPay iOS and Android SDK, it's still in alpha release, and supports limited set of functionality and brands.
Note: this plugin is unofficial.
✔️ Credit Card payment VISA, MasterCard
✔️ Local Saudi payment with MADA
✔️ Apple Pay
✔️ Check payment status
✔️ Custom UI
✖️ Ready UI
Add your Bundle Identifier as a URL Type.
Open ios folder using Xcode, make sure you select Runner traget, then go to Info tab, and there add a new URL type, then paste your Bundle Identifier and append .payments
to it.
Open Podfile, and paste the following inside of it:
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
# Add from here
pod 'oppwamobile', :git => 'https://github.com/nyartech/oppwamobile-ios-sdk.git'
$static_framework = ['hyperpay']
pre_install do |installer|
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
installer.pod_targets.each do |pod|
if $static_framework.include?(pod.name)
def pod.build_type;
Pod::BuildType.static_library
end
end
end
end
# To here
end
android/app/build.gradle
and add the following lines:
implementation (name:'oppwa.mobile-4.5.0-release', ext:'aar')
app/build.gradle
and make sure that the minSdkVersion
is 21, and compileSdkVersion
is 33..payments
to it.
com.nyartech.hyperpay_example
becomes com.nyartech.hyperpayexample.payments
On older versions of the plugin, adding the AAR SDK file manually on Android was required. Now it's not. To migrate:
app/build.gradle
:
implementation project(":oppwa.mobile")
implementation "androidx.appcompat:appcompat:1.3.1"
implementation "com.google.android.material:material:1.4.0"
implementation "com.google.android.gms:play-services-base:17.6.0"
implementation (name:'oppwa.mobile-4.5.0-release', ext:'aar')
settings.gradle
, remove the following line:
include ':oppwa.mobile'
oppwa.mobile
from the root android
folder in your app.It's important to setup your own server with 2 endpoints:
Find full details on set up your server page.
After that, setup 2 Uri
objects with your endpoints specifications, refer to example/lib/constants
for an example.
String _host = 'YOUR_HOST';
Uri checkoutEndpoint = Uri(
scheme: 'https',
host: _host,
path: '',
);
Uri statusEndpoint = Uri(
scheme: 'https',
host: _host,
path: '',
);
The first time you launch your app, setup the plugin with your configurations, it's highly recommended to use flavors to switch between modes.
Implement HyperpayConfig
class and put your merchant entity IDs as provided to you by HyperPay.
class TestConfig implements HyperpayConfig {
@override
String? creditcardEntityID = '';
@override
String? madaEntityID = '';
@override
String? applePayEntityID = '';
@override
Uri checkoutEndpoint = _checkoutEndpoint;
@override
Uri statusEndpoint = _statusEndpoint;
@override
PaymentMode paymentMode = PaymentMode.test;
}
Then you might consider using Dart environment variables to switch between Test and Live modes.
const bool isDev = bool.fromEnvironment('DEV');
void setup() async {
await HyperpayPlugin.instance.setup(
config: isDev? TestConfig() : LiveConfig(),
);
}
Refer to example
directory for a full app usage example. As this is still an alpha release, consider testing your implementation first in the example app before starting in your own app.
For any problems, please file an issue.
Contributions are more than welcome to fix bugs or extend this plugin!