iOS支付宝支付总结

1.按照http://doc.open.alipay.com/doc2/detail?spm=0.0.0.0.SWdJgo&treeId=59&articleId=103676&docType=1 《URLname:导入代码》将包给塞进去,配置好白名单和安全访问

安全访问在info.plist中

2. 配置包路径,一定是show in finder中的路径

Framework search Paths :$(PROJECT_DIR)/XWMerchant/ThirdParts/AlipaySDK

HeaderSearch Paths: $(PROJECT_DIR)/XWMerchant/ThirdParts/AlipaySDK

Library Search Paths: $(PROJECT_DIR)/XWMerchant/ThirdParts/AlipaySDK

3.配置AlipayHeader.h中的宏定义

#define kPartnerID @""2088开头

/**

*  seller:支付宝收款账号,手机号码或邮箱格式。

*/

#define kSellerAccount @""与合作者Id绑定的帐号,不要瞎搞成自己的了

/**

*  支付宝服务器主动通知商户 网站里指定的页面 http 路径。

*/

#define kNotifyURL  @""支付宝支付完成后会通知商户的后台服务器

/**

*  appSckeme:应用注册scheme,在Info.plist定义URLtypes,处理支付宝回调

*/

#define kAppScheme @""支付完成后回到应用中

/**

*  private_key:商户方的私钥,pkcs8 格式。

*/

#define kPrivateKey @""//这个需要重点说说,在这里卡了一会,

    • Linux用户(以Ubuntu为例)
      $ openssl 进入OpenSSL程序
      OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私钥
      OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt Java开发者需要将私钥转换成PKCS8格式
      OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公钥
      OpenSSL> exit ## 退出OpenSSL程序

生成完成之后去b.alipay.com,网站,找到我的商家服务,点击“查询PID、Key”,在合作伙伴管理密钥中设置生成的公钥,并将生成的pkcs8的私钥放在宏定义kPrivateKey里面。注册的商户移动应用现在还不知道有什么用。。。

4.支付

#pragma mark   ==============支付宝支付==============
- (void)alipay:(NSDictionary *)dic{//只包含支付订单号

    /*
     *生成订单信息及签名
     */
    //将商品信息赋予AlixPayOrder的成员变量
    NSString *serviceStr;
    switch (_serviceType) {
        case kXWServerTypeRecruit:
            serviceStr = @"招聘合同";
            break;
        case kXWServerTypeTurnShop:
            serviceStr = @"转店合同";
            break;
        case kXWServerTypeFindShop:
            serviceStr = @"找店合同";
            break;
        default:
            break;
    }
    self.orderItem.partner = kPartnerID;
    self.orderItem.seller = kSellerAccount;
    self.orderItem.tradeNO = dic[@"tradeNo"]; //订单ID(由商家自行制定)
    self.orderItem.productName = serviceStr; //商品标题
    self.orderItem.productDescription = @"开通服务后可以使用该服务"; //商品描述
    self.orderItem.amount = [NSString stringWithFormat:@"%.2f",0.01/*_price*/]; //商品价格
    self.orderItem.notifyURL = kNotifyURL; //回调URL

    self.orderItem.service = @"mobile.securitypay.pay";
    self.orderItem.paymentType = @"1";
    self.orderItem.inputCharset = @"utf-8";
    self.orderItem.itBPay = @"30m";
    self.orderItem.showUrl = @"m.alipay.com";

    //将商品信息拼接成字符串
    NSString *orderSpec = [self.orderItem description];
    DLog(@"orderSpec = %@",orderSpec);

    NSString *signedString = [self genSignedString:orderSpec withKey:kPrivateKey];//签名如果私钥和公钥配对不成功,会生成订单失败

    NSString *orderString = nil;
    if (signedString != nil) {
        orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"", orderSpec, signedString, @"RSA"];

        [[AlipaySDK defaultService] payOrder:orderString fromScheme:kAppScheme callback:^(NSDictionary *resultDic) {
            NSLog(@"reslut = %@",resultDic);

            NSDictionary *dict = (NSDictionary *)resultDic;
            NSString *resultStatus = [dict valueForKey:@"resultStatus"];

            if ([resultStatus isEqualToString:@"9000"]) {
                //成功
                [XWPrompt showPromptMessage:@"支付成功"];
                XWPaySuccessViewController *paySuccessVC = [[XWPaySuccessViewController alloc]init];
                paySuccessVC.payType = kPayWayTypeAlipay;
                paySuccessVC.servicetype = _serviceType;
                paySuccessVC.customerServiceDic = _customerServiceDic;
                [self.signPayVC.navigationController pushViewController:paySuccessVC animated:YES]
                ;
            }else if([resultStatus isEqualToString:@"6001"]){
                [XWPrompt showPromptMessage:@"用户取消支付"];
            }else{
                //支付成功,处理
                [XWPrompt showPromptMessage:@"订单支付失败"];
            }

        }];
    } else {
        [XWPrompt showPromptMessage:@"订单支付失败"];
    }

}

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

