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

本文详细介绍了如何在iOS应用中集成支付宝SDK进行支付功能的开发。包括从支付宝官网下载SDK、配置项目、编写支付相关代码等步骤。同时,还提供了处理支付结果验证的方法及解决集成过程中遇到的一些常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.resultStringresult.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引起,删除即解决问题




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值