一、看官方的Demo,那么看到,必须使用的是商户app申请的时候会有的
这几个东西由产品经理申请给你,如果遇到真不懂的,让你自己申请(也算是对自己的信任,那就看着官方文档一步步申请,这个没什么困难的,做开发的我这里也不记了。没什么意义。)
二、集成支付宝到自己的工程中
集成?笑话,写下来有什么意义,还不如看官方文档,最方便的当然是cocoapods 几分钟搞定
根据自己的APP,修改下面的参数即可:
说实话,其实这些都是后台去弄的,前端只是点击支付按钮时候,请求后台,让后台给你生成 orderstr 就行了,
-(void)alipayWith:(NSString*)orderStr{
NSString *appScheme = @"zhifubao";
// NOTE: 调用支付结果开始支付
[[AlipaySDK defaultService] payOrder:orderStr fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
if ([resultDic[@"ResultStatus"] isEqualToString:@"9000"]) {
}else{
}
}];
}
使用支付宝客户端支付之后,无法返回原APP系统
1)在AppDelegate.m文件中,
#import <AlipaySDK/AlipaySDK.h>
-(BOOL)application:(UIApplication *)app openURL:(nonnull NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(nonnull id)annotation{
[WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
if ([url.host isEqualToString:@"safepay"]) {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
NSLog(@"支付宝客户端支付结果result = %@",resultDic);
if (resultDic && [resultDic objectForKey:@"resultStatus"] && ([[resultDic objectForKey:@"resultStatus"] intValue] == 9000)) {
// 发通知带出支付成功结果
[[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic];
} else {
// 发通知带出支付失败结果
[[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic];
}
}];
}
return YES;
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
[WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
if ([url.host isEqualToString:@"safepay"]) {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
if (resultDic && [resultDic objectForKey:@"resultStatus"] && ([[resultDic objectForKey:@"resultStatus"] intValue] == 9000)) {
// 发通知带出支付成功结果
[[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic];
} else {
// 发通知带出支付失败结果
[[NSNotificationCenter defaultCenter] postNotificationName:@"alpayResult" object:resultDic];
}
}];
}
return YES;
}
这里面我是做了一个通知,告诉支付页面支付结果的
(2)点击项目名称,点击“Info”选项卡,在“URL Types”选项中,点击“+”,在“URL Schemes”中输入自己的APP标示,如:“alisdkdemo”。“alisdkdemo”来自于以下代码:
支付代码中的:
这里的URL Schemes中输入的alisdkdemo,为测试demo,实际商户的app中要填写独立的scheme,建议跟商户的app有一定的标示度,要做到和其他的商户app不重复,否则可能会导致支付宝返回的结果无法正确跳回商户app
4、可能遇到的错误:
1:支付宝交易订单处理失败 AL159
注意:支付宝的金额只能精确到分,所以不能用小数点后面超过两位的浮点型数字。
所以:应该使用 %.2f
2:支付宝支付失败:4000
检查订单的各种参数,比如订单ID写错为浮点型了。
3:其他
检查各种参数和公匙密匙等等
补充一下,官方流程,做参考用