- (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) {
    //【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
            NSLog(@"result = %@",resultDic);
        }];
    }
    if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回authCode

        [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
            //【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
            NSLog(@"result = %@",resultDic);
        }];
    }
    return YES;
}

基本上就这些了,如果不通,就看看有没有没有塞进去的包,依赖,路径,私钥公钥是否配对。

时间: 2024-12-12 03:14:52

iOS支付宝支付总结的相关文章

iOS支付宝支付--密钥制作

本文作为"iOS支付宝支付适配iOS9"补充--密钥制作(mac) 一.打开终端 第一行: openssl 第二行: genrsa -out rsa_private_key.pem 1024 第三行: rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 第四行:(将RSA私钥转换成PKCS8格式) pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM

iOS支付宝支付

支付宝支付 -- 适配iOS9首先我们一起看一下,最终调起支付宝完成支付的必要参数和方法(Order类由支付宝demo中提供) 1 Order *order = [Order new]; 2 order.partner = kAliPayPartner; 3 order.seller = kAliPaySeller; 4 order.tradeNO = @"111"; 5 order.productName = @"阿里支付test商品"; //商品标题 6 ord

iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析

iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析 浏览: 149 发布日期: 2016-10-19  分类: ios 最近在项目中接入了微信支付和支付宝支付,总的来说没有那么坑,很多人都说文档不全什么的,确实没有面面 俱到,但是认真一步一步测试下还是妥妥的,再配合懂得后台,效率也是很高的,看了这篇文章,你也只要几分钟, 就能轻松接入支付宝,在别人投来崇拜的眼光的同时,你就能潇洒的回一句,略懂略懂......   先给大家我写的微信支付,很详细哦,喜欢的点个赞点击打开微信支付链

iOS 支付宝支付繁忙ALI59

在iOS 调用支付宝支付时出现此提示. 主要情况为 tradeNO   amount等参数中  有特殊字符 导致, 在此处打个断点 po 一下相应的参数就好了. 在此也收集下调用支付宝支付出现的问题. 欢迎留言.

iOS支付宝支付详细实现流程

支付在很多主流的APP中都会用到,最常见的支付是支付宝.微信.银联等. 刚好公司项目都需要用到,目前只调试好了支付宝,之前想抽时间写,总是拖拖拉拉的,索性在后台写微信支付的时候狠下心来把支付宝SDK集成以及支付实现记录下来,后续会陆续放上微信,银联等支付文章,不足之处希望各位看官谅解,小子会加以改正. 注意:支付宝开发文档多看几遍!!! 一起看一下支付宝支付流程图,这样方便大家理解每一步后台做了什么,移动端需要怎么进行配合: 1.首先在支付宝平台创建应用,获取appid,appid是16位数字,

iOS 支付宝支付

在开发过程中,经常需要接入第三方支付.下面对支付进行一个概括. 支付宝支付 支付宝SDK下载地址:https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1 支付宝集成 在支付宝集成的过程中,会遇到一些报错,下面就碰到的报错,和大家一起解决. 集成参考官方文档: 导入代码文档:https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.RiFaV

ios 支付宝支付流程(具体操作)

步骤1:  启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下, 并导入到项目工程中. AlipaySDK.bundle    AlipaySDK.framework 步骤2:  在需要调用AlipaySDK的文件中,增加头文件引用.#import <AlipaySDK/AlipaySDK.h> 步骤3: 配置请求信息. Order *order = [[Order alloc] init];           order.partner = partner;//

iOS支付宝支付步骤

1:先与支付宝签约,获得商户ID(partner)和账号ID(seller) 2:下载相应的公钥私钥文件(加密签名用) 3:下载支付宝SDK 4:生成订单信息5:调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道6:支付完毕后返回支付结果给商户客户端和服务 , SDK里有集成支付宝功能的一个Demo> 集成支付功能的具体操作方式,可以参考Demo //生成订单信息及签名请求参数没有 return_URL这个参数,商户可以根据自身情况选择签名方法NSString *[email protec

IOS支付宝支付出现6002问题的解决办法

运行支付宝官方demo进行支付测试,会出现6002-网络连接错误,是因为以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求.同样的,如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败. 解决办法是添加白名单: 1.在in