关于第IOS三方支付(支付宝)问题

关于第IOS三方支付(支付宝)问题

一:平台注册(快速集成):

1创建应用并获取APPID:

要在您的应用中使用支付宝开放产品的接口能力,您需要先去蚂蚁金服开放平台(open.alipay.com),在管理中心中创建登记您的应用,并提交审核,审核通过后会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能正常使用有权限调用的开放产品的接口能力。需要详细了解开放平台创建应用步骤请参考《开放平台应用创建指南》

2配置密钥:

开发者调用接口前需要先生成RSA密钥 ,包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY),并进行密钥配置,把开发者公钥与支付宝交换获取支付宝公钥(ALIPAY_PUBLIC_KEY)

生成 RSA 密钥有两种方式:

(1)点击进入如下链接:MAC OSX:下载.  解压打开文件夹,直接运行“支付宝RAS密钥“SHAwithRSA1024_V1.0.command”(MACOSX),点击“生成RSA密钥”,会自动生成公私钥,然后点击“打开文件位置”,即可找到工具自动生成的密钥。

注意:工具不支持含中文或空格的路径,请下载到英文目录下使用。

(2)也可以使用OpenSSL工具命令生成.(在此OpenSSL不做介绍)

开发者登录开放平台后,找到并进入应用。

点击“RSA(SHA1)密钥”处的“设置开发者公钥”(如已设置则显示“查看开发者公钥”,可修改),将公钥文件去除头尾、换行和空格,仅需填入字符串。

密钥的格式如下:

例如转换前公钥pem文件格式:

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB

-----END PUBLIC KEY-----

转换后得到的字符串为:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB

3获取支付宝公钥

应用上线后点击“查看支付宝公钥”,即可获取支付宝公钥,用于支付宝返回数据的验签。

对于支付宝公钥,看到的是一个字符串,如下:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB

如果需要使用文件方式(如使用服务端SDK的PHP/.NET版本)读取支付宝公钥,需要在头尾加入标示后保存至文件,文件内容如下:

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB

-----END PUBLIC KEY-----

二.客户端 SDK 配置

1.启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下,并导入到项目工程中。b包括如下两个文件:

(1).AlipaySDK.bundle

(2).AlipaySDK.framework

在Build Phases选项卡的Link Binary With Libraries中,增加以下依赖:

2:在需要调用AlipaySDK的文件中,增加头文件引用。

#import

3:如果你的app基于9.0编译,那么为了适配iOS9.0中的App Transport Security(ATS)对http的限制,这里需要对支付宝的请求地址alipay.com、alipayobjects.com做例外,在app对应的info.list中添加如下配置(文中以XML格式描述)。

4:TIPS:这一步应在商户服务端完成,商户服务端直接将组装和签名后的请求串orderString传给客户端,客户端直接传给SDK发起请求。文档和Demo是为了示例效果在客户端实现。

//将商品信息赋予AlixPayOrder的成员变量

Order* order = [Ordernew];

// NOTE: app_id设置

order.app_id = appID;

// NOTE:支付接口名称

order.method = @"alipay.trade.app.pay";

// NOTE:参数编码格式

order.charset = @"utf-8";

// NOTE:当前时间点

NSDateFormatter* formatter = [NSDateFormatternew];

[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

order.timestamp = [formatter stringFromDate:[NSDate date]];

// NOTE:支付版本

order.version = @"1.0";

// NOTE: sign_type设置

order.sign_type = @"RSA";

// NOTE:商品数据

order.biz_content = [BizContentnew];

order.biz_content.body = @"我是测试数据";

order.biz_content.subject = @"1";

order.biz_content.out_trade_no = [self generateTradeNO]; //订单ID(由商家自行制定)

order.biz_content.timeout_express = @"30m"; //超时时间设置

order.biz_content.total_amount = [NSString stringWithFormat:@"%.2f", 0.01]; //商品价格

//将商品信息拼接成字符串

NSString *orderInfo = [order orderInfoEncoded:NO];

NSString *orderInfoEncoded = [order orderInfoEncoded:YES];

NSLog(@"orderSpec = %@",orderInfo);

// NOTE:获取私钥并将商户信息签名,外部商户的加签过程请务必放在服务端,防止公私钥数据泄露;

//需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode

id signer = CreateRSADataSigner(privateKey);

NSString *signedString = [signer signString:orderInfo];

// NOTE:如果加签成功,则继续执行支付

if(signedString != nil) {

//应用注册scheme,在AliSDKDemo-Info.plist定义URL types

NSString *appScheme = @"alisdkdemo";

// NOTE:将签名成功字符串格式化为订单字符串,请严格按照该格式

NSString *orderString = [NSString stringWithFormat:@"%@&sign=%@",

orderInfoEncoded, signedString];

// NOTE:调用支付结果开始支付

[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {

NSLog(@"reslut = %@",resultDic);

}];

}

5:配置支付宝客户端返回url处理方法。

(外部存在支付包钱包,支付宝钱包将处理结果通过url返回。)

如示例AliSDKDemo\APAppDelegate.m文件中,增加引用代码:

#import

在@implementation AppDelegate中以下代码中的NSLog改为实际业务处理代码:

- (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);

}];

}

returnYES;

}

// NOTE: 9.0以后使用新API接口

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options

{

if([url.host isEqualToString:@"safepay"]) {

//跳转支付宝钱包进行支付,处理支付结果

[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {

NSLog(@"result = %@",resultDic);

}];

}

returnYES;

}

<仅供参考,希望对想做支付的朋友有所帮助>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容

  • 文章主要讲到以下五部分: 一、支付宝开放平台创建应用 二、签约移动支付功能 三、接入支付前的准备工作附准备工作中遇...
    sillen阅读 17,786评论 1 10
  • 因为近期项目中需要接入支付宝支付功能,自己也爬了很多的坑,所以做了一下这边文章供大家学习参考,远离爬坑,文章主要讲...
    啓蘊阅读 2,275评论 0 4
  • iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...
    请输入账号名阅读 6,150评论 3 22
  • 前言 支付宝支付是很常见的支付方式,下面这篇就是亲测有用的文章,纯手打,会持续更新。 卖家跟支付宝签约 (需要...
    進无尽阅读 3,881评论 1 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139