微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift调用支付宝

开发环境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

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源代码

原文地址:https://www.jb51.cc/swift/325585.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