【发布时间】:2016-03-14 04:14:54
【问题描述】:
所以我一直在尝试将 Stripe 与我的 swift 代码集成,到目前为止,我有以下代码用于测试。我打印了信用卡号,因为它需要在 Stripe 端创建一个令牌,并且它正确反映了 Stripe 使用的测试信用卡号(例如 4242424242424242)(我也为 cvc 和 exp 日期输入了随机数),但是, “validateCardReturningError”总是跳过“createTokenWithCard”函数来执行“print(“Error”)”。在尝试调试时,我还注释掉了“validateCardReturningError”以查看是否获得了令牌,但我得到了 nil 作为令牌的值。
这种行为让我相信与 Stripe 的通信实际上并没有发生,因此没有生成令牌。如果是这样,有没有办法测试通信?或者,有没有办法检查“validateCardReturningError”返回的值是什么?
if (userExpiration.isEmpty){ let expArr = userExpiration.componentsSeparatedByString("/")
if (expArr.count > 1) {
let expMonth: NSNumber = Int(expArr[0])!
let expYear: NSNumber = Int(expArr[1])!
creditCard.expMonth = expMonth.unsignedLongValue
creditCard.expYear = expYear.unsignedLongValue } }
print(creditCard.number)
do {
try creditCard.validateCardReturningError()
STPAPIClient.sharedClient().createTokenWithCard(
creditCard,
completion: { (token: STPToken?, stripeError: NSError?) -> Void in
print(token)
})
} catch {
print("Error")
}
我打印 stripeError 时遇到的错误是:
Optional(Error Domain=com.stripe.lib Code=50 "Missing required param: exp_month." UserInfo={com.stripe.lib:ErrorMessageKey=Missing required param: exp_month., com.stripe.lib:ErrorParameterKey=card[expMonth], NSLocalizedDescription=Missing required param: exp_month.})
【问题讨论】:
-
你在
stripeError得到了什么? -
以下是我得到的:可选(错误域=com.stripe.lib 代码=50“缺少必需的参数:exp_month。” UserInfo={com.stripe.lib:ErrorMessageKey=缺少必需的参数: exp_month., com.stripe.lib:ErrorParameterKey=card[expMonth], NSLocalizedDescription=Missing required param: exp_month.})
-
月份相关代码为: if (userExpiration.isEmpty){ let expArr = userExpiration.componentsSeparatedByString("/") if (expArr.count > 1) { let expMonth: NSNumber = Int( expArr[0])!让 expYear: NSNumber = Int(expArr[1])! creditCard.expMonth = expMonth.unsignedLongValue creditCard.expYear = expYear.unsignedLongValue } }
-
您应该编辑问题并在其中添加错误和附加代码,这样可读性会更好。
-
请注意,在您的代码中,仅当到期时间为空 (
if (userExpiration.isEmpty)) 时,您才对到期时间做一些事情,而不是当它不是时。因此,当用户实际输入任何数据时,您并没有使用它,也没有发送它。添加!否定测试。
标签: ios swift stripe-payments