iOS支付宝1分钟集成,使用方法封装。超级好用

来源:互联网 发布:程序化交易编程语言 编辑:程序博客网 时间:2024/06/04 14:05

首先你得下载支付宝sdk和demo.
将下图中的文件从demo中拖到你得工程里
这里写图片描述

不用担心其中NSString+Alipay 这个类你没有,稍后我会贴上代码

你得这个路径得更改,不然容易找不到文件。如图
这里写图片描述

pch头文件
这里写图片描述
这个地方需要设置一下,当你支付完成后返回应用,我直接用的友盟返回时用的fromScheme ,你也可以自己设置一个,比如你的工程名。
这里写图片描述

接下来就是你代码部分了。在AppDelegate 中导入类
这里写图片描述
需要写的代码
这里写图片描述

NSString+Alipay////  NSString+Alipay.h//  yunkang////  Created by lixi on 16/6/15.//  Copyright (c) 16年 lixi. All rights reserved.//#import <Foundation/Foundation.h>#import "Order.h"#import "DataSigner.h"#import <AlipaySDK/AlipaySDK.h>@interface NSString (Alipay)+ (NSString *)stringWithName:(NSString *)name Price:(float)price OrderId:(NSString *)orderId NotifyURL:(NSString *)notifyURL;@end
////  NSString+Alipay.m//  yunkang////  Created by lixi on 16/6/15.//  Copyright (c) 2016年 lixi. All rights reserved.//#import "NSString+Alipay.h"@implementation NSString (Alipay)+ (NSString *)stringWithName:(NSString *)name Price:(float)price OrderId:(NSString *)orderId NotifyURL:(NSString *)notifyURL{    NSString *partner = @"xxxxxxxxxxx";    NSString *seller = @"xxxxxxxxxxx@qq.com";    NSString *privateKey = @"MIICdQIBADANBgxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxZperX";    /*     *生成订单信息及签名     */    //将商品信息赋予AlixPayOrder的成员变量    Order *order = [[Order alloc] init];    order.partner = partner;    order.sellerID = seller;    order.outTradeNO = orderId; //订单ID(由商家自行制定)    order.subject = name; //商品标题    order.body = @"购买"; //商品描述    order.totalFee = [NSString stringWithFormat:@"%.2f",price]; //商品价格    order.notifyURL = notifyURL; //回调URL    order.service = @"mobile.securitypay.pay";    order.paymentType = name;//交易名称,比较重要    order.inputCharset = @"utf-8";    order.itBPay = @"30m";    order.showURL = @"m.alipay.com";    //将商品信息拼接成字符串    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 = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",                       orderSpec, signedString, @"RSA"];        return orderString;    }else{        return nil;    }}- (NSString *)generateTradeNO{    static int kNumber = 15;    NSString *sourceStr = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";    NSMutableString *resultStr = [[NSMutableString alloc] init];    srand(time(0));    for (int i = 0; i < kNumber; i++)    {        unsigned index = rand() % [sourceStr length];        NSString *oneStr = [sourceStr substringWithRange:NSMakeRange(index, 1)];        [resultStr appendString:oneStr];    }    return resultStr;}@end

下面就是在你发起支付的地方调方法了

        NSString *orderStr = [NSString stringWithName:[NSString stringWithFormat:@"订单支付%@", name] Price:price OrderId:orderId NotifyURL:url];        [[AlipaySDK defaultService] payOrder:orderStr fromScheme:@"wxa616fdbf0f8709c0" callback:^(NSDictionary *resultDic) {            NSLog(@"reslut = %@",resultDic);            if ([resultDic[@"resultStatus"] integerValue] == 9000) {                HUD(@"支付成功!");                [self.navigationController popToRootViewControllerAnimated:YES];            }else{                HUD(@"支付失败!");            }        }];

如果我有什么地方写的不够清楚或者有问题的地方,欢迎大家来纠正!3Q~

2 0