WayForPay-Swift-Client
使用 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"),
]
)
]
使用 Cocoapods 安装
pod "WFPClient", '0.2.2'
导入
import WFPClient
使用
- 创建对象 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 时,您将收到 WFPChargeResponse 结构体,其中保证有
wfpChargeResponse.reason /// String
wfpChargeResponse.reasonCode /// WFPReasonCode - enum со всеми кодами ошибок и их описаниями description
根据这些信息,您可以确定选择哪个完成状态,并确定您的后续操作
这就完成啦:)
如何使用 Apple Pay 和 WayForPay-Swift-Client 通过 WayForPay 支付网关直接从 iOS 进行设置。
-
您需要在 https://wayforpay.com 上注册。
-
您需要添加商店并通过其激活。
-
在您的商店激活后,需要通过电子邮件 [email protected] 申请获取证书。
-
在您收到通过电子邮件发送的用于创建证书的请求文件后,您首先需要创建 MerchantID indentifier
-
4.1 Description 可以是任何内容,Identifier 必须是与应用关联的网站域名,例如:如果您的域名是https://example.com.ua,则商家 merchant.ua.com.example
-
4.2 然后再次转到 Identifiers 页面,在右侧选择列表 Merchant IDs,点击您刚刚创建的 MerchantID