设置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)
商家在代码中用自己的公钥
和私钥
替换,然后打开服务器代码的默认端口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
一起使用。