帮助与文档

> >

一、注册应用获取appKey 和 appSecret

如何在我们的官网注册应用得到appkey,请点击链接看里面的操作步骤。

申请完key,在侧栏添加上MobPay,然后找到支付渠道,开通您想开通的支付,如下图所示:

具体开通详情可以参考这两个:微信支付宝

二. 获取支付SDK:

点击链接下载最新版SDK,解压后得到以下文件结构:

Snip20171129_37.png

  • SDK:支付SDK和依赖库。直接将这个文件夹拖入工程即可。
  • 目录介绍
    • Channels:第三方平台的SDK,包含支付宝、微信、银联
    • MOBPaySDK:支付SDK主库
    • Required:必要依赖库

三、集成支付SDK

1、将SDK添加到项目里

(1)手动将SDK文件夹拖入工程

i.注意红框里面勾选:

Snip20171122_7.png

ii.设置依赖

SDK所需依赖库列表

libz.tbd
libstdc++.tbd
//支付宝sdk依赖
CoreMotion.framework
//微信sdk依赖
libsqlite3.tbd
PassKit.framework

 


Snip20171122_11.png

(2)pod导入

1、首先 cd 至项目的根目录,执行 pod setup;

2、按需在 Podfile 文件中添加命令:

pod 'mob_paysdk'
pod 'mob_paysdk/Channels/WeChat'
pod 'mob_paysdk/Channels/AliPay'
pod 'mob_paysdk/Channels/UnionPay'

3、如果之前没有安装过,第一次使用请先执行

安装库:pod install

,如果之前一次没有已经安装过,那只需要在执行

更新库:pod update

 

2、设置 Build Settings

需要在 Other Linker Flags 加入 -ObjC

Snip20171122_10.png

3、配置白名单和urlScheme

微信:URL Scheme : 微信的appid

         白名单:weixin,wechat

支付宝:URL Scheme : ap + 支付宝的appid

         白名单:alipay,alipayshare

银联:URLScheme:up+用户自己在我们官网后台注册应用得到的appkey,例如:appkey:moba6b6c6d6,URL Scheme就是upmoba6b6c6d6 

         白名单:uppayx1,uppaywallet,uppaysdk,uppayx2,uppayx3

 

 

配置URLSchemes:

Snip20171122_13.png

配置白名单

在Info.plist里添加 键为 LSApplicationQueriesSchemes 值为数组的键值对,并在数组中加入各平台所需的白名单

<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>weixin</string>
        <string>wechat</string>
        <string>alipay</string>
        <string>alipayshare</string>
        <string>uppayx3</string>
        <string>uppayx2</string>
	<string>uppaysdk</string>
	<string>uppaywallet</string>
	<string>uppayx1</string>
    </array>

 


Snip20171122_16.png

4、配置appkey和appSecret

在项目中的info.plist文件中添加键值对,键分别为 MOBAppKey 和 MOBAppSecret ,值为步骤一申请的appkey和appSecret

Snip20171122_12.png

四、使用SDK提供的API

1. 导入头文件

#import <MOBPaySDK/MOBPay.h>

2. 设置支付回调代理


/**
 设置观察者,监听支付状态改变与回调

 @param observer 回调代理
 */
+ (void)addObserver:(id<MOBPayObserverDelegate>)observer;

 

注意:开发者应注意app在跳出到第三方支付平台客户端支付时,自己的app在后台被强退的情况,此时app会重新启动,如需拿到支付结果,需要把代理设置在 didFinishLaunchingWithOptions 方法中

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

    [MOBPay addObserver:[PayManager defaultManager]];
    
    return YES;
}

3. 调用支付接口进行支付

通过支付SDK支付有2种接入方式,具体介绍看:www.mob.com

  • 第一种方式:直接通过支付数据进行支付
  1. 创建支付需要的数据模型:MPSCharge
  2. 调用支付接口进行支付
/**
 支付接口

 @param charge 支付信息模型
 */
+ (void)payWithCharge:(MPSCharge *)charge;

头文件 : #import <MOBPaySDK/MOBPay.h>

//主要支付逻辑
- (void)payWithPrice:(NSInteger)price channel:(MPSChannel)channel
{
    MPSCharge *charge = [[MPSCharge alloc] init];
    charge.orderId = [NSString stringWithFormat:@"%zd",[[NSDate date] timeIntervalSince1970]];
    charge.amount = price;
    charge.channel = channel;
    charge.subject = @"为账户充值:";
    
    //可选参数
    charge.appUserId = @"01234567890";
    charge.appUserNickname = @"mob";
    charge.body = @"订单商品的描述:这是一个测试商品";
    charge.desc = @"这笔订单只是测试,不加入统计";
    charge.metadata = @"@{@\"dec\":@\"metaData\"}";
    
    [MOBPay payWithCharge:charge];
}

 

  • 第二种方式:通过开发者自己的后台返回的ticketId进行支付
/**
 使用ticketId进行支付

 @param ticketId 支付标示
 */
+ (void)payWithTicketId:(NSString *)ticketId;

4. 支付结果处理

通过 MOBPayObserverDelegate 协议返回支付结果

注意:具体支付结果开发者应根据自己后台服务器的查询为准,不应该以sdk返回的结果直接作为支付结果处理相关业务。

/**
 支付结果
 */
@protocol MOBPayObserverDelegate <NSObject>

/**
 支付状态改变回调

 @param transaction 本次支付模型
 @param status 支付状态
 */
- (void)paymentTransaction:(MPSPaymentTransaction *)transaction statusDidChange:(MPSPayStatus)status;

@end

 

代码示例:

- (void)paymentTransaction:(MPSPaymentTransaction *)transaction statusDidChange:(MPSPayStatus)status
{
    // 具体回调结果开发者应根据后台服务器查询结果为准

    switch (status) {

        case MPSPayStatusBegin: //说明已获取到ticketId开始吊起支付
            NSLog(@"%@",transaction.ticketId);
            break;

        case MPSPayStatusSuccess://支付成功
            [MPSPayStatusHUD showWithInfo:nil];
            break;

        case MPSPayStatusCancel://取消支付
            [MPSPayStatusHUD showWithInfo:@"付款失败,请稍后重试"];
            break;

        default://支付失败
            NSLog(@"%@",transaction.error);
            [MPSPayStatusHUD showWithInfo:@"付款失败,请稍后重试"];
            break;
    }
    
    if(status != MPSPayStatusBegin)
    {
        [self _persistenceOrderWithStatus:status];//缓存订单,demo演示用
    }
}

 


 

相关文档