Қойылатын талаптар

  1. Сізге ePay клиенті болу керек
  2. Сізге интеграциялық деректерді алу керек:
TerminalIDДүкен сәйкестендіргіші
ClientIDКлиент сәйкестендіргіші
ClientSecretҚұпия кілт
  1. Сіздің жобаңыздың Deployment target-і iOS 11 немесе одан жоғары болуы керек.

Тестілік деректер

ClientIDtest
ClientSecretyF587AV9Ms94qN2QShFzVR3vFnWkhjbAK3sG
TerminalID67e34d63-102f-4bd1-898e-370781d0074d

Қосылу

1. SDK импорты

  • EpaySDK.framework-ті [IOS framework] https://github.com/HFSEpayment/EpaySDK бойынша жүктеп алыңыз
  • Архивті ашыңыз
  • Ашылған SDK-ны жобаңыздың түбірлік папкасына көшіріп алыңыз

Screenshot 2023-08-10 at 08.19.59

  • Қосымшаның негізгі таргетінің General-ына өтіңіз. 'Frameworks, Libraries and Embedded Content' бөлімін тауып, плюсті басыңыз

Screenshot 2023-08-10 at 08.21.54

  • Пайда болған терезеде 'Add Other → Add Files'

таңдаңыз Screenshot 2023-08-10 at 08.22.18

  • Сіздің жобаңыздың түбірінен 'EpaySDK.framework' табыңыз және оны жобаға қосыңыз

Screenshot 2023-08-10 at 08.24.15

  • SDK Embed = Embed & Sign-мен пайда болғанына көз жеткізіңіз

Screenshot 2023-08-10 at 08.24.44

2. Авторизацияны баптау

Авторизация конфигурацияларының инстансын жасаңыз. Сіз инстансты константаларда сақтай аласыз немесе Төлем бетін немесе Аударым бетін. тікелей инициализациялау кезінде жасай аласыз

import EpaySDK модулін импорттаңыз import EpaySDK

Авторизация конфигурациясының инстансын жасаңыз

let config = AuthConfig(
 merchantId: <Идентификатор магазина TerminalID, полученнный от epay>,
 merchantName: <Наименование Магазина>,
 clientId: <Идентификатор клиента ClientID, полученнный от epay>,
 clientSecret: <Секретный ключ ClientSecret, полученнный от epay>
)

3. Invoice моделін дайындау

Төлем/аударым түріне байланысты Invoice моделін дайындаймыз. Толығырақ Төлем беті және Аударым беті беттерінде

4. Ақы төлеу бетін іске қосу

'Invoice' моделін инициализацияғаннан кейін 'AuthConfig' авторизациясын баптау қажет және жасалған 'Invoice' 'PaymentModel' конструкторына жіберілуі керек. Соңғысы одан әрі 'LaunchScreenViewController' - ге жіберіледі.

   import EpaySDK

   let pm = PaymentModel(authConfig: <Бұрын бапталған AuthConfig, 
   invoice: <жоғарыдағы тармақпен жасалған Invoice инстансы >)
   let launchScreenVC = LaunchScreenViewController(paymentModel: pm)
   launchScreenVC.setEnvironmetType(type: .dev) //type: .prod өнімдік орта үшін

ViewController-а SDK-ні іске қосу

SDK навигациясы 'UINavigationController' негізінде жұмыс істейді. Егер сіз қазірдің өзінде 'UINavigationController' негізінде болсаңыз, онда 'navigationController'-ге Viewcontroller SDK-ні жіберіңіз

     navigationController?.pushViewController(launchScreenVC, animated: true)

Басқаша, егер сіз 'storyboards'-пен жұмыс жасап жатсаңыз, онда сізге 'UINavigationController' инстансын инициализациялау керек, бастапқы бет ретінде SDKбар 'LaunchScreenViewController'-ді тағайындаңыз және storyboard navigationController-де көрсетіңіз. Мысал:

   class ViewController: UIViewController {  
   	var customNavigationController: UINavigationController?

    @objc fun launchPaymentVC(paymentModel: PaymentModel) {
   	let launchScreenVC = LaunchScreenViewController(paymentModel: pm)
     launchScreenVC.setEnvironmetType(type: .dev) //type: .prod өнімдік орта үшін
     launchScreenVC.modalPresentationStyle = .fullScreen
     self.customNavigationController = UINavigationController(rootViewController: launchScreenVC)
     self.customNavigationController?.modalPresentationStyle = .fullScreen
   	self.present(self.customNavigationController ?? launchScreenVC, animated: true)
   }

   }

5. EpaySDK жауаптарын өңдеуді баптау

EpaySDK жауабын өңдеу үшін Observer-ді қосыңыз

    NotificationCenter.default.addObserver(
    	self, 
    	selector: #selector(handleSdkResponse), 
    	name: Notification.Name("sdk_response"), 
    	object: nil
    )

Маңызды: Хабарландыру түрі 'sdk_response' болуы керек, бірақ сіз 'handleSdkResponse' өңдеуші әдісінің атауын өзгерте аласыз

6. Жауапты өңдеу

СТөлемді/аударымды өңдеу нәтижесі бойынша хабарламаны өңдеу үшін функция жасаңыз(алдыңғы тармақтан 'handleSdkResponse'' функциясы).

Жауап форматы:

     isSuccessful: Bool,
     paymentReference: String,
     errorCode: Int,
     errorMessage: String    

Өңдеушінің мысалы:

    @objc func handleSdkResponse(_ notification: Notification) {
      navigationController?.popToViewController(self, animated: true) // 1
     //self.customNavigationController?.dismiss(animated: true) // егер сізде SDK-ға құрылған SDK UINavigationController болса
     let isSuccessful = notification.userInfo?["isSuccessful"] as? Bool // 2
     if isSuccessful == true { // 3
        let reference = notification.userInfo?["paymentReference"] as? String
      } else { // 4
        let errorCode = notification.userInfo?["errorCode"] as? Int
        let errorMessage = notification.userInfo?["errorMessage"] as? String
      }  
    }

Бұл жерде қадамдар:

  1. SDK-дан шығу
  2. Төлем мәртебесін анықтау
  3. Сәтті болған жағдайда төлем референсін алу
  4. Басқалай болған жағдайда қате коды мен мәтінін алу

7. Төлемді немесе аударымды орнату

Әрі қарай, тікелей операция жасау үшін төлем үлгісін дайындап, қажетті операция түрін бастау керек. Толығырақ [Төлем Бетінде] (https://payment.kz/en-US/docs/sdk_payment_page ) және Тасымалдау Беттері беттер.