iOS 12.0+ / macOS 10.15+ Swift 5.0+
对于某些类型的票,用户需要从相机上传照片,因此为了避免崩溃,请在您的项目 Info.plist 中添加 NSCameraUsageDescription
将此内容添加到您的 Podfile
pod 'DiscoveryCultureSDK-iOS', :git => "https://github.com/Platinumlist/DiscoveryCultureSDK-iOS.git"
let vc: SMWebViewController = .init(nibName: nil, bundle: nil)
let user: SMUser = SMUser(name: "Some Name", email: "[email protected]", phone: "+971500000000", nationalityId: 123, cityId: 1)
- 名称 - String, 5 - 200个字符
- 电子邮件 - String, 5 - 200个字符
- 电话 - String,期待有效的电话号码
- 国籍ID - Int,方法返回可用的国籍ID
- 城市ID - Int,方法返回可用的城市ID
vc.processCheckout(user)
SMUser 保存到 UserDefaults
vc.removeCurrentUser()
当首次添加票时,篮子的有效期等于 15 分钟。
public func setParameters(sdk: SDKType,
accessToken: String,
eventId: String?,
eventShowId: String?,
eventShowSetting: Bool?,
user: SMUser?,
language: SMLanguage?,
completion: SMResultCallback)
必需参数
- sdk - SDKType,
purchase|ticketOffice|selectTickets
- SDK 类型 - accessToken- String
- eventId- String? - 事件 ID
- eventShowId- String? - 事件的 show ID
单独使用 eventId 或 eventShowId。
可选参数
- eventShowSetting - Bool? - 是否需要事件 show 设置(如果设置了事件 show ID,则默认为 true)
- user- SMUser? - 用于篮子的用户,如果未单独设置(非常重要!用户在 SMWebView 展示之前已设置)
- language- SMLanguage?,
en|ar
- 语言(默认en
)
完成 - SMResultCallback
public typealias SMResultCallback = ((_ result: SMResult?, _ error: SMError?) -> Void)
public enum SMResult {
case addUser
case orderStatus(_ status: String?, id: Int)
case errorMessage(_ message: String?, code: Int)
case goBack
case close
case apple
}
public enum SMError: Error {
case wrongParameters
case applePayAuthorization
case applePayTransaction
case unknown
}
示例
let toket: String = "Some token"
let idEventStr: String = "11634"
let language: SMLanguage = SMLanguage.ar
vc.setParameters(sdk: sdkType, accessToken: token, eventId: idEventStr, language: language) { [weak self] (result, error) in
if let error: SMError = error {
// handle error
}
if let result: SMResult = result {
switch result {
case .addUser:
// the last chanse to add user to process checkout
// to do this create and setup SMUser to your SMWebViewController
case .orderStatus(let status, let orderId):
// handle order status
case .errorMessage(let message, let code):
// handle error message
case .goBack:
// handle go back
case .close:
// handle close
case .apple:
// handle apple
@unknown default:
print("unknown")
}
}
}
orderStatus:
- orderId - Int
- 状态 - String,
completed|expired|pending payment|failed
- 当前订单状态
ErrorMessage:
- 消息 - String?
- 代码 - Int
let amount: Float = 3.0
let id: Int = 126347
SMWebManager.shared.updateToCompleted(idOrder: id, amount: amount) {
// Order is successfully updated to complete status
} failure: {[weak self] (Error) in
// handle failure
}
SMWebManager.shared.updateToFailed(idOrder: id) {[weak self] in
// Order is successfully updated to failed status
} failure: {[weak self] (Error) in
// handle failure
}
对于测试购买,请使用 Payfort 测试
支付网关。 可用的信用卡凭证
我们在 SDK 中处理所有支付逻辑,尽管您只需要在应用中设置环境以集成 Apple Pay。
- 创建一个商户 ID
- 在 App ID 配置中启用 Apple Pay 支付处理
- 在 Xcode 中为项目配置 Apple Pay 功能