Khalti 1.0.17

Khalti 1.0.17

KhaltiKhaltiKhalti 维护。



Khalti 1.0.17

Khalti

IDE Language Version License Platform

需求

此系统已在 Xcode 8、9 和 10 以及 swift 版本 3、4 和 4.2 上进行了测试。

Xcode: >=8

Swift:3、4 和 4.2

示例

Swift:克隆项目并使用 'Example' 目录。运行 'pod install'

Objective-C:克隆项目并使用 'Example Obj-c' 目录。运行 'pod install'

安装指南

Khalti 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中。

pod 'Khalti'

使用方法

添加CustomSchme(仅当提供卡片和/或电子银行服务时需要)

Khalti使用自定义方案:因此商家应为其应用设置唯一的URLScheme。我们已将其设置为基于用例的可用性。

Khalti scheme setup overview

添加Url Scheme后,创建以下所示的相同customUrlScheme的全局常量

let khaltiUrlScheme:String = "KhaltiPayExampleScheme"

需求

为了解决此重定向,您需要在Appdelegate.swift中实现一些openUrl。

Khalti.shared.defaultAction()返回true如果您通过Khalti发起支付。Khalti.shared.action(with: url)在电子银行和卡片支付后进行完整操作是必需的。(仅当提供卡片和/或电子银行服务时需要)

注意:使用Khalti.shared.action(with: url)仅当提供卡片和/或电子银行服务时需要。

将以下代码添加到Appdelegate.swift

 func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    Khalti.shared.action(with: url)
    return Khalti.shared.defaultAction() // Or true 
}

在特定视图控制器中使用

在您的视图控制器中,在支付操作时添加initiate配置文件

在实例化Config时,传递公钥、产品ID、产品名称、金额(以帕伊萨为单位)。产品网页URL和额外数据是可选的。

let TEST_CONFIG:Config = Config(publicKey: khaltiMerchantKey, amount: 1000, productId: "1234567890", productName: "Dragon_boss", productUrl: "http://gameofthrones.wikia.com/wiki/Dragons",additionalData: additionalData)
// Data passed here are based on Example project

注意:公钥提供给Khalti的每位商家。最初测试对所有商家可用,与Khalti签订MoU后提供实时密钥。

在此阶段,您之前声明的方案通过Khatli.shared.appUrlScheme传递

Khalti.shared.appUrlScheme = khaltiUrlScheme // see above for file khaltiUrlScheme
// This can be used at appdelegate during didfinishlaunching. 
// This must be included only if either card and/or ebanking are made available.

最后,通过调用public函数来呈现khaltiPay视图控制器

Khalti.present(caller: self, with: TEST_CONFIG, delegate: self)

Khalti呈现函数的参数

参数
调用者 从您启动支付的地方的视图控制器
携带 配置对象
委托 self

委托必须分配给相同的视图控制器,以便从KhaltiPayDelegate获取回调操作。

示例项目中的应用示例

let extra:[String : Any] =  ["no":false,"yes":true,"int" : 0, "float":12.23]
        
let jsonData = try? JSONSerialization.data(withJSONObject: extra, options: JSONSerialization.WritingOptions())
let jsonString = String(data: jsonData!, encoding: .utf8)!
        
let additionalData:Dictionary<String,String> = [
    "merchant_name" : "Merchant Company Name",
    "merchant_extra" : jsonString
]
        
Khalti.shared.appUrlScheme = khaltiUrlScheme
let khaltiMerchantKey = "test_public_key_dc74e0fd57cb46cd93832aee0a507256" // This key is from local server so it won't work if you use the example as is it. Use your own public test key
        
let TEST_CONFIG:Config = Config(publicKey: khaltiMerchantKey, amount: 1000, productId: "1234567890", productName: "Dragon_boss", productUrl: "http://gameofthrones.wikia.com/wiki/Dragons",additionalData: additionalData, ebankingPayment:false) // This makes only khalti Payment available
Khalti.present(caller: self, with: TEST_CONFIG, delegate: self)

配置文件具有属性ebankingPayment,默认值为true,表示卡支付功能可用。如果您希望在您的用户不可用ebankingPayment,则在创建配置对象时将ebankingPayment选项设置为false。此外,配置文件还支持具有默认值false的cardPayment属性,表示卡支付功能不可用。如果想要使cardPayment对您的用户可用,则在创建配置对象时将cardPayment选项设置为true。在启用此功能之前,请阅读商家条款和条件。此外,Config类还接受一个Dictionary,您可以使用它传递任何其他数据。请确保在您的映射键中添加一个merchant_前缀。

使用委托

您实现的包含支付操作的viewController应包含实现onCheckOutSuccess(data: Dictionary)onCheckOutError(action: String, message: String)的KhaltiPayDelegate

extension YourViewController: KhaltiPayDelegate {
    func onCheckOutSuccess(data: Dictionary<String, Any>) {
        print(data)
        print("Oh there is success message received")
    }
    
    func onCheckOutError(action: String, message: String) {
        print(action)
        print(message)
        print("Oh there occure error in payment")
    }
}

总结

回调方法

方法 描述
onCheckOutSuccess(data: Dictionary) 当交易完成并经用户确认时调用此方法。返回一个包含访问令牌的字典,该令牌是验证交易和通过Config实例传递的数据所必需的。一旦调用此方法,请使用访问令牌验证交易。请按照验证过程的进一步说明进行操作。
onCheckOutError(action: String, message: String, data:Dictionary?) 在支付初始化和确认期间发生错误时调用此方法。传递给action、message和errordata的值定义了当前执行的操作、定义了错误以及如果存在则定义了与错误相关的errorData。
响应样本
成功消息
类型
手机 98XXXXXXXX 字符串
product_name 产品名称 字符串
product_identity 产品ID 字符串
product_url 产品网址 字符串
数量 100 整数
token token 字符串
cardPayment false 布尔值

成功消息还包含在初始化 Config 时作为额外数据提供的所有

错误消息
变量 描述 类型
操作 initiate/confirm/ebanking 字符串
消息 详细错误消息 字符串
数据 错误数据(可选) Dictionary?

支持

如有疑问,请随时发送邮件至: 此处

请查看 API 文档