700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php支付宝ios12.1.4支付失败 iOS集成支付宝和遇到的坑

php支付宝ios12.1.4支付失败 iOS集成支付宝和遇到的坑

时间:2021-10-17 09:38:44

相关推荐

php支付宝ios12.1.4支付失败 iOS集成支付宝和遇到的坑

首先导入支付宝SDK 和依赖库

98B035F7-6F66-4770-A8BB-F7E04CFFF4F1.png

libc++.tbd

libz.tbd

CoreMotion.framework

CFNetwork.framework

Foundation.framework

UIKit.framework

CoreGraphics.framework

CoreText.framework

QuartzCore.framework

CoreTelephony.framework

SystemConfiguration.framework

导入之后编译会报错openssl/asn1.h

6F957E50-107D-4D54-A3A0-8E92A62CF0C9.png

这是一个神奇的大坑,好多人卡在这里

解决方法:Targets -> Build Settings 下的 Header Search Paths。添加如下目录 "$(SRCROOT)/项目名称/支付宝sdk所在文件夹的绝对地址"

当使用xcode7的时候可能会报错

41AB3AB2-8921-4478-A575-63C96557D1D4.png

linker command failed with exit code 1 (use -v to see invocation)

这时我们找到Bitcode改为NO xcode默认为YES

259F6798-19BE-400D-8EF1-599FF154AC4D.png

然后再编译,ok没报错。 已经成功了一大半。

填上支付宝的信息,以及订单信息。

EF77CD74-F77C-4003-99F9-E40850270F76.png

/*

*点击获取product实例并初始化订单信息

*/

/*

*商户唯一的partner 和seller

签约后会给商户分配唯一的partner 和seller

*/

//填写用户申请的

NSString *partner=@"";

NSString *seller=@"";

NSString *privateKey=@"";//下载的公匙私匙文件

//partner 和seller获取失败

if([partner length]==0||[seller length]==0||[privateKey length]==0)

{

UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"提示" message:@"缺少partner或者seller" delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles: nil];

[alert show];

return;

}

//生成订单信息及签名

//将商品信息赋予ALixpayOrder的成员变量

UserModel *Model=[[UserModel alloc]init];

Order *order=[[Order alloc]init];

order.partner=partner;

order.seller=seller;

// order.tradeNO=Model.oderNumber;//订单号

// order.productName=Model.orderName;//商品名称

// order.productDescription=Model.orderDescri;//商品描述

// order.amount=Model.orderPrice;//商品价格

order.tradeNO=@"12398998d66522416565";

order.productName=@"ipone6s玫瑰金";

order.productDescription=@"但是";

order.amount=@"0.01";

order.notifyURL=@"";//回调url

//下面这些参数都是固定的

order.service=@"mobile.securitypay.pay";

order.paymentType=@"1";

order.inputCharset=@"utf-8";

order.itBPay=@"30m";

order.showUrl=@"";

//用户注册scheme,在info.plist 定义URL types 用于快捷支付成功后重新唤起商户应用

NSString *appSheme=@"chaoge";

//将商品信息拼接成字符串

NSString *orderFormat=[order description];

//获取私匙并将商户信息签名,外部商户可以根据情况存放私匙和签名,只要遵循RSA签名规范将签名字符串base64编码和UrlEncode

idsigner=CreateRSADataSigner(privateKey);

NSString *signString=[signer signString:orderFormat];

//将签名成功字符格式化为订单字符串,请严格按照格式

NSString *orderString=nil;

if(signString!=nil)

{

orderString=[NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderFormat,signString,@"RSA"];

NSLog(@"%@",orderString);

[[AlipaySDK defaultService]payOrder:orderString fromScheme:appSheme callback:^(NSDictionary *resultDic) {

NSLog(@"------%@",resultDic);

NSString *msg=[resultDic objectForKey:@"result"];

if(msg.length==0)

{

msg=@"支付失败";

}else{

msg=@"支付成功";

}

UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"提示" message:msg delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles:nil];

[alert show];

}];

}

第二个大坑来了

A024ADC6-503F-481C-A40E-A085B9E8EF97.png

Undefined symbols for architecture arm64:

"_CreateRSADataSigner", referenced from:

-[ViewController payment:] in ViewController.o

ld: symbol(s) not found for architecture arm64

clang: error: linker command failed with exit code 1 (use -v to see invocation)报错。

C++混编。

这时候我们只需要把写对应支付宝操作地方的类文件后缀.m改为.mm就行了

F6F93805-EBB8-4FD8-839E-E55E14424716.png。

然后运行。完美。

Demo地址:/ZhichaoZhan/AlipayDemo

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。