ios 调用各种支付(Swift)

82 篇文章 1 订阅

支付宝:

 

[objc]  view plain  copy
  1. let order = Order()  
  2.       order.partner = partner;  
  3.       order.seller = seller;  
  4.       order.tradeNO = product.orderId//订单ID(由商家自行制定)  
  5.       order.productName = product.subject as String; //商品标题  
  6.       order.productDescription = product.body//商品描述  
  7.       order.amount = NSString(format: "%.2f", floatPrice) as String//商品价格  
  8.       order.notifyURL = "*******.aspx"//回调URL  
  9.         
  10.       order.service = "mobile.securitypay.pay";  
  11.       order.paymentType = "1";  
  12.       order.inputCharset = "utf-8";  
  13.       order.itBPay = "30m";  
  14.       order.showUrl = "m.alipay.com";  
  15.         
  16.       //应用注册scheme,在AlixPayDemo-Info.plist定义URL types  
  17.       let appScheme = "alisdkyft";  
  18.         
  19.       //将商品信息拼接成字符串  
  20.       let orderSpec = order.description  
  21.       print("orderSpec = \(orderSpec)")  
  22.         
  23.       //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode  
  24.       let signer = CreateRSADataSigner(privateKey)  
  25.       let signedString = signer.signString(orderSpec)  
  26.         
  27.       //将签名成功字符串格式化为订单字符串,请严格按照该格式  
  28.       let orderString:String?  
  29.       if(signedString != nil){  
  30.           orderString = "\(orderSpec)&sign=\"\(signedString)\"&sign_type=\"RSA\""  
  31.           AlipaySDK.defaultService().payOrder(orderString, fromScheme: appScheme)  
注意需要按照支付宝官方文档 配置

微信

 

[objc]  view plain  copy
  1. class func weixinzhifu(prepayid:String,price:String){  
  2.        
  3.        
  4.      let dic = ["pis_yzm":securitycode,"pis_ordernumber":prepayid,"pis_chargeamt":price]  
  5.      DBService.WeiXinPay(dic, block: { (result) -> Void in  
  6.          let data = result.dataUsingEncoding(NSUTF8StringEncoding)  
  7.          let json = JSON(data:data!)  
  8.          print("zlzjson\(json)")  
  9.          if(json["code"].stringValue == "0"){  
  10.              let re = PayReq()  
  11.              re.openID = WEIXIN_APPID  
  12.              re.partnerId  = WEIXIN_PARTNERID  
  13.              re.prepayId = json["prepayId"].stringValue  
  14.              re.package  = "Sign=WXPay"  
  15.              re.nonceStr = json["nonceStr"].stringValue  
  16.              re.timeStamp = (UInt32)(json["timeStamp"].stringValue)!           
  17.              re.sign = json["Sign"].stringValue  
  18.                
  19.                
  20.              //                        客户端自动生成二次签名  
  21.              //                        var str = "appid=*************&noncestr=\(re.nonceStr)&package=\(re.package)&partnerid=\(re.partnerId)&prepayid=\(re.prepayId)×tamp=\(re.timeStamp)"  
  22.              //                        print(str)  
  23.              //                        var zlzstr = str + "&key=*******"  
  24.              //                         print(zlzstr)  
  25.              //                        re.sign = (zlzstr.md5).uppercaseString  
  26.                
  27.                
  28.              WXApi.sendReq(re)  
  29.              //                   request.sign=[md5 createMD5SingForPay:@"*******" partnerid:request.partnerId prepayid:request.prepayId package:request.package noncestr:request.nonceStr timestamp:request.timeStamp];  
  30.                
  31.                
  32.                
  33.          }  
  34.      })  
  35.        
  36.        
  37.  }  
注意:sign 不是后台第一次生成的sign 需要二次生成 用到 字段是客户端发起请求的 参数;

三 :银联:

[objc]  view plain  copy
  1. class func yinlian(prepayid:String,price:String){  
  2.           print("prepayid:\(prepayid)")  
  3.         let dic = ["pis_yzm":securitycode,"pis_ordernumber":prepayid,"pis_chargeamt":price]  
  4.         DBService.UnionPay(dic, block: { (result) -> Void in  
  5.             let data = result.dataUsingEncoding(NSUTF8StringEncoding)  
  6.             let json = JSON(data:data!)  
  7.             print("yinlian tn: \(json)")  
  8.             if(json["code"].stringValue == "0"){  
  9.                    let tn = json["tn"].stringValue  
  10.                    let yinlianControl = UPPaymentControl.defaultControl();  
  11.                  var zlz =  yinlianControl.startPay(tn, fromScheme"UnionPay", mode"01", viewController: nil)  
  12.                 if(zlz){  
  13.                   
  14.                 print("yes")}  
  15.                 else{  
  16.                  print("no")  
  17.                 }  
  18.                   
  19.                   
  20.                   
  21.             }  
  22.         })  
  23.           
  24.           
  25.     }  
注意:需要后台去银联后台获取到tn值;

四 招商wap版:

[objc]  view plain  copy
  1. //  
  2. //  epayViewController.swift  
  3. //  yft  
  4. //  
  5. //  Created by mac on 16/7/14.  
  6. //  Copyright © 2016年 Tongjialin. All rights reserved.  
  7. //  
  8.   
  9. import UIKit  
  10.   
  11. class epayViewController: UIViewController {  
  12.       
  13.       
  14.     var webViewPay = UIWebView()  
  15.     var BranchID = "0574" //(必填) 商户开户分行号  
  16.     var CoNo = "000641"   //(必填) 商户号  
  17.     var BillNo = "123456" //(必填) 订单号  
  18.     var Amount = "1"//(必填) 软妹币  
  19.     var Date = ""//(必填) 支付日期  
  20.     var ExpireTimeSpan = ""//(选填)订单过期时间跨度,必须为大于零的整数  
  21.     var MerchantUrl=""  //支付结果通知命令中参数之前的部分,不允许带端口号,长度不能超过128个字节。例如: http://www.merchant.com/path/notify.dll。  
  22.     var MerchantPara = ""//商户需要银行在支付结果通知中转发的商户参数。  
  23.     var MerchantRetUrl = ""//如果提供了这个字段,手机支付界面上将出现“返回按钮”。客户点击“返回按钮”,将跳转到MerchantRetUrl与MerchantRetPara所指定的地址  
  24.     var MerchantRetPara = ""//详见MerchantRetUrl中的说明。  
  25.     var MerchantCode = "|VVzjS4SoORA7qHMznYbqP0jncJ5ihZGRaOOIrvNJWBKhaSMz0Ah3VGg1WyKJktSV/1ILYiUy7h3i2kwbr9F5IJnr1SeCPf*EKCX4aXjrE53wymq9uTVbzFPB76gFmekpx8N3q062JpSLlbsIKtPv4VWrzKKId4avr6//rG0PIrjlWrR371Wa*g==|74c8fba569fbe3ce1b8911a793cd5a8bfbd15cbd"// (总行要求必填)商户对订单信息的签名,用于防篡改,建议商户传送并申请强制校验商户校验码。详见“商户校验码.doc”说明。  
  26.     var detailURL = "";  
  27.       
  28.     override func viewDidLoad() {  
  29.         super.viewDidLoad()  
  30.           
  31.           
  32.         var date = NSDate()  
  33.         var timeFormatter = NSDateFormatter()  
  34.         timeFormatter.dateFormat = "yyyMMdd"  
  35.         var strNowTime = timeFormatter.stringFromDate(date) as String  
  36.           
  37.         self.Date = strNowTime  
  38.         self.Date = "20160727"  
  39.         print(self.Date)  
  40.          
  41.           
  42.         detailURL = "http://61.144.248.29:801/netpayment/BaseHttp.dll?PrePayWAP&BranchID=\(BranchID)&CoNo=\(CoNo)&BillNo=\(BillNo)&Amount=\(Amount)&Date=\(Date)&ExpireTimeSpan=\(ExpireTimeSpan)&MerchantUrl=\(MerchantUrl)&MerchantPara=\(MerchantPara)&MerchantRetUrl=\(MerchantRetUrl)&MerchantRetPara=\(MerchantRetPara)&MerchantCode=\(MerchantCode)"  
  43.         var str = detailURL.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!  
  44.           
  45.         self.webViewPay = UIWebView(frame: CGRect(x: 0, y0, width: ScreenWidth, height: ScreenHeight))  
  46.         print("ssss\(detailURL)")  
  47.         var url = NSURL(string: str)  
  48.         var urlRequest = NSURLRequest(URL: url!)  
  49.         self.view.addSubview(webViewPay)  
  50.         webViewPay.loadRequest(urlRequest)  
  51.   
  52.     }  
  53.   
  54. }  

  注意 : 需要后台去给字段加密,在测试环境下 商户秘钥是空,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值