Golf (v2)
1. Chuẩn bị các thông số để sử dụng SDK
//Android
VNPAY_ANDROID_MAVEN_REPO_URL //được VNPAY cung cấp
VNPAY_ANDROID_SDK_GOLF_VERSION //được VNPAY cung cấp
//iOS
VNPAY_IOS_SDK_GOLF_URL //được VNPAY cung cấp
VNPAY_IOS_SDK_COREKIT //được VNPAY cung cấp
//thông tin chung cả android và ios
GOLF_LICENSE_TEST //được VNPAY cung cấp
GOLF_LICENSE_KEY_TEST //được VNPAY cung cấp
GOLF_LICENSE_LIVE //được VNPAY cung cấp
GOLF_LICENSE_KEY_LIVE //được VNPAY cung cấp
2. Cấu hình SDK vào Project
Cấu hình Maven để tải SDK và các phụ thuộc về
File: project/build.gradle
def VNPAY_ANDROID_MAVEN_REPO_URL = "" //được VNPAY cung cấp
allprojects {
repositories {
google()
mavenCentral()
maven {
url VNPAY_ANDROID_MAVEN_REPO_URL
}
}
}
File: project/app/build.gradle
def VNPAY_ANDROID_SDK_GOLF_VERSION = "" //được VNPAY cung cấp
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
// enable viewbiding
buildFeatures {
viewBinding = true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
//---------- SDK GOLF --------------
implementation 'androidx.core:core-ktx:1.3.2'
implementation platform('org.jetbrains.kotlin:kotlin-bom:1.8.0')
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.android.gms:play-services-location:18.0.0'
//COMPAT
implementation("androidx.appcompat:appcompat:1.1.0-rc01")
implementation "androidx.cardview:cardview:1.0.0"
implementation 'com.google.android.material:material:1.2.1'
//COMPAT for old ui
implementation("androidx.legacy:legacy-support-v4:1.0.0")
//CONSTRAINT LAYOUT
implementation("androidx.constraintlayout:constraintlayout:1.1.3")
//
// GSON FOR NETWORK
implementation 'com.google.code.gson:gson:2.8.5'
// LOAD IMAGE
implementation 'com.squareup.picasso:picasso:2.5.2'
// OKHTTP NETWORK
implementation('com.squareup.okhttp3:okhttp:3.12.12')
//
// //MULTIDEX
implementation 'androidx.multidex:multidex:2.0.1'
//
//RECYCLER VIEW
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha01'
//VIEWPAGER
implementation 'androidx.viewpager:viewpager:1.0.0'
//
// ViewModel and LiveData
implementation("androidx.lifecycle:lifecycle-extensions:2.0.0")
// alternately - if using Java8, use the following instead of lifecycle-compiler
implementation("androidx.lifecycle:lifecycle-common-java8:2.0.0")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0")
//
//RETROFIT
implementation "com.squareup.retrofit2:retrofit:2.6.0"
implementation "com.squareup.retrofit2:converter-gson:2.5.0"
implementation("com.squareup.okhttp3:logging-interceptor:3.14.0")
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.github.florent37:runtime-permission-kotlin:1.1.2'
implementation 'com.google.android:flexbox:2.0.1'
implementation('com.vnpay.supersecure:supersecure:1.0.22')
implementation 'com.facebook.shimmer:shimmer:0.5.0@aar'
// // ZXING FOR QR
implementation 'com.google.zxing:core:3.3.2'
implementation(group: 'com.vnpay.golflib', name: 'golflib', version: VNPAY_ANDROID_SDK_GOLF_VERSION, ext: 'aar')
//----------- END SDK GOLF ----------
}:
Cấu hình Cocoapods để tải SDK và các phụ thuộc về
Lưu ý:
:path => là đường dẫn đến thư mục chứa lib dưới máy local của đối tác
đối tác tải thư mục lib trên link pod drive mà VNPAY gửi và lưu vào dự án
tải về và unzip nếu có
# File: Pofile
target '<YOUR_TARGET>' do
pod 'Pods_VNPGolf', :path => VNPAY_IOS_SDK_GOLF_URL
pod 'Pods_VNPaySDKCoreKit', :path => VNPAY_IOS_SDK_COREKIT_URL
end
Khai báo quyền Photo, sử dụng để lưu vé QR trong luồng lịch sử
info.plist
<!-- SDK Train, Photo: Sử dụng để lưu vé QR trong luồng lịch sử -->
NSPhotoLibraryAddUsageDescription
NSPhotoLibraryUsageDescription
3. Code demo
3.1. Setup các thông tin đầu vào và mở SDK
fun openSDKGolf(context: Context?) {
//Thiết lập các thông số đầu vào cho sdk để vào màn đặt vé
val GOLF_LICENSE_TEST = "" //bắt buộc do VNPAY cung cấp
val GOLF_LICENSE_KEY_TEST = "" //bắt buộc do VNPAY cung cấp
val GOLF_LICENSE_LIVE = "" //bắt buộc do VNPAY cung cấp
val GOLF_LICENSE_KEY_LIVE = "" //bắt buộc do VNPAY cung cấp
val phone = "" //bắt buộc, sđt khách hàng sử dụng SDK, do đối tác truyền vào SDK
val userName = "" //không bắt buộc, do đối tác truyền vào SDK
val ottToken = "" //không bắt buộc
val bankToken = "" //bắt buộc, do đối tác truyền vào SDK
val language = "vi" //bắt buộc, nhận các giá trị: vi, en, do đối tác truyền vào SDK
val email = "" //không bắt buộc, do đối tác truyền vào SDK
val REQUEST_OPEN_SCREEN_VE_TAU = 2010
val debug: Boolean //true, false
val isLive = false //bắt buộc
var license = ""
var key = ""
if (isLive) {
license = GOLF_LICENSE_LIVE
key = GOLFN_LICENSE_KEY_LIVE
debug = false
} else {
license = GOLF_LICENSE_TEST
key = GOLF_LICENSE_KEY_TEST
debug = true
}
val config = SDKConfig.build(this)
.setLicense(license)
.setKey(key)
.setOttToken(ottToken)
.setBankToken(bankToken)
.setPhone(phone)
.setIntentFilter("golf_filter")
.setFullName(userName)
.setMail(email)
.setLanguage(language)
if (error != null) {
Toast.makeText(context, "Có lỗi khi mở SDK Golf V2", Toast.LENGTH_LONG).show()
Log.e("TAG", "Có lỗi xảy ra khi mở SDK Golf ver2")
}
}
Import SDK into file: Bridging-Header.h
#import <VNPGolf/VNPGolf.h>
Code demo Setup and OpenSDK
import UIKit
class VNPAYSDKGolfV2SwiftViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton.init(frame: .init(x: 100, y: 200, width: 100, height: 50))
button.addTarget(self, action: #selector(self.openSDKGolf), for: .touchUpInside)
button.setTitle("OPEN SDK", for: .normal)
button.setTitleColor(.red, for: .normal)
self.view.addSubview(button)
}
@objc func openSDKGolf() {
let GOLF_LICENSE_TEST = "" //bắt buộc, do VNPAY cung cấp
let GOLF_LICENSE_KEY_TEST = "" //bắt buộc, do VNPAY cung cấp
let GOLF_LICENSE_LIVE = "" //bắt buộc, do VNPAY cung cấp
let GOLF_LICENSE_KEY_LIVE = "" //bắt buộc, do VNPAY cung cấp
let isLive = false //bắt buộc
let sdk = VNPGolfManager.shared()
sdk.debug = !isLive //bắt buộc
sdk.phoneNumber = "" //bắt buộc, đối tác tự truyền vào
sdk.bankToken = "" //bắt buộc, đối tác tự truyền vào
sdk.ottToken = "" //không bắt buộc
sdk.language = "" //Bắt buộc, nhận các giá trị: vi, en
sdk.userEmail = "" //không bắt buộc
sdk.userName = "" //không bắt buộc
var license = "";
var key = "";
if (isLive) {
license = GOLF_LICENSE_LIVE;
key = GOLF_LICENSE_KEY_LIVE;
} else {
license = GOLF_LICENSE_TEST;
key = GOLF_LICENSE_KEY_TEST;
}
if let error = sdk.setLicenseKey(license, key: key) {
print("VNPAY License GOLF Error: \(error)")
} else {
print("VNPAY License GOLF OK")
sdk.show(fromVC: self, delegate: self)
}
}
}
extension VNPAYSDKGolfV2SwiftViewController: VNPGolfDelegate {
public func vNPGolfExit(from viewController: UIViewController) {
}
public func vNPGolfHideProgess() {
//TODO: hide your loading
}
public func vNPGolfShowProgess() {
//TODO: show your loading
}
public func vNPGolfCompleteBooking(with dic: [AnyHashable : Any], fromViewcontroler viewController: UIViewController) {
//TODO: golf payment
}
}
3.2. Mô tả thông tin thanh toán
{
"payment": {
"paymentCode": "GOLF123", //Mã thanh toán dùng cho billing truy vấn đơn hàng
"amount": 5500000, // Tổng tiền thanh toán tính tại SDK GOLF
"transactionId": "9283762898376437829", // ID thanh toán trong server
"serviceCode": 91237829,
"providerCode": 19273891,
"allowInvoice": false,
"hotline": "1900555520",
"expireDate": "2023-08-29 18:45:00",// thời gian hết hạn thanh toán
"description": "Thanh toan đơn hàng đặt golf"
},
"orderInfo": [
{
"title": "Nội dung giao dịch",
"type": "GROUP",
"values": [
{
"title": "Dịch vụ",
"value": "Đặt golf",
"type": "TITLE_VALUE"
},
{
"title": "Mã thanh toán",
"value": "GOLF123",// Mã thanh toán dùng cho billing truy vấn đơn hàng
"type": "DETAIL",
"detail": {
"title": "Chi tiết đơn hàng",
"type": "GROUP",
"values": [
{
"title": "Chi tiết giá",
"type": "GROUP",
"values": [
{
"title": "Tổng tiền (VND)",
"value": "1.500.000",// số tiền trước khuyến mại
"type": "TITLE_VALUE"
},
{
"title": "Giảm giá (VND)",
"value": "1.500.000", // Số tiền khuyến mại, nếu k có KM giá trị =0
"type": "TITLE_VALUE"
},
{
"title": "Tổng tiền thanh toán (VND)",
"value": "1.500.000",// Số tiền sau khuyến mại
"type": "TITLE_VALUE"
}
]
}
]
}
}
]
},
{
"title": "Lưu ý",
"type": "NOTE",
"value": "Trường hợp Sau 30 phút bạn không nhận được thông tin mã đặt chỗ gửi vào email/SMS vui lòng liên hệ: <a href='tel:1900555520'>1900555520 </a> để được hỗ trợ"
}
]
}
3.3. Về Home của SDK
SDKConfig.popToHomeSDK()
VNPGolfManager.shared().popToHomeSDKAndClearData()
3.4. Đóng SDK
SDKConfig.closeSDK();
VNPGolfManager.shared().closeSDK {
//completion callback
}
Last updated