支付宝集成及遇到的问题解决
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引起,删除即解决问题
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引起,删除即解决问题
相关文章推荐
- 记录自己集成支付宝遇到的问题及解决方法
- javafx maven集成遇到的问题解决
- Android 集成支付宝快捷支付遇到的问题2014年5月14日
- 解决集成支付宝报一堆warning: (arm64) /Users/scmbuild/workspace/standard-pay/.....警告问题
- 支付宝集成遇到的问题
- Android 支付宝集成及解决支付宝报null指针问题
- Xfire集成到web 项目中遇到的问题 及解决方法
- 网站集成支付宝所遇到的问题.
- [j2ee]解决在集成Apache CXF框架过程中遇到的问题cannot be cast to javax.servlet.Filter
- iOS支付宝集成时遇到的问题整理(2)
- IOS集成支付宝所遇到的两个问题
- 总结集成支付宝, 遇到的各种问题
- 集成shareSDk过程中遇到的问题及解决办法,慢慢整理中
- 支付宝快捷支付集成签名不成功,崩溃问题解决
- iOS 集成支付宝支付编译出现的问题及解决办法
- ACE与C++/CLI集成使用时遇到的问题及解决方法
- Xfire集成到web 项目中遇到的问题 及解决方法
- iOS支付宝集成遇到的问题
- iOS 支付宝的集成与遇到的问题
- 2016年2月3日,快除夕了,我在做支付宝【移动支付】时遇到的问题的解决办法