测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可协议 | MIT |
发布最新发布 | 2017年11月 |
由Oleg Lutsenko,Taras Kalapun,Diego Marcon,Joost van Dijk维护。
此仓库包含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之一获得。
pod 'AdyenCSE'
添加到您的Podfile
中。pod install
。github "adyen/adyen-cse-ios"
添加到您的Cartfile
中。carthage update
。以下代码演示了如何收集和加密卡支付数据。
#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文件以获取更多信息。