支付宝的使用(支付宝SDK)

原创 2015年11月21日 17:01:04

其实支付宝的官方demo配合文档看还是写的很清楚的,这里就是多写些大白话,仅供参考和共同学习。

官方给出的思路,如以下的代码,实例化订单对象Order,给Order赋值各项需要的属性,然后用方法把这些字符串拼接,加密 (就相当,剁碎了揉一起然后再生成新的,支付宝认可的字符串),最后把你APP的标识和得到的支付宝认可的字符串一起传过去,就可以等待回调的block给你的反馈了


2016.03.18 添加

当你在最后一步要把orderString传给支付宝的时候,“签名加密”不管是在后台,还是由手机端进行的,都应该是由三部分组成的字符串。

第一,是我们的参数partner,productName,inputCharset 等一些参数未加密的状态:

如:

@"notify_url="http://www.xxxxx.com/interface/alipay/"&service="mobile.securitypay.pay"&partner="2088911123193167"&_input_charset="utf-8"&out_trade_no="Ali201603175222453"&subject="测试商品"&payment_type="1"&seller_id="123456@qq.com"&total_fee="0.01"&body="test""



第二,是我们第一步的这个字符串,进行(RSA或者MD5)加密后的加密字符串:

如:

@"sign="RCBRR0F04e3nPv8corkO1mwpCb9E59bbPOFVuS%2FPysdIb3pk%2BcKA9yQAFVwFMsrzpsD6iHO%2BTny1MA212HbjhNBb4378aCyVF%2F3lrfGo2A7%2CKyOgGqca8Q1eKK6ecjMCjKID%2FCH6D%2FBCau5xtUqf8CA7hq5ZS4BCIpRFz5lJqgQ%3D""
</pre><p></p><p class="p1"><span style="font-family:'Arial Black'; color:rgb(51,51,51); background-color:rgb(255,255,255)"><span style="font-size:14px">第三,是我们加密的方式(RSA或者MD5), 我这边是RSA的:</span></span></p><p class="p1"><span style="font-family:'Arial Black'; color:rgb(51,51,51); background-color:rgb(255,255,255)"><span style="font-size:14px">如:</span></span></p><pre code_snippet_id="1614915" snippet_file_name="blog_20160318_3_153241" name="code" class="objc">@"sign_type="RSA""


最后生成的字符串,应该是类似于这个形式(字符串中的引号请让后台大哥用“\”隔开):

如:

@"notify_url="http://www.xxxxx.com/interface/alipay/"&service="mobile.securitypay.pay"&partner="2088911123193167"&_input_charset="utf-8"&out_trade_no="Ali201603175222453"&subject="测试商品"&payment_type="1"&seller_id="123456@qq.com"&total_fee="0.01"&body="test"&sign="RCBRR0F04e3nPv8corkO1mwpCb9E59bbPOFVuS%2FPysdIb3pk%2BcKA9yQAFVwFMsrzpsD6iHO%2BTny1MA212HbjhNBb4378aCyVF%2F3lrfGo2A7%2CKyOgGqca8Q1eKK6ecjMCjKID%2FCH6D%2FBCau5xtUqf8CA7hq5ZS4BCIpRFz5lJqgQ%3D"&sign_type="RSA""


----------------------------------------------------分割线----------------------------------------------------


你需要声明的类:

#import <AlipaySDK/AlipaySDK.h>


	/*
	 *生成订单信息及签名
	 */
	//将商品信息赋予AlixPayOrder的成员变量
    Order *order = [[Order alloc] init];
	order.partner = partner;
	order.seller = seller;
	order.tradeNO = @"Ali201603175222453"; //订单ID(由商家自行制定)
	order.productName = @"测试商品"; //商品标题
	order.productDescription = @"test"; //商品描述
	order.amount = @"0.01"; //商品价格
	order.notifyURL =  @"http://www.xxxxx.com/interface/alipay/"; //回调给服务器的URL
    
    order.service = @"mobile.securitypay.pay";
    order.paymentType = @"1";
    order.inputCharset = @"utf-8";
	
	//应用注册scheme,在AlixPayDemo-Info.plist定义URL types
	NSString *appScheme = @"alisdkdemo";
	
	//将商品信息拼接成字符串
	NSString *orderSpec = [order description];
	NSLog(@"orderSpec = %@",orderSpec);
	
	//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
	id<DataSigner> signer = CreateRSADataSigner(privateKey);
	NSString *signedString = [signer signString:orderSpec];
	
	//将签名成功字符串格式化为订单字符串,请严格按照该格式
	NSString *orderString = nil;
	if (signedString != nil) {
        //这个字符串orderString就是最后上传给支付宝的字符串
		orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderSpec, signedString, @"RSA"];
        NSLog(@"%@",orderString);
        [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
            NSLog(@"reslut = %@",resultDic);
        }];
    }


当然以上的代码中给Order赋值的参数,大多都是从我们自己的服务器中获得的参数。

有一点需要注意的是:虽然支付宝的demo是在前端进行的签名与加密,但是因为安全问题,支付宝包括微信都建议我们在后台服务器进行签名与加密。

