该 kongapay iOS 框架是为在 iOS 开发环境中使用而设计的。任何希望在自己的原生 iPhone、iPad 和 iPod touch 应用程序中接收支付的人都可以安装和使用该服务。该框架可以无缝地集成到您的开发环境中,并在您的开发中使用。它是使用 Apple 的 Objective-C 编程语言开发的,可以在 Xcode IDE 中运行。
如果您已经配置了 xcode 项目使用 CocoaPads,那么打开您的 Podfile,并粘贴以下内容
pod 'KongaPayPaymentService', '~> 1.0.2'
然后通过在终端窗口中运行 pod update 来更新您的 Podfile。
从本存储库下载 ZIP 文件
KongaPayPaymentService.framework 和 KongaPayPaymentService.bundle.
解压缩下载的文件,并将这些文件拖到您的 Xcode 开发环境的项目导航栏中,以将这些文件添加到您的项目中。您可以为了组织目的将它们添加到框架组中。别忘了在添加框架到项目中时,点击“需要时复制项”复选框。
要在您的 ViewController 或视图中使用框架,您需要执行以下操作
在您的 ViewController 或视图中导入 KongaPayPaymentService 框架,以下展示了如何操作
#import <KongaPayPaymentService/KongaPayPaymentService.h>
实现 KongaPayPaymentComplete 代理,该代理将包含代理方法。KongaPayment 代理包含提供反馈并作为您的处理支付后响应的方式的代理方法。
@interface ... ()<KongaPayPaymentCompleteDelegate>
在您希望启动支付的面板控制器或视图中实现 KongaPayPaymentComplete 代理方法,以使您能够处理预批准支付和一次性支付的响应。以下列出这些代理方法
-(void)paymentDidCompleteSuccessfully:(id)theresponseData:
此委托方法在一次性支付过程成功且通过“theresponseData”变量发送支付数据响应时调用。
-(void)paymentDidFailWithError:(id)theErrorData:
此委托方法在一次性支付过程失败时调用,此时通过“therErrorData”变量发送响应数据。
-(void)linkMerchantDidCompleteSuccessfully:(id)theresponseData
此委托方法在成功发起预授权支付调用时调用,此时通过“theresponseData”变量发送响应数据。
-(void)linkMerchantDidFailWithError:(id)theErrorData
当预授权支付失败且通过“theErrorData”变量发送响应数据时,此委托方法被调用。
使用KongaPay框架进行支付有两种方式:
1.执行一次性支付
2.允许用户授权进行预授权支付
要使用框架进行一次性支付,您必须像下面那样初始化KongaPayRegisteration类。
KongaPayRegisteration *_regHandler = [[KongaPayRegisteration alloc] initWithPayMerchantView:view theMerchantID:@"Merchant_id" theTransactionID: @"Transaction_id" theAmount:@"Amount" theClientKey:@"Client_key isLiveEnvironment:Value"];
view = 您的viewcontroller视图或用于初始化支付服务的Uiview。
Merchant_id = 您作为希望使用kongaPay支付服务的商户的商户ID。在您注册KongaPay时,这将被提供给您。
Transaction_id = 您希望通过KongaPay支付的事务ID。
Amount = 这是将要付款的项目成本。金额应为5000.00,200.00等格式。
Client_Key = 这是您在注册KongaPay时作为商户或卖家获得的客户端密钥。
Value = 一个布尔值,表示您实施的环境。值为“YES”表示您使用的是生产环境,而值为“NO”表示您使用的是测试环境。在成功支付后,上述过程3中列出的paymentDidCompleteSuccessfully委托方法将被触发,您将在实现中处理它。在失败时,paymentDidFailWithError委托方法被触发。
预授权支付是指商家在不要求用户明确发起此类支付的情况下,如果能提供用户已授权特定商家的此类交易,则可以向用户收费。为了此目的使用框架,您必须像下面这样初始化KongaPayRegisteration类
KongaPayRegisteration *_regHandler = [[KongaPayRegisteration alloc] initWithLinkMerchantView:view theMerchantID:@"Merchant_id" theClientKey:@"Client_Key" isLiveEnvironment:Value];
view = 您的viewcontroller视图或用于初始化支付服务的Uiview。
Merchant_id = 您作为希望使用KongaPay支付服务的商户的商户ID。在您注册KongaPay时,这已被提供给您。
Client_Key = 这是您在注册KongaPay时作为商户或卖家获得的客户端密钥。
Value = 一个布尔值,表示您实施的环境。值为“YES”表示您使用的是生产环境,而值为“NO”表示您使用的是测试环境。
在成功进行预授权支付后,上述过程3中列出的linkMerchantDidCompleteSuccessfully委托方法将被触发,其响应对象为一个连接令牌。您可能需要提供此令牌以执行服务订阅者的自动计费。在失败时,linkMerchantDidFailWithError委托方法被触发。
最后,您需要在初始化后如上所述将KongaPayPaymentService委托设置到您的viewcontroller或视图中。如果没有设置委托,您将不会从上述过程3中实现的四个委托方法中收到响应。
_regHandler.delegate = self;
在将用户的KongaPay账户成功链接到商家账户后,KongaPay会向商家提供一个支付令牌,商家可使用该令牌代表用户进行支付。本文档介绍如何使用KongaPay支付令牌代表用户进行支付。此假设为,商家已实现了需扣款的KongaPay支付令牌。
所有对KongaPay的请求都需要一个访问令牌。要生成访问令牌,KongaPay应向商家提供商家编号和客户端密钥。
参数定义:merchant_id - 由KongaPay提供的商家编号。字符串(最大15个字符)client_secret - 由KongaPay提供的客户端密钥。商家应安全保管该密钥。字符串(最大30个字符)access_code - 访问码是通过向认证服务器发起GET请求生成的。访问码用于生成访问令牌。它将在30秒后过期。字符串(最大128个字符)access_token - 进行任何KongaPay请求都需要访问令牌。它将在6小时后过期。字符串(最大128个字符)refresh_token - 在访问令牌过期后,可以使用刷新令牌获取新的访问令牌。它将在14天后过期。字符串(最大128个字符)
OAuth 2.0认证 本流程遵循标准OAuth 2.0流程,其中:客户端请求访问码KongaPay在第一步请求成功后返回访问码客户端使用访问码请求访问令牌KongaPay在第三步请求成功后返回访问令牌和刷新令牌客户端然后使用访问令牌从服务器请求资源。
OAuth基础URL:https://staging-auth.kongapay.com
步骤I:请求访问码的URL:{{oauth_base_url}}/authorize?response_type=code&client_id={merchant_id}&state=alive 请求类型:GET
步骤II成功消息:{ "status": "success", "data": { "code": "{access_code}" } }
错误消息:{ "error": "invalid_client", "error_description": "提供的客户端id无效" }
步骤III:使用访问码请求令牌的URL:{{oauth_base_url}}/token 请求类型:POST(application/json) 参数:grant_type = authorization_code code = {access_code}(从步骤II返回的代码)client_id = {merchant_id} client_secret = {client_secret}
步骤IV:针对步骤III的成功消息 { "access_token": "{access_token}", "expires_in": 21600, "token_type": "Bearer", "scope": null, "refresh_token": “{refresh_token}” }
错误消息 { "error": "invalid_grant", "error_description": "授权码不存在或对客户端无效" }
步骤V-a:使用刷新令牌获取另一个访问令牌的URL:{{oauth_base_url}}/token 请求类型:POST 接收以下参数的表单数据 post:grant_type = refresh_token refresh_token = “{refresh_token}”(从步骤2返回的刷新令牌)client_id = “{merchant_id}” client_secret = “{client_id}”
步骤V-b:服务器返回另一个令牌。{ "access_token": “{access_token}”, "expires_in": 21600, "token_type": "Bearer", "scope": null }
注意:令牌/代码过期 访问令牌在6小时后过期。一旦访问令牌过期,可以使用刷新令牌请求另一个令牌,该令牌将再持续6小时。然而,刷新令牌在14天后过期。一旦刷新令牌过期,客户端需要请求另一个访问码,这将再次从头开始整个流程。访问码在请求后30秒过期,这意味着访问码必须在30秒内用于请求令牌。
这允许商家使用KongaPay提供的支付令牌,对关联的KongaPay账户进行扣款。
KongaPay的基本URL: https://api-sandbox.kongapay.com/v3/
参数定义:merchant_id - 由KongaPay提供的商家ID。字符串(最长15个字符)。access_token - 发送对KongaPay的任何请求都需要访问令牌。6小时后过期。字符串(最长128个字符)。payment_reference - 商家提供的唯一支付参考。字符串(最长32个字符)。token - 在通过SDK或网页将KongaPay账户与商家账户成功关联后,KongaPay提供的支付令牌。字符串(最长150个字符)。amount - 以奈拉和科博进行扣款的金额。例如,2005.45将被读取为“二千奈拉四十五科博”。字符串(最长10个字符)。currency_code - 交易货币代码。目前仅接受奈拉(代码为566)。字符串(最长3个字符)。status - 交易的状态。期望值为“成功”或“错误”。transaction_reference - 在成功交易后,KongaPay提供的交易参考。字符串(最长20个字符)。error_message - 当发生错误时,从KongaPay返回的错误消息。字符串(最长1000个字符)。error_code - 当发生错误时,从KongaPay返回的错误代码。字符串(最长5个字符)。
需要上面第1点中的访问码才能使用支付令牌进行支付。
端点: {{kongapay_base_url}}/payments/wallet/merchant/{merchant_id}/pay?access_token={access_token}
请求: 请求类型:POST 接收以下格式的JSON有效载荷: { "payment_reference": "{payment_reference}", "token": "{token}", "amount": "{amount}", "currency_code": "566" }
成功响应: { "status": "success", "data": { "transaction_reference": "{transaction_reference}" } }
错误响应: { "status": "error", "message": “{error_message}”, "code": “{error_code}” }
这允许商家使用在支付时使用的支付参考来重新查询KongaPay交易。
KongaPay的基本URL: https://api-sandbox.kongapay.com/v3/
参数定义:merchant_id - 由KongaPay提供的商家ID。字符串(最长15个字符)。access_token - 发送对KongaPay的任何请求都需要访问令牌。6小时后过期。字符串(最长128个字符)。payment_reference - 商家提供的唯一支付参考。字符串(最长32个字符)。token - 在通过SDK或网页将KongaPay账户与商家账户成功关联后,KongaPay提供的支付令牌。字符串(最长150个字符)。amount - 以奈拉和科博进行扣款的金额。例如,2005.45将被读取为“二千奈拉四十五科博”。字符串(最长10个字符)。currency_code - 交易货币代码。目前仅接受奈拉(代码为566)。字符串(最长3个字符)。status - 交易的状态。期望值为“成功”或“错误”。transaction_reference - 在成功交易后,KongaPay提供的交易参考。字符串(最长20个字符)。response_code - 检查下面的响应代码和描述。error_message - 当发生错误时,从KongaPay返回的错误消息。字符串(最长1000个字符)。error_code - 当发生错误时,从KongaPay返回的错误代码。字符串(最长5个字符)。
需要上面第1点中的访问码才能使用支付令牌进行支付。
端点: {kongapay_base_url}/payments/{payment_reference}/merchant/{merchant_id}?access_token={access_token}
请求: 请求类型:GET
成功响应: { "status": "success", "data": { "payment_reference": "{payment_reference}", "amount": "{amount}", "transaction_status": "{transaction_status}", "currency_code": "566", "transaction_reference": "{transaction_reference}" "type": "incoming", "transaction_date": "2016-02-29 14:02:30" } }
响应代码和描述 K00 - 成功 K01 - 资金不足 K02 - 交易未找到 K03 - 失败