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一起使用。

Last updated