支付-支付宝

前言

支付宝支付是很常见的支付方式,下面这篇就是亲测有用的文章,纯手打,会持续更新。


   卖家跟支付宝签约

  (需要实名认证这个支付宝账号,需要提供企业资料,成为企业支付宝账号,一般为公司的支付宝账号)

     第一步:登陆支付宝官方网站(支付宝商家中心)。

      这是没有签约的账户效果

      以下是申请好了的效果图,(申请好套餐后正常2-5天会有申请状态,成功后进入【我的商家服务】)

        第二步:点击导航栏中“商家服务”,找到“合作身份(Partner ID)查询”与“安全校验码(key)查询”。


     合作者身份ID(partner)和交易安全校验码(key)是商户与支付宝签约后,商户获得的支付宝商户唯一识别码与密钥。当商户把支付宝功能接入商户网站时会用到它们,以便让支付宝认证商户。 即可查询到合作者身份ID,以2088开头的16位纯数字。

生成公钥和私钥,并上传公钥里的字符串

   怎么上传公钥呢?输入支付宝密码,跳转到查看交易安全校验码(key)页面,在那个页面设置下,打开公钥把公钥里面的字符串粘到指定位置并上传即可,公钥必须给支付宝,不然他们解密不了。打开终端,生成共私钥:

   私钥:OpenSSL genrsa -out rsa_private_key.pem 1024

   公钥:OpenSSL rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

  编码后:openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem

代码里需要使用 编码后的私钥进行加密,注意是编码后的。

    (上传公钥)

    (RSA秘钥)

  项目集成支付宝SDK

  下载支付宝SDK,把支付宝相关的SDK和依赖的系统库资源文件导入到本地工程项目中。

 #define gxPartner      @"2088*******"  商家的PID

#define gxSeller      @"2000000000@qq.com"    收钱的支付宝账号

#define gxPrivateKey                                            //商户方的私钥,pkcs8 格式。    @"MIICeAIBADANBgkqdasdasdasdasdasdoGBAM09Ym+y5Tzw/xVIdQ6xCZnpqh7ZUr-------"

 +(void)PayMoney :(NSDictionary *)dataDic;{    

/*    *生成订单信息及签名    */    //将商品信息赋予AlixPayOrder的成员变量    

Order *order = [[Order alloc] init];    

order.partner = gxPartner;   

//支付宝账号

 order.seller = gxSeller;    

//订单ID不能两次一样,否则第二次无法支付。

order.tradeNO = [dataDic objectForKey:@"fid"]; //订单ID(由商家自行制定)    

order.orderNumber =[dataDic objectForKey:@"orderNumber"]; //订单号    

order.productDescription = @"呵呵"; //商品描述    

order.amount = [dataDic objectForKey:@"fpayMoney"]; //商品价格    

order.notifyURL =  @"http://www.xxx.com"; //回调URL     

 order.service = @"mobile.securitypay.pay";    

order.paymentType = @"1";    

order.inputCharset = @"utf-8";    

order.itBPay = @"30m";    

order.showUrl = @"m.alipay.com";    //应用注册scheme,在AlixPayDemo-Info.plist定义URL types`该字符串是你自定义的 URL scheme 的名字。建议采用反转域名的方法保证该名字的唯一性`   

NSString *appScheme = @"Mall";    >  //将商品信息拼接成字符串  NSString *orderSpec = [order description];  DMLog(@"orderSpec = %@",orderSpec);      >  //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode    idsigner = CreateRSADataSigner(gxPrivateKey);

NSString *signedString = [signer signString:orderSpec];

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

NSString *orderString = nil;

if (signedString != nil) {

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

orderSpec, signedString, @"RSA"];

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

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

if ([[resultDic objectForKey:@"resultStatus"]isEqualToString:@"9000"]) {

//支付成功了

}

}];}}



resultStatus,状态码,SDK里没对应信息,第一个文档里有提到:支付成功后,后台的订单状态已经改变了,此时可以通知页面刷新,以后台的数据状态为准,更新前端页面中订单的支付状态。

9000 订单支付成功

8000 正在处理中

4000 订单支付失败

6001 用户中途取消

6002 网络连接出错

memo, 提示信息,比如状态码为6001时,memo就是“用户中途取消”。但千万别完全依赖这个信息,如果未安装支付宝app,采用网页支付时,取消时状态码是6001,但这个memo是空的。。(当我发现这个问题的时候,我就决定,对于这么不靠谱的SDK,还是尽量靠自己吧。。)


result,订单信息,以及签名验证信息。如果你不想做签名验证,那这个字段可以忽略了。。

集成支付宝iOS

*****************************更新 **************************

iOS9上面不能跳转到支付宝客户端支付 什么情况只能跳到网页

(一)为了适配 iOS9.0 中的 App Transport Security(ATS)对 http 的限制,这里需要对 支付宝的请求地址 alipay.com 做例外,在 app 对应的 info.list 中添加如下配置 (文中以 XML 格式描述)。

解决方法

(二) 同时需要在Plist中设置支付宝为白名单

解决方法

支付结果不回调

- (BOOL)application:(UIApplication*)application

openURL:(NSURL*)url

sourceApplication:(NSString*)sourceApplication

annotation:(id)annotation {

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

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

[[AlipaySDKdefaultService]processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary*resultDic) {

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

}];

}

returnYES;

}

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

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

{

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

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

[[AlipaySDKdefaultService]processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary*resultDic) {

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

}];

}

returnYES;

}


你会发现 callback:^(NSDictionary *resultDic)  没有结果返回了,查了官网后发现,需要在APPDelegate里手动获取下返回结果,保持原支付代码不变的情况下,复制上面的代码粘贴到 APPDelegate里,支付密代码那里的回调callback里就会有内容返回了。

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

推荐阅读更多精彩内容

  • 关于第IOS三方支付(支付宝)问题 一:平台注册(快速集成): 1创建应用并获取APPID: 要在您的应用中使用支...
    sillen阅读 1,308评论 1 3
  • 在支付宝开发中心与支付宝签约店家我的商家服务—在页面的下方找到——>签约管理—>找到移动支付—–>点击下载集成文档...
    阁子菌阅读 517评论 0 5
  • 一.移动支付 什么叫移动支付:移动支付也称为手机支付,就是允许用户使用其移动终端(通常是手机)对所消费的商品或服务...
    川农鉴黄师阅读 1,881评论 8 16
  • 相比之前的支付宝sdk,新版的sdk不再判断App客户端是否安装了支付宝客户端。如果用户安装了支付宝,将跳到支付宝...
    V1tas阅读 1,220评论 2 4
  • 一直以来觉得没有什么,但是最近两年,尤其是结婚生子了之后,传统思想与现在的我们之间理想和冲击实在太强,中间又穿插着...
    冷冷同学阅读 209评论 0 0