AdyenCSE 1.1.1

AdyenCSE 1.1.1

测试已测试
语言语言 Obj-CObjective C
许可协议 MIT
发布最新发布2017年11月

Oleg LutsenkoTaras KalapunDiego MarconJoost van Dijk维护。



AdyenCSE 1.1.1

  • Adyen

Adyen iOS CSE

Build Status
License
CocoaPods
CocoaPods
Carthage compatible

此仓库包含Adyen用于iOS的客户端加密(CSE)库。使用CSE,在将卡数据通过您的服务器提交到Adyen API之前,会在客户端(在这种情况下为iOS设备)对其进行加密。通过使用CSE,您可以减少您的PCI合规性范围,因为没有原始的卡数据会通过您的服务器传输。此仓库可以作为在应用中完全集成Adyen支付功能的起点。

要求

AdyenCSE-iOS库是用Objective-C编写的,与支持iOS 7.0及更高版本的应用兼容。寻找Android或Web的等效库?我们也有Java(AdyenCSE-Android)和JavaScript(AdyenCSE-web)的CSE库。

我们所有的CSE库都假设您已为自己的服务器设置用于与Adyen API通信。通过使用服务器,您确保API认证凭证永远不会被暴露。请注意,您需要先在Adyen注册一个账户,才能向Adyen API发送请求。

示例

为了便于使用,此仓库包含一个示例应用程序,可以作为集成的参考。

要运行示例项目,请在终端中键入:

pod try AdyenCSE

安装

AdyenCSE可通过CocoaPods或Carthage之一获得。

Cocoapods

  1. pod 'AdyenCSE'添加到您的Podfile中。
  2. 运行pod install

Carthage

  1. github "adyen/adyen-cse-ios"添加到您的Cartfile中。
  2. 运行carthage update
  3. 按照Carthage Readme中描述的方法将框架链接到您的目标。

用法

以下代码演示了如何收集和加密卡支付数据。

#import "AdyenCSE/AdyenCSE.h"

// Set the public key.
NSString *publicKey = @"10001|B243E873CB9220BAFE71...";

// Create a card object.
ADYCard *card = [ADYCard new];
card.generationtime = [NSDate new];
card.number = @"55551...";
card.holderName = @"John A...";
card.cvc = @"737";
card.expiryMonth = @"08";
card.expiryYear = @"2018";

// Encrypt card data.
NSData *cardData = [card encode];
NSString *encryptedCard = [ADYEncrypter encrypt:cardData publicKeyInHex:publicKey];

请注意,在从应用程序发送到您的服务器之前,您必须对encryptedCard值进行URL编码,因为encryptedCard由CSE库生成,并且必须与从服务器发送到Adyen API时完全相同。

NSURL *url = [NSURL URLWithString:merchantPaymentAuthoriseUrl];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";

NSString *body = [NSString stringWithFormat:@"encryptedCard=%@",[encryptedCardDetails ady_URLEncodedString]];
request.HTTPBody = [body dataUsingEncoding:NSUTF8StringEncoding];

下一步

服务器端

一旦您在服务器上获得了加密的支付信息,您应通过相应的API调用将其提交到对应的Adyen端点。以下代码示例演示了如何以JSON格式传递支付数据:

curl -u "[email protected]":"YourWsPassword" \
    -H "Content-Type: application/json" \
    -X POST \
    --data \
    '{
        "additionalData": {
        "card.encrypted.json":"adyenjs_0_1_4p1$..."
    },

    "amount" : {
        "value" : 2000,
        "currency" : "EUR"
    },

    "reference" : ["YourPaymentReference"],
    "merchantAccount" : ["YourMerchantAccountName"]
}'\
https://pal-test.adyen.com/pal/servlet/Payment/v18/authorise

定期支付

如果您的业务模式需要您定期向客户收费,您可以使用Adyen平台启用定期付款。在这种情况下,Adyen在您第一次进行授权调用时安全地存储付款详情,这样您就无需在未来再次提供这些数据。

要实现此功能,请将recurring字段添加到您从服务器发送给Adyen平台的付款请求中。例如,如果您想为特定付款启用非在场购物者一键定期模式,请在上面的API调用中添加以下字段

"recurring" : {
   "contract" : "RECURRING,ONECLICK"
}

有关定期付款的更多信息,请参阅Adyen文档

通知

开发完您的应用程序,设置了您的商户服务器并成功完成了第一次测试付款后,现在是时候通过注册Adyen的通知服务来完成您的集成。每次付款发起后,我们会向您的服务器推送一个授权响应的通知,这样您就可以确定是否可以开始交付您的商品或服务。

要订阅并集成通知服务,请查看我们的通知手册

上线

成功集成了我们的通知服务?恭喜,现在是时候开始真正接受付款了!假设您一直在使用Adyen测试账户和Adyen API的测试端点,您现在可以利用您的Adyen实时账户和Adyen API的实时端点

有问题?

如果您有任何问题或建议,请联系您的账户经理或发送您的询问至[email protected]

许可协议

此仓库是开源的,可在MIT许可证下获得。请参阅LICENSE文件以获取更多信息。