文档中心 > 移动支付

接口调用

更新时间:2016/05/03 访问次数:17295

说明

本SDK提供的所有接口均定义在AlipaySDK.h中。
SDK中提供了若干接口,H5转Native支付只用到其中一部分,本文未提到的接口无需关注。

如何调用提供的接口?
接口的调用方式是先调用defaultService获取SDK的实例,然后再调用提供的接口,以fetchOrderInfoFromH5PayUrl为例:

[[AlipaySDK defaultService]fetchOrderInfoFromH5PayUrl:url]

如何实现H5转Native支付?

步骤一: 实现UIWebViewDelegate协议,拦截H5的URL;
步骤二: 调用SDK提供的“获取订单信息接口(fetchOrderInfoFromH5PayUrl)”对拦截的URL进行处理:

  • 如果返回nil或者返回的字符串长度为0则不拦截该URL
  • 反之则调用“支付接口(payUrlOrder…)”进行订单支付,并拦截URL

获取订单信息接口

接口说明

接口原型

/**
 *  url order 获取接口
 *
 *  @param urlStr     拦截的 url string
 *
 *  @return 获取到的url order info
 */
- (NSString*)fetchOrderInfoFromH5PayUrl:(NSString*)urlStr;

接口功能

从拦截的URL中获取支付请求相关信息,然后封装成新的订单信息字符串作为返回值。如果该URL不是有效的支付宝支付URL,则返回空字符串。

参数说明

参数名称 类型 说明
urlStr NSString * H5支付的请求URL

返回值说明

返回值类型 说明
NSString * 1.如果是有效的支付宝支付URL,则返回非空字符串(订单信息字符串)
2.如果是无效的支付宝支付URL,则返回空字符串

接口使用方式

调用本接口对拦截的URL进行处理,如果返回值为空字符串则不拦截该URL;如果返回值为非空字符串,则调用SDK提供的支付接口进行支付,使用示例如下:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString* orderInfo = [[AlipaySDK defaultService]fetchOrderInfoFromH5PayUrl:[request.URL absoluteString]];
    if (orderInfo.length > 0) {
        // 此处应该调用SDK提供的支付接口进行支付
        // 参考后文

        return NO;
    }
    return YES;
}

支付接口

接口说明

接口原型

/**
 *  url支付接口
 *
 *  @param orderStr       订单信息
 *  @param schemeStr      调用支付的app注册在info.plist中的scheme
 *  @param compltionBlock 支付结果回调Block
 */
- (void)payUrlOrder:(NSString *)orderStr
         fromScheme:(NSString *)schemeStr
           callback:(CompletionBlock)completionBlock;

接口功能

完成订单支付并返回支付结果。

参数说明

参数名称 类型 说明
orderStr NSString * 调用fetchOrderInfoFromH5PayUrl接口返回的订单信息
schemeStr NSString * 接入方App注册的URL scheme,供支付完成后跳回接入方App
completionBlock (^CompletionBlock)(NSDictionary *resultDic) 支付结束之后的回调
其中CompletionBlock定义如下: typedef void(^CompletionBlock)(NSDictionary *resultDic);

返回值说明

支付结束后SDK将回调completionBlock并将支付结果resultDic(NSDictionary *类型)作为参数传入该Block。resultDic中主要包含两个字段,如下所示:

参数名称 类型 说明
resultCode NSString * 返回码,标识支付状态,含义如下:
9000——订单支付成功
8000——正在处理中
4000——订单支付失败
5000——重复请求
6001——用户中途取消
6002——网络连接出错
returnUrl NSString * 支付结束后应当跳转的url地址

接口使用方式

调用本接口进行支付。如果返回的resultCode为9000,接入方可以提示用户支付成功;返回结果不是9000的情况,无需做任何处理。如果returnUrl不为空,建议接入方跳转到该returnUrl。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString* orderInfo = [[AlipaySDK defaultService]fetchOrderInfoFromH5PayUrl:[request.URL absoluteString]];
    if (orderInfo.length > 0) {
        // 调用支付接口进行支付
        [[AlipaySDK defaultService]payUrlOrder:orderInfo fromScheme:@"alisdkdemo" callback:^(NSDictionary* result) {
            // 处理返回结果
            NSString* resultCode = result[@"resultCode"];
            //建议操作: 根据resultCode做处理

            // returnUrl 代表 第三方App需要跳转的成功页URL
            NSString* returnUrl = result[@"returnUrl"];
            //建议操作: 打开returnUrl
        }];

        return NO;
    }
    return YES;
}

FAQ

关于此文档暂时还没有FAQ
返回
顶部