iOS

设置MoneyCollect 服务器端 客户端

首先,您需要一个MoneyCollect帐户。立即注册

1. 设置服务器端

如果客户端想要访问MoneyCollect Server API,它需要通过私钥在仪表板上发起一个请求。

在github上下载模拟商家系统接口代码。

1.1 使用您自己的密钥替换MobilePayController.java文件中的公钥和私钥

// 您的帐户 PUBLIC_SECRET("Bearer "+PUBLIC_SECRET)
private static final String PUBLIC_SECRET = "Bearer live_pu_OGJ0EidwEg4GjymEiRD7cUBk7IQIYmhwhJlUM****";
// 您的帐户 PRIVATE_SECRET("Bearer "+PRVATE_SECRET)
private static final String PRIVATE_SECRET = "Bearer live_pr_OGJ0EidwEg4GjymEiRD4MRxBCo0OumdH6URv****";

PUBLIC_SECRET & PRIVATE_SECRET的格式是("Bearer"+PUBLIC_SECRET)

1.2 修改服务器端口(默认为9898)

server.port=9898

商家在代码中用自己的公钥私钥替换,然后打开服务器代码的默认端口9099可以修改。(仪表板接口地址是本地ip:9898)

2. 设置客户端

导入MoneyCollect的iOS sdk,然后初始化sdk。

2.1 安装

使用CocoaPods将MoneyCollect集成到您的Xcode项目中,需要在您的Podfile中指定:

pod 'MoneyCollect', '~> 0.0.1'

2.2 初始化SDK

在项目的AppDelegate中初始化MoneyCollect的iOS SDK。

/** 可发布的密钥(API publishable Key) */
@property (nonatomic,copy) NSString *publishableKey;

/** 商户传递的客户IP地址*/
@property (nonatomic,copy) NSString *customerIPAddress;

/// 设置可发布的密钥和客户IP地址
/// @param publishable Key 可发布密钥
/// @param customerIPAddress 客户IP地址
- (void)setPublishableKey:(NSString * _Nonnull)publishableKey atCustomerIPAddress:(NSString *)customerIPAddress;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// 初始化 PublishableKey 和 IPAddress
    [[MCAPIClient shared] setPublishableKey:@"Bearer test_pu_1sWrsjQP9PJiCwGsYv3risSn8YBCIEMNoVFIo8eR6s" atCustomerIPAddress:@"http://192.168.2.100:9898/api"];
    
    return YES;
    
}

3. 构建数据参数以发起交易,然后启动支付活动

商家构建交易请求参数,点击结账按钮开始支付活动。(关于使用constructMCCreatePaymentParams方法构建数据的详细信息,请参考示例)

#pragma mark - Button Click Event
- (void)checkoutBtnClick:(UIButton *)sender
{
    // 初始化 controller
    MCSelectPaymentCardVC *selectPaymentCardVC = [[MCSelectPaymentCardVC alloc] init];
    selectPaymentCardVC.delegate = self;

	// 构建请求参数
    selectPaymentCardVC.customerID = [MCConfigurationFile getCustomerID];
    selectPaymentCardVC.billingDetails = [MCConfigurationFile getBillingDetailsModel];
    selectPaymentCardVC.createPaymentParams = [self constructMCCreatePaymentParams];
    
    // 加载视图(view)
    [selectPaymentCardVC present:self];
}

当客户点击现在支付按钮完成支付后,支付活动将被关闭并返回到示例的MCPaymentSheetCheckoutVC。同时,通过代理返回支付结果responseObject。

#pragma mark - MCSelectPaymentCardVCDelegate
- (void)successfulTransactionWithResponseObject:(NSDictionary *)responseObject
{
    // 交易状态(transaction status)
    NSString *status = [[responseObject objectForKey:@"data"] objectForKey:@"status"];
    
    if ([status isEqualToString:@"succeeded"]) {
        
        NSLog(@"success");
        
    }else if ([status isEqualToString:@"failed"]) {
        
        NSLog(@"%@",[[responseObject objectForKey:@"data"] objectForKey:@"errorMessage"]);
        
    }else if ([status isEqualToString:@"pending"]) {
        
        NSLog(@"pending");
        
    }else if ([status isEqualToString:@"uncaptured"]) {
        
        NSLog(@"uncaptured");
        
    }else if ([status isEqualToString:@"canceled"]) {
        
        NSLog(@"canceled");
        
    }else {
        
        NSLog(@"pending");
        
    }
}

4. 额外的测试资源

您可以使用几个测试卡来确保您的集成已准备好投入生产。

这些卡可以与任何 CVC, postal code, 以及 future expiration date一起使用。

卡号
品牌
描述

4242 4242 4242 4242

Visa

成功并立即处理支付。

3566 0020 2036 0505

JCBA

成功并立即处理支付。

6011 1111 1111 1117

Discover

成功并立即处理支付。

3782 8224 6310 0052

American Express

成功并立即处理支付。

5555 5555 5555 4444

Mastercard

成功并立即处理支付。

4000002500003155

Visa

这张卡需要在所有交易上进行3D验证

4000 0000 0000 0077

Visa

始终失败,拒绝代码为declined

Last updated