所以一般签名加密的操作,都是在服务器中生成好直接把orderString这个字符串拼接好,传过到手机端使用,所以支付宝在我们的APP中最好是如下几行。


#pragma mark 支付宝支付
- (void)aliPayWithOrderStr:(NSString*)orderString{
    //orderString为服务器已经签名加密过的,支付宝认可字符串
    //应用注册scheme,在AlixPayDemo-Info.plist定义URL types
    NSString *appScheme = @"com.xxxxx.Share";
    
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic){
        NSLog(@"reslut = %@",resultDic);
        NSDictionary *dic = resultDic;
        NSString *resultStr = dic[@"resultStatus"];
        [self paymentResult:resultStr];//回调
    }];
}

#pragma mark 支付宝回调
-(void)paymentResult:(NSString *)resultd
{
    NSString *strMsg = @"";
    //结果处理
    if ([resultd isEqualToString:@"9000"]) {
        strMsg = @"支付成功!";
        [self goToPaySuccessView];
        return;
    }else if ([resultd isEqualToString:@"6001"]){
        //交易取消
        strMsg = @"支付取消!";
    }else{
        //交易失败
        strMsg = @"支付失败!";
    }
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
}

支付宝的简单使用其实就是这样了,如果你有更好的想法,或者博客中哪里有写错的地方,请不吝赐教在下方留言。

感谢观看,学以致用更感谢!




版权声明:本文为博主原创文章,转载时请声明:http://blog.csdn.net/siwen1990 转载

Android支付宝支付接入(支付宝支付SDKV2.0版)

前言:个人上篇文章介绍了Android微信支付接入,这里将支付宝支付也介绍下,希望对大家能有帮助。 正文:无论是微信支付还是支付宝支付,其总体流程基本都是相同的。结构图如下: 订单信息:其中包含订...
  • coycleipenghui
  • coycleipenghui
  • 2016年12月24日 12:09
  • 1181

支付宝SDK接入详细指南(附官方支付demo)

前言 一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统对于资源有限的公司来说显然不太明智,国内已经有多家成熟的移动支付提供商,阿里就是其中之一。  继《 Andr...
  • fcc7927752836
  • fcc7927752836
  • 2017年09月19日 15:20
  • 690

支付宝sdk的使用及常见问题

一、使用官方的Demo 需要配置基本信息: 打开“APViewController.m”文件,对以下三个参数进行编辑。 二、集成支付宝到自己的工程 1、启动Xcod...
  • kpyue
  • kpyue
  • 2016年02月22日 15:02
  • 3567

android 支付宝sdk接入详解

android 支付宝sdk接入详解 第一步 在接入支付宝sdk之前首先要进入支付宝开发者平台申请应用所需要的应用唯一标识(APPID)、应用私钥(APP_PRIVATE_KEY)、支付宝公钥(A...
  • lxd1184273609
  • lxd1184273609
  • 2017年03月06日 16:50
  • 848

支付宝SDK支付注意点

公司要写个支付功能,用到了支付宝,用到了微信 关于支付宝,我想记录一点我自己的个人心得,方便下次温习,也可以让大家少走点弯路,能更快地完成公司交给你的开发任务,哈哈,废话不多说了 第一步:...
  • waww116529
  • waww116529
  • 2015年06月16日 10:58
  • 1595

支付宝支付流程

在iOS应用里集成支付宝支付,需要公司和支付宝签约,然后生成相应的密钥。密钥的生成支付宝的开发文档里已经说的非常清楚。 官方的文档和SDK: https://doc.open.alipay.com/d...
  • lvchaman
  • lvchaman
  • 2016年05月26日 18:07
  • 5151

制作 alipay-sdk-java包到本地仓库

项目要用到支付宝的扫码支付,后台使用的maven 问了客服 官方目前没有 maven 的地址只能手动安装到本地了,如果建了maven 服务器也可以上传到服务器上 一、首先 搭建好maven ...
  • yzllz001
  • yzllz001
  • 2017年01月15日 11:05
  • 4418

支付宝SDK

一,在支付宝开放平台下载支付宝SDK(https://openhome.alipay.com/platform/document.htm#down) 二,添加sdk文件到xcode   1,新建一个...
  • zhangmengleiblog
  • zhangmengleiblog
  • 2016年06月30日 10:14
  • 2926

Android客户端三步完成支付宝支付SDK接入

1.下载SDK,下载地址:https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1 解压并导入...
  • yechaoa
  • yechaoa
  • 2016年12月09日 18:43
  • 8902

支付宝支付sdk解析

在调用支付宝前需要初始化config参数,在文件中输出需要的appid,秘钥,公钥等信息。。。。 Configs.init("zfbinfo.properties");在初始化之后进行工厂模式进行...
  • han1196639488
  • han1196639488
  • 2017年06月13日 20:15
  • 2574
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:支付宝的使用(支付宝SDK)
举报原因:
原因补充:

(最多只允许输入30个字)