WebPay 2.0.3

WebPay 2.0.3

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2015年12月

Yohei OkadaYohei Okada 维护。



WebPay 2.0.3

  • yohei okada

webpay-token-ios

webpay-token-ios 是一个 iOS 库,可用于从信用卡创建 WebPay 代币。

使用 Card.io 的示例应用程序

有一个 示例应用程序 使用 card.io

要求

webpay-token-ios 支持iOS 7及以上。

安装

您可以使用 Cocoapods(推荐)或手动复制文件来安装。

2. 手动复制文件

  1. 克隆此存储库
  2. 将 Webpay 目录下的文件添加到您的项目中

对于 Objective-C 项目

在您的文件中添加`#import 'Webpay.h'`,然后检查您的目标是否建立无错误。

对于 Swift 项目

您需要创建一个桥接头并将`#import "Webpay.h"`添加到头文件中,以便在 Swift 代码中使用库。有关如何创建桥接头的信息,请参阅Apple 的文档

概览

webpay-token-ios 由 3 个组件组成。

  1. WPYPaymentViewController(视图控制器)
  2. WPYTokenizer(创建代币的模型)
  3. WPYCardFormView(卡表单视图)

如果您需要一个可以插入视图控制器的应用程序,WPYPaymentViewController 是最佳选择。WPYTokenizer 是为计划从头开始创建自己的视图和视图控制器进行开发的开发者准备的。它提供了访问 WebPay API 的 API。WPYCardFormView 提供了一个带有验证的表单。

如何使用

初始化

使用此库中的任何组件都需要进行初始化。

// objective-c

#import "Webpay.h"

// replace test_public_YOUR_PUBLIC_KEY with your WebPay publishable key
[WPYTokenizer setPublicKey:@"test_public_YOUR_PUBLIC_KEY"];
// swift

// replace test_public_YOUR_PUBLIC_KEY with your WebPay publishable key
WPYTokenizer.setPublicKey("test_public_YOUR_PUBLIC_KEY")

WPYPaymentViewController

如果您只是想要一个用于`pushViewController:animated`或`presentViewController:animated:completion:`的视图控制器,这就是您想要的。

// objective-c
// version 2.x
WPYPaymentViewController *paymentViewController = [WPYPaymentViewController paymentViewControllerWithPriceTag:@"¥350" callback:^(WPYPaymentViewController *viewController, WPYToken *token, NSError *error) {
  if (error)
  {
    NSLog(@"error:%@", [error localizedDescription]);
  }
  else
  {
    //post token to your server

    // when transaction is complete
    [viewController setPayButtonComplete]; // this will change the button color to green and its title to checkmark
    [viewController dismissAfterDelay: 2.0f];
  }
}];

[self.navigationController pushViewController:paymentViewController animated:YES];

// version 1.x
WPYPaymentViewController *paymentViewController = [[WPYPaymentViewController alloc] initWithPriceTag:@"¥350" callback:^(WPYPaymentViewController *viewController, WPYToken *token, NSError *error) {
  if (error)
  {
    NSLog(@"error:%@", [error localizedDescription]);
  }
  else
  {
    //post token to your server

    // when transaction is complete
    [viewController setPayButtonComplete]; // this will change the button color to green and its title to checkmark
    [viewController dismissAfterDelay: 2.0f];
  }
}];

[self.navigationController pushViewController:paymentViewController animated:YES];
// swift

let paymentViewController = WPYPaymentViewController(priceTag: "¥350", callback: { viewController, token, error in
  if let newError = error {
    println("error:\(error.localizedDescription)")
  } else {
    //post token to your server

    // when transaction is complete
    viewController.setPayButtonComplete()
    viewController.dismissAfterDelay(2.0)
  }
})

self.navigationController?.pushViewController(paymentViewController, animated: true)

如果要使用`initWithPriceTag:card:callback:`在卡表单中填充卡片数据,请使用该方法。

WPYTokenizer (模型)

如果您正在创建自己的视图,请使用 WPYTokenizer 创建令牌。

// objective-c

#import "Webpay.h"

// create a credit card model and populate with data
WPYCreditCard *card = [[WPYCreditCard alloc] init];
card.number = @"4242424242424242";
card.expiryYear = 2015;
card.expiryMonth = 12;
card.cvc = @"123";
card.name = @"TARO YAMADA";

// pass card instance and a callback
[WPYTokenizer createTokenFromCard:card
                  completionBlock:^(WPYToken *token, NSError *error) {
  if (error)
  {
    NSLog(@"error:%@", [error localizedDescription]);
  }
  else
  {
    NSLog(@"token:%@", token.tokenId);
  }
}];
// swift

// create a credit card model and populate with data
let card = WPYCreditCard()
card.number = "4242424242424242"
card.expiryYear = 2015
card.expiryMonth = WPYMonth.December
card.cvc = "123"
card.name = "TARO YAMADA"

// pass card instance and a callback
WPYTokenizer.createTokenFromCard(card, completionBlock: {token, error in
  if let newError = error {
    println("\(error)")
  } else {
    println("\(token.tokenId)")
  }
})

WPYCardFormView (视图)

WPYCardFormView 是一个信用卡表单视图,当表单有效时调用其代理方法。它可以处理信用卡号填充、安全码掩码以及验证每个字段。

// objective-c

// create view
WPYCreditCard *card = [[WPYCreditCard alloc] init];
WPYCardFormView *cardForm = [[WPYCardFormView alloc] initWithFrame:CGRectMake(0, 0, 320, 300) card:card];
cardForm.delegate = self;
[self.view addSubview: cardForm];

// WPYCardFormDelegate methods
- (void)validFormWithCard:(WPYCreditCard *)creditCard
{
  // called when the form is valid.
}
// swift

// create view
let card = WPYCreditCard()
let form = WPYCardFormView(frame: CGRect(x: 0, y: 0, width: 320, height: 320), card: card)
form.delegate = self
self.view.addSubview(form)

// WPYCardFormDelegate methods
func validFormWithCard(creditCard: WPYCreditCard!) {
  // called when the form is valid.
}

如果您希望有更精细的控制,请使用 WPYAbstractCardField 的子类。

其他类

WPYCreditCard

WPYCreditCard 提供各种验证方法。要验证整个卡,使用 - (BOOL)validate:

// objective-c

NSError *cardError = nil;
if (![card validate:&cardError])
{
  NSLog(@"error:%@", [cardError localizedDescription]);
}
// swift

var cardError: NSError?
if !card.validate(&cardError) {
  println("error:\(cardError.localizedDescription)")
}

要验证每个属性,请使用 - (BOOL)validatePROPERTY:error:

// objective-c

NSString *number = @"4242424242424242";
NSError *cardError = nil;
WPYCreditCard *card = [[WPYCreditCard alloc] init];
if (![card validateNumber:&number error:&cardError])
{
  NSLog(@"error:%@", [cardError localizedDescription]);
}
// swift

var number: AnyObject? = "4242424242424242"
var cardError: NSError?
let card = WPYCreditCard()
if !card.validateNumber(&number, error:&cardError) {
  println("error:\(cardError.localizedDescription)")
}

检查品牌名称的部分号码

// objective-c

[WPYCreditCard brandNameFromPartialNumber:@"42"];
// swift

WPYCreditCard.brandNameFromPartialNumber("42")

WPYToken

WPYToken 保存 Webpay API 返回的令牌数据。

WPYError

此类定义了所有源自 webpay-ios-token 的错误。