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

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

bba55f0173ca

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

bba55f0173ca

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

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

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

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

bba55f0173ca

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

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

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

bba55f0173ca

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

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

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

bba55f0173ca

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=@"http://www.xxx.com";//回调url

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

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

order.paymentType=@"1";

order.inputCharset=@"utf-8";

order.itBPay=@"30m";

order.showUrl=@"m.alipay.com";

//用户注册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];

}];

}

第二个大坑来了

bba55f0173ca

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就行了

bba55f0173ca

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

然后运行。完美。

Demo地址:https://github.com/ZhichaoZhan/AlipayDemo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值