1 从支付宝官网下载ios demo sdk
2 将sdk下demo下的alipay复制到工程目录,并加入工程中,如下图
3 修改Build Settings->Search Paths->Header Search Paths 和 Library Search Paths
4 参照demo编写相应代码.....
- (void)viewDidLoad
{
[superviewDidLoad];
NSString *appScheme = @"lingo7Alipay";
// NSString* orderInfo = [self getOrderInfo:0];
// NSString* signedStr = [self doRsa:orderInfo];
NSString *orderString = [NSStringstringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
@"", @"", @"RSA"];
[AlixLibServicepayOrder:orderString AndScheme:appScheme seletor:@selector(payResult:)target:self];
}
-(void)payResult:(NSString *)strResult
{
#if ! __has_feature(objc_arc)
AlixPayResult* result = [[[AlixPayResult alloc] initWithString:strResult] autorelease];
#else
AlixPayResult* result = [[AlixPayResultalloc] initWithString:strResult];
#endif
if (result)
{
if (result.statusCode == 9000)
{
//用公钥验证签名严格验证请使用result.resultString与result.signString验签
//交易成功
NSString* key = AlipayPubKey;//签约帐户后获取到的支付宝公钥
id<DataVerifier> verifier;
verifier =CreateRSADataVerifier(key);
if ([verifierverifyString:result.resultStringwithSign:result.signString])
{
//验证签名成功,交易结果无篡改
}
}
else
{
//交易失败
}
}
else
{
//失败
}
}
- (NSString *)generateTradeNO
{
constint N = 15;
NSString *sourceString =@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
NSMutableString *result = [[NSMutableStringalloc] init] ;
srand(time(0));
for (int i = 0; i < N; i++)
{
unsigned index =rand() % [sourceString length];
NSString *s = [sourceStringsubstringWithRange:NSMakeRange(index, 1)];
[resultappendString:s];
}
return result;
}
-(NSString*)getOrderInfo:(NSInteger)index
{
/*
*点击获取prodcut实例并初始化订单信息
*/
Product *pro = [[Productalloc] init];
AlixPayOrder *order = [[AlixPayOrderalloc] init];
order.partner =PartnerID;
order.seller =SellerID;
order.tradeNO = [selfgenerateTradeNO]; //订单ID(由商家自行制定)
order.productName = pro.subject;//商品标题
order.productDescription = pro.body;//商品描述
order.amount = [NSStringstringWithFormat:@"%.2f",pro.price];//商品价格
order.notifyURL = @"http://www.lingo7.com/..."; //回调URL
return [orderdescription];
}
-(NSString*)doRsa:(NSString*)orderInfo
{
id<DataSigner> signer;
signer = CreateRSADataSigner(PartnerPrivKey);
NSString *signedString = [signer signString:orderInfo];
return signedString;
return @"";
}
错误1
出现如上错误后,删除 project->Targets->Build Phases下的libcrypto.a然后再添加即可解决..
模拟器调试运行,真机调试一切正常,可当product->archive时,错误出来了,如下图
最后通过大虾们的帮助,原来是由于arm64引起,删除即解决问题