加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift调用支付宝

发布时间:2020-12-14 01:41:58 所属栏目:百科 来源:网络整理
导读:开发环境xcode7.1 运行环境 IOS9.1 到支付宝面面下载 IOS 的移动支付功能的 SDK ( Android 和 IOS 是同一个 zip 文件下) http://doc.open.alipay.com/doc2/detail?treeId=54articleId=103419docType=1 然后申请商家支付宝,得到相应的 private_key 和 part

开发环境xcode7.1 运行环境 IOS9.1

到支付宝面面下载IOS的移动支付功能的SDKAndroidIOS是同一个zip文件下)

http://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1

然后申请商家支付宝,得到相应的private_keypartner,seller

IOS的资料在SDK文件夹的客户端demo”下的IOS文件夹下

  • 复制AlipaySDK.bundle和AlipaySDK.framework到项目下

  • 复制IOS Demo下的两个.a文件到项目下

  • 复制iOS Demo下的openssl文件夹,Util文件夹,Order.h,Order.m(省得自己在swift中定义订单)文件到项目中

  • 在xcode中创建一个项目AlipayDemo,在项目中Add Files to AlipayDemo所有的.a文件和openssl文件夹,Util文件夹,Order.h,Order.m,此时系统提示创建头文件,选择允许创建(可以手动添加一个.h文件作为头文件)

    wKiom1YvQdvzpSi2AATZDoGomlo067.jpg

  • 如果在基于IOS9.0编译,在info.list中添加如下xml代码(info.list以SourceCode形式打开)

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>alipay.com</key>
<dict>
<!--Includetoallowsubdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--IncludetoallowinsecureHTTPrequests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--IncludetospecifyminimumTLSversion-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>


  • 增加头文件

Util中的base64.hopenssl_wrapper.h添加#import <Foundation/Foundation.h>,给支付宝AlipaySDK.h添加#import <Foundation/Foundation.h>#import<UIKit/UIKit.h>

  • 设置Build Settings

查找Bitcode,把Yes改成No

查打Header SearchPaths,点小+号,添加$(SRCROOT)/AlipayDemo

  • 在info的URL Types中添加一个GSWAlipayDemo的节点,以备代码中Order的appScheme使用。

  • 代码实现

importUIKit
classViewController:UIViewController{
overridefuncviewDidLoad(){
super.viewDidLoad()

letbut=UIButton(type:UIButtonType.System);
but.setTitle("
支付",forState:UIControlState.Normal);
but.backgroundColor=UIColor.greenColor();
but.frame=CGRect(x:10,y:100,width:100,height:30);
but.addTarget(self,action:"click",forControlEvents:UIControlEvents.TouchUpInside);
self.view.addSubview(but);}
funcclick()
{
AliplayFunc();
print("click")
}
varTicketTotalprice:Float=0.01;//支付金额
varseller:String="支付宝申请的seller";
varpartner:String="支付宝申请的partner";
varprivateKey:String="替换支付申请的privet_key";


funcAliplayFunc(){
letOrders=Order()
Orders.partner=partner
Orders.seller=seller
Orders.productName="ProductName";
Orders.productDescription="thisisagoods";
Orders.amount=NSString(format:"%.2f",TicketTotalprice)asString;//(价格必须小数点两位)
Orders.tradeNO="DJ0000000001";
Orders.notifyURL="http://selftweb.com";
Orders.service="mobile.securitypay.pay";
Orders.paymentType="1";
Orders.inputCharset="utf-8";
Orders.itBPay="30m";
Orders.showUrl="m.alipay.com";
letappScheme="GSWAPayDemo";//在
letorderSpec=Orders.description;
letsigner=CreateRSADataSigner(privateKey);
letsignedString=signer.signString(orderSpec);
letorderString="(orderSpec)&sign="(signedString)"&sign_type="RSA"";
AlipaySDK.defaultService().payOrder(orderString,fromScheme:appScheme,callback:{(resultDic)->Voidin
print("reslut=(resultDic)");
ifletAlipayjson=resultDicas?NSDictionary{
letresultStatus=Alipayjson.valueForKey("resultStatus")as!String
ifresultStatus=="9000"{
print("OK")
}elseifresultStatus=="8000"{
print("正在处理中")
self.navigationController?.popViewControllerAnimated(true)
}elseifresultStatus=="4000"{
print("订单支付失败");
self.navigationController?.popViewControllerAnimated(true)
}elseifresultStatus=="6001"{
print("用户中途取消")
self.navigationController?.popViewControllerAnimated(true)
}elseifresultStatus=="6002"{
print("网络连接出错")
self.navigationController?.popViewControllerAnimated(true)
}
}
})
}
overridefuncdidReceiveMemoryWarning(){
super.didReceiveMemoryWarning()
//DispoSEOfanyresourcesthatcanberecreated.
}
}

Demo源代码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读