cloudpayments / cloudpayments-sdk-ios Goto Github PK
View Code? Open in Web Editor NEWSDK CloudPayments IOS v2
SDK CloudPayments IOS v2
Из-за отсутствия фиксации одной стабильной версии YandexPaySDK (при каждом обновлении пода CloudPayments обновляется и YandexPaySDK) нет возможности установить новые версии Cloudpayments при таргете прилы < 13 (при попытке установки 1.2.15 поды пишут, что минимальная таргет версия приложения (у нас - 12.0) не поддерживается). Также отсылаю к этой issue #20, данная проблема также была связана с отсутствием жесткой фиксации версии YandexPaySDK (яндекс пей сдк обновилось, а название делегатов остались прежними - соответственно летели ошибки компиляции).
Просьба зафиксировать жестко версию YandexPaySDK внутри вашего фреймворка.
Выдает что нет модуля
No such module 'YandexPaySDK'
Добавьте поддержку SPM.
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "CloudPayments",
platforms: [
.iOS(.v13),
],
products: [
// Products define the executables and libraries a package produces, and make them visible to other packages.
.library(
name: "CloudPayments",
targets: ["CloudPayments"]),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.3.0"),
.package(url: "https://github.com/tristanhimmelman/ObjectMapper.git", from: "4.2.0")
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages this package depends on.
.target(
name: "CloudPayments",
dependencies: [
"Alamofire",
"ObjectMapper"
]),
.testTarget(
name: "CloudPaymentsTests",
dependencies: [
"Alamofire",
"ObjectMapper",
"CloudPayments"
]),
]
)
Провожу интеграцию в ios приложение и стоит задача отправки email пользователя во время передачи данных PaymentData. Передача вместе с jsonData не отображает email в админке, таким образом стоит вопрос, как можно отправить email пользователя вместе с PaymentData? Интеграция проводится со стандартной формой. Видел возможность передачи email со своей формой, но там нужна криптограмма. Есть ли возможность передавать email со стандартной формой без использования криптограммы?
orderID = 123
let paymentData = PaymentData.init(publicId: "...")
.setAmount("1")
.setCurrency(.ruble)
.setAccountId("111")
.setInvoiceId("(orderId)")
let configuration = PaymentConfiguration.init(
paymentData: paymentData,
delegate: self,
uiDelegate: self,
scanner: nil,
useDualMessagePayment: true,
disableApplePay: true
)
PaymentForm.present(with: configuration, from: self)
после запуска кода, получаем эксепшн:
CloudpaymentsSDK/Bundle+Extenstions.swift:15: Fatal error: Unexpectedly found nil while unwrapping an Optional value
2022-04-08 20:57:51.540116+0500 papoose[34497:4851643] CloudpaymentsSDK/Bundle+Extenstions.swift:15: Fatal error: Unexpectedly found nil while unwrapping an Optional value
import Foundation
extension Bundle {
class var mainSdk: Bundle {
let bundle = Bundle.init(for: PaymentForm.self)
let bundleUrl = bundle.url(forResource: "Cloudpayments", withExtension: "bundle")
return Bundle.init(url: bundleUrl!)! -------> вот на этой строке, ругается на bundleUrl!
}
}
Hello
Can you fix compile error for XCode 14?
Платеж не проходит, но SDK заканчивает процедуру успешно. Такое происходит если проект в который встраивается SDK таргетирован на iOS 14 или выше.
Для iOS 14 в WKWebView нужно явно разрешать JavaScript.
Заработало после добавления в ThreeDsProcessor.swift
> let webView = WKWebView.init()
+ webView.configuration.preferences.javaScriptEnabled = true
+ if #available(iOS 14.0, *) {
+ webView.configuration.defaultWebpagePreferences.allowsContentJavaScript = true
+ }
> webView.navigationDelegate = self
В репозитории предыдущей версии sdk была заведена issue по добавлению sdk в публичный репозиторий Cocoapods. Вы закрыли issue, ссылаясь на эту новую версию sdk, но она также не выложена в Cocoapods и её также приходится подключать через git. Копирую сюда текст проблемы из старой issue.
В некоторых ситуациях невозможно воспользоваться этим SDK из-за того, что он не публичный.
Например, добавить как зависимость другой библиотеке.
.podspec синтаксис dependency https://guides.cocoapods.org/syntax/podspec.html#dependency не поддерживает git-ссылки на репозиторий библиотеки.
Есть ли у вас в планах добавление sdk в паблик?
.../Cloudpayments/sdk/Sources/PaymentForm/PaymentOptionsForm.swift:23:13 Type 'PaymentOptionsForm' does not conform to protocol 'YandexPayButtonDelegate'
Pods/YandexLoginSDK/lib/Classes/Private/Core/Storage/YXLSecureStorage.m:36:47 'unarchiveObjectWithData:' is deprecated: first deprecated in iOS 12.0 - Use +unarchivedObjectOfClass:fromData:error: instead
После установки пода выпадает всегда ошибка эта в билде.
Поды подключаю вот так по документации.
#Payment
pod 'Cloudpayments', :git => "https://github.com/cloudpayments/CloudPayments-SDK-iOS", :branch => "master"
pod 'CloudpaymentsNetworking', :git => "https://github.com/cloudpayments/CloudPayments-SDK-iOS", :branch => "master"
Если не указывать appId приложение крашится Thread 1: Fatal error: YandexPaySDK could not find appId.
Is it possible to lower the deployment target for the sdk to 10.0?
Привет!
Мы в нашем проекте сейчас используем CodyFire которая базируется на Alamofire 4 и как я понимаю CloudPayments использует Alamofire 5. В результате cocoapods ни на что не ругается (потому что в вашем podspec явно версия Alamofire не указана), но SDK CloudPayments не компилируется явно из-за того, что установлен Alamofire 4.
CodyFire наша разработка, мы сами планируем выпилить Alamofire за ненадобностью и всегда хорошо выбросить лишнюю зависимость.
В данный момент пока не знаем что делать, возможно быстро перепишем CodyFire без Alamofire, чтобы не блочить разработку т.к. интеграция платежки это последнее, что осталось перед релизом нашего приложения.
Мы и вам желаем от Alamofire избавиться как можно скорее 🙂
private func openPaymentPage(model: CloudPaymentsViewModel.PaymentModel) {
let paymentData = PaymentData()
.setAmount(model.amount)
.setCurrency(model.currency)
.setAccountId(model.userId)
.setEmail(model.email)
.setPayer(model.payerData)
let configuration = PaymentConfiguration.init(
publicId: model.publicKey,
paymentData: paymentData,
delegate: self,
uiDelegate: self,
scanner: nil,
showEmailField: true,
useDualMessagePayment: true,
disableApplePay: true,
disableYandexPay: true)
let formVC = PaymentForm.present(with: configuration, from: self)
}
Below is your code which closes that form and it doesn't have the calls of that delegate methods
self.closeButton.onAction = { [weak self] in
guard let self = self else {
return
}
let parent = self.presentingViewController
self.dismiss(animated: true) {
if let parent = parent {
if !self.configuration.disableApplePay || !self.configuration.disableYandexPay {
PaymentForm.present(with: self.configuration, from: parent)
}
}
}
}
It would be great to have also in the delegate
method a property which will indicate which exact form was closed PaymentCardForm
or PaymentProcessingForm
or others
При попытке оплаты выдает ошибку Try Again
Версия 1.1.11 не билдится под iOS 12.0, на более новых ОС такая же проблема
Так же хотелось бы вас попросить рассмотреть возможность отказаться от добавления дополнительных зависимостей, в частности SnapKit и PromiceKit. Они заметно увеличивают вес билда.
Лог ошибок прилагаю
Failed to build module 'YandexPaySDK'; this SDK is not supported by the compiler (the SDK is built with 'Apple Swift version 5.4.2 (swiftlang-1205.0.28.2 clang-1205.0.19.57)', while this compiler is 'Apple Swift version 5.6.1 (swiftlang-5.6.0.323.66 clang-1316.0.20.12)'). Please select a toolchain which matches the SDK.
Failed to build module 'XPlatPaySDK'; this SDK is not supported by the compiler (the SDK is built with 'Apple Swift version 5.4.2 (swiftlang-1205.0.28.2 clang-1205.0.19.57)', while this compiler is 'Apple Swift version 5.6.1 (swiftlang-5.6.0.323.66 clang-1316.0.20.12)'). Please select a toolchain which matches the SDK.
Попытки подгрузить библиотеку заканчиваются ошибкой: Cloudpayments
does not specify a Swift version and none of the targets (ios
) integrating it have the SWIFT_VERSION
attribute set. Please contact the author or set the SWIFT_VERSION
attribute in at least one of the targets that integrate this pod.
Исходя из текста данной ошибки подозреваю, что нужно добавить версию Swift в podspec файл Cloudpayments-SDK-IOS.podspec. Помогите разобраться с данной проблемой. Поиск информации о том, как добавить версию Swift в iOS таргеты в kotlin multiplatform не дал никакого результата, все предложения оказались нерабочими
Вечная загрузка, которая обрывается по таймауту от сервера
Лог ошибки:
2021-04-21 18:13:47.788221+0700 demo[1398:1665715] [Snapshotting] Snapshotting a view (0x7f8dc9d18100, _UIButtonBarStackView) that has not been rendered at least once requires afterScreenUpdates:YES.
2021-04-21 18:13:47.955069+0700 demo[1398:1666135] [] nw_protocol_get_quic_image_block_invoke dlopen libquic failed
2021-04-21 18:14:47.831326+0700 demo[1398:1667716] Task <24B62552-5FF2-4D44-9838-AF49ECC089BD>.<1> finished with error [-1001] Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x6000022f0c90 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <24B62552-5FF2-4D44-9838-AF49ECC089BD>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <24B62552-5FF2-4D44-9838-AF49ECC089BD>.<1>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://wp-demo.cloudpayments.ru/index.php/wp-json/wc/v3/products, NSErrorFailingURLKey=https://wp-demo.cloudpayments.ru/index.php/wp-json/wc/v3/products, _kCFStreamErrorDomainKey=4}
Ошибка при запросе данных Optional(Alamofire.AFError.sessionTaskFailed(error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x6000022f0c90 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <24B62552-5FF2-4D44-9838-AF49ECC089BD>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <24B62552-5FF2-4D44-9838-AF49ECC089BD>.<1>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://wp-demo.cloudpayments.ru/index.php/wp-json/wc/v3/products, NSErrorFailingURLKey=https://wp-demo.cloudpayments.ru/index.php/wp-json/wc/v3/products, _kCFStreamErrorDomainKey=4}))
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.