支付相关接口说明
支付接口
1.1
方法名称:pay方法
方法原型:(void)payOrder:(NSString )orderStr fromScheme:(NSString )schemeStr callback:(CompletionBlock)completionBlock;
方法功能:提供给商户快捷订单支付功能。
NSString* scheme 商户程序注册的URL protocol,供支付完成后回调商户程序使用。
(CompletionBlock)completionBlock 快捷支付开发包回调函数,返回免登、支付结果。本地未安装支付宝客户端,或未成功调用支付宝客户端进行支付的情况下(走H5收银台),会通过该completionBlock返回支付结果。
NSString* orderString app支付请求参数字符串,主要包含商户的订单信息,key=value形式,以&连接。
/**
* 支付接口
*
* @param orderStr 支付订单信息字串
* @param schemeStr 调用支付的app注册在info.plist中的scheme
* @param completionBlock 支付结果回调Block,用于wap支付结果回调
跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
*/
- (void)payOrder:(NSString *)orderStr
fromScheme:(NSString *)schemeStr
callback:(CompletionBlock)completionBlock;
/**
* 支付接口 v2
*
* @param orderStr 支付订单信息字串
* @param dynamicLaunch 是否使用动态配置策略跳转支付宝支付
* @param schemeStr 调用支付的app注册在info.plist中的scheme
* @param completionBlock 支付结果回调Block,用于wap支付结果回调
跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock
*/
- (void)payOrder:(NSString *)orderStr
dynamicLaunch:(BOOL)dynamicLaunch
fromScheme:(NSString *)schemeStr
callback:(CompletionBlock)completionBlock;
支付结果接口
方法名称:处理客户端方法
方法原型:-(void)processOrderWithPaymentResult:(NSURL*)resultUrl standbyCallback:(CompletionBlock)completionBlock;
方法功能:设备已安装支付宝客户端情况下,处理支付宝客户端返回的url。
本地安装了支付宝客户端,且成功调用支付宝客户端进行支付的情况下,会通过该completionBlock返回支付结果。
NSURL *resultUrl 支付宝客户端回传的url
CompletionBlock completionBlock 本地安装了支付宝客户端,且成功调用支付宝客户端进行支付的情况下,会通过该completionBlock返回支付结果。
注意:请在APPDelegate的
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
中调用该方法,iOS9.0及以上请在- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
中调用该方法。
/**
* 处理支付宝app支付后跳回商户app携带的支付结果Url
*
* @param resultUrl 支付宝app返回的支付结果url
* @param completionBlock 支付结果回调 为nil时默认使用支付接口的completionBlock(即- (void)payOrder:(NSString *)orderStr
fromScheme:(NSString *)schemeStr
callback:(CompletionBlock)completionBlock;这个方法中的completionBlock)
*/
- (void)processOrderWithPaymentResult:(NSURL *)resultUrl
standbyCallback:(CompletionBlock)completionBlock;
支付宝授权 2.0 相关接口
/**
* 快登授权2.0
*
* @param infoStr 授权请求信息字串
* @param schemeStr 调用授权的app注册在info.plist中的scheme
* @param completionBlock 授权结果回调,需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果
* 若在授权过程中,调用方应用被系统终止则此block无效(此时会调用'processAuth_V2Result:standbyCallback:'传入的standbyCallback)
*/
- (void)auth_V2WithInfo:(NSString *)infoStr
fromScheme:(NSString *)schemeStr
callback:(CompletionBlock)completionBlock;
/**
* 处理支付宝app授权后跳回商户app携带的授权结果Url
*
* @param resultUrl 支付宝app返回的授权结果url
* @param completionBlock 授权结果回调,用于处理跳转支付宝授权过程中商户APP被系统终止的情况
*/
- (void)processAuth_V2Result:(NSURL *)resultUrl
standbyCallback:(CompletionBlock)completionBlock;
相关代码
支付:(如果未安装支付宝,调用下面方法,通过回调resultDic处理支付结果。)
// NOTE: 调用支付结果开始支付
[[AlipaySDK defaultService] payOrder:contentString fromScheme:@"AlipaySchemes" callback:^(NSDictionary *resultDic) {
NSLog(@"payWithAlipayWithReturnContent AlipaySDK callback reslut = %@",resultDic);
if ([resultDic[@"resultStatus"] intValue] == 9000) {
//订单支付成功
NSLog(@"%@",@"--------订单支付成功---------");
}else{
//订单支付失败
NSLog(@"%@",@"--------订单支付失败---------");
}
}];
支付结果:
未安装支付宝客户端时,通过下面方法的回调resultDic处理支付结果。
将
@implementation AppDelegate
中以下代码中的 NSLog 改为实际业务处理代码:
// NOTE:iOS9之前使用
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
if ([url.host isEqualToString:@"safepay"]) {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
if ([[resultDic valueForKey:@"resultStatus"] intValue] == 9000) {
//订单支付成功
[[NSNotificationCenter defaultCenter] postNotificationName:@"paySuccess" object:nil];
}else{
//订单支付失败
[[NSNotificationCenter defaultCenter] postNotificationName:@"payFail" object:nil];
}
}];
}
return YES;
}
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([url.host isEqualToString:@"safepay"]) {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
if ([[resultDic valueForKey:@"resultStatus"] intValue] == 9000) {
//订单支付成功
[[NSNotificationCenter defaultCenter] postNotificationName:@"paySuccess" object:nil];
}else{
//订单支付失败
[[NSNotificationCenter defaultCenter] postNotificationName:@"payFail" object:nil];
}];
}
return YES;
}