A Zalo Pay SDK .
NOTE: Get your appid from Zalo in order for ZaloPaySDK to work. In this readme we will use appId = 2553, as this is demo appID from Zalo
A Flutter Wrapper for ease of interacting with ZaloPaySDK.
https://docs.zalopay.vn/docs/apptoapp/api.html#ngu-canh-su-dung
- Set up your
AndroidManifest.xml
as below:
<activity
...
android:launchMode="singleTask"
...>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="demozpdk"
android:host="app" />
</intent-filter>
<meta-data
android:name="com.vng.zalo.sdk.APP_ID"
android:value="2553" />
<meta-data
android:name="com.vng.zalo.sdk.ENVIRONMENT"
android:value="SANDBOX" /> // OR value="PRODUCTION"
</activity>
- Set up your
Info.plist
as below
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>com.flutterzalopay.flutterZaloSdkExample</string>
<key>CFBundleURLSchemes</key>
<array>
<string>demozpdk</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>com.flutterzalopay.flutterZaloSdkExample</string>
<key>CFBundleURLSchemes</key>
<array>
<string>zp-redirect-2553</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>zalo</string>
<string>zalopay</string>
<string>zalopay.api.v2</string>
</array>
- Add the following to your
AppDelegate.swift
file
...
import zpdk
override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return ZaloPaySDK.sharedInstance().application(app, open:url, sourceApplication: "vn.com.vng.zalopay", annotation:nil)
}
- In didFinishLaunchingWithOptions, add the line:
ZaloPaySDK.sharedInstance()?.initWithAppId(2553, uriScheme: "demozpdk://app", environment: .sandbox) ///NOTE: If you want to use production, replace .sandbox with .production
Call FlutterZaloPaySDK.payOrder(zpToken: String)
to use. Latest status of the order can be accesed through FlutterZaloPaySDK.currentStatus
. Default will be null
Applicable Staus can be found in class FlutterZaloPaymentStatus
FlutterZaloPaymentStatus.PROCESSING
FlutterZaloPaymentStatus.FAILED
FlutterZaloPaymentStatus.SUCCESS
FlutterZaloPaymentStatus.CANCELLED