WayForPay-Swift-Client
Install with Swift Package Manager
dependencies: [
.package(name: "WFPClient", url: "https://github.com/nerzh/WayForPay-Swift-Client.git", from: "0.2.0"),
],
targets: [
.target(
name: "YourProject",
dependencies: [
.product(name: "WFPClient", package: "WFPClient"),
]
)
]
Install with Cocoapods
pod "WFPClient", '0.2.2'
Import
import WFPClient
Usage
- Создаем объект request
let request: WFPChargeRequest = .init(transactionType: .CHARGE,
merchantAccount: "мерчант из кабинета WayForPay",
merchantDomainName: "https://адрес вашего сайта",
orderReference: "id заказа с вашей базы",
orderDate: "дата заказа",
currency: .UAH,
clientFirstName: "Имя клиента",
clientLastName: "Фамилия клиента",
clientCountry: "Ukraine",
clientEmail: "почтовый ящик клиента",
clientPhone: "телефон клиента",
merchantTransactionType: .SALE,
merchantTransactionSecureType: .NON3DS)
- Создаем объект client, среди необязательных параметров есть httpClient, он наследуется от протокола WFPHttpClientPrtcl и требует реализовать всего один метод с помощью которого отправляется запрос на сервер WayForPay, по умолчанию запрос отправляется с помощью URLSession, если хотите можете реализовать свой и передеать его как параметр клиенту
let client = WFPClient.init(apiURL: URL(string: "https://api.wayforpay.com/api")!,
request: request,
secretKey: "секретный ключ из кабинета WayForPay для генерации подписи к запросу")
- Так как информация о продукте по протоколу добавляется последовательно в три массива и кейс, в котором ими туда сюда надо будет манипулировать выглядит довольно странно, я сделал два метода:
- собственно добавить продукт к запросу
client.addProduct(name: "Test Product", price: 100.50, count: 2)
client.addProduct(name: "Test Product 2", price: 2.50, count: 1)
- и на всякий случай метод удаления всех продуктов из запроса
client.deleteProducts()
- Сумма считается автоматичекси, но если ваша итоговая сумма отличается, можно задать
client.request.amount = 199.99
- Генерируем подпись. Подпись надо генерировать после того, как в запросе будут заполнены все поля
client.generateSignature()
- Теперь после того, как в методе делегата вы получили PaymentToken, добавляем его к запросу и можно отправлять запрос на оплату в WayForPay и в зависимости от ответа сервера вызывать handler complete
func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController,
didAuthorizePayment payment: PKPayment,
handler completion: @escaping (PKPaymentAuthorizationResult) -> Void
) {
client.addApplePaymentData(paymentData: payment.token.paymentData)
do {
try client.sendPaymentRequest { (result) in
switch result {
case let .success(wfpChargeResponse):
if wfpChargeResponse.reasonCode == WFPReasonCode.Ok {
completion(PKPaymentAuthorizationResult(status: .success, errors: nil))
} else {
completion(PKPaymentAuthorizationResult(status: .failure, errors: nil))
}
case .failure(error):
completion(PKPaymentAuthorizationResult(status: .failure, errors: nil))
}
}
} catch {
completion(PKPaymentAuthorizationResult(status: .failure, errors: nil))
}
}
- В ответ на sendPaymentRequest от WayForPay вы получите структуру WFPChargeResponse в которой гарантированно будут
wfpChargeResponse.reason /// String
wfpChargeResponse.reasonCode /// WFPReasonCode - enum со всеми кодами ошибок и их описаниями description
в зависимости от которых вы сможете определить какой completion status выбирать и определить ваши дальнейшие действия
Вот и всё :)
Инструкция - как настроить оплату с помощью Apple Pay и WayForPay-Swift-Client через платежный шлюз WayForPay напрямую с iOS.
-
Вам необходимо зарегистрироваться на сайте https://wayforpay.com
-
Вам необходимо добавить магазин и пройти его активацию.
-
После того, как ваш магазин будет активирован надо запросить по почте support@wayforpay.com запрос на получение сертификата.
-
После того как вам на почту прийдет файл запроса для того, чтобы создать сертификат вам в начале потребуется создать MerchantID indentifier:
-
4.1 Description может быть любой, Identifier поговаривают, что должен быть как домен сайта закрепленного за приложением, например такой: если ваш домен https://example.com.ua, то мерчант merchant.ua.com.example
-
4.2 Далее переходите снова на страницу Identifiers, справа выбераете список Merchant IDs и тыкаете в ваш только созданный MerchantID
-
4.3 Там вы уже сможете создать сертификат с помощью файла запроса, который вам прислала поддержка WayForPay ранее на почту