您的位置:首页 > 其它

支付宝集成及遇到的问题解决

2014-07-08 15:10 274 查看
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引起,删除即解决问题

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: