关于支付宝支付
Posted 世界仔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于支付宝支付相关的知识,希望对你有一定的参考价值。
导入支付宝是有一堆坑的
首先导入一些必要的库,按照支付宝上面说得一步一步的来
关键有一些错误
一:支付宝里面没有导入uikit等的一些基本框架,连个NSOBject都找不到的,这时就把着一些必要的库导入就可以(一般我导入uikit,字少,用途大,容量也大)
二:就是必然会遇到的,找不到openssl里面的东西,这时你需要在 Build Setting
里面的Searth Paths下面的Header Searth Paths 添加路径,需要注意的是要一个真实的文件路径(我当时是随便建一个文件夹,然后就不管了,再找到openssl的路径,添加到Header Searth Paths )
例如:openssl,我直接把它扔到工程的住目录下,就是xxxx工程/openssl
那么,我给Header Searth Paths的路径就是$(SRCROOT)/xxxx工程
//MARK:
//MARK:支付宝支付
/// 支付宝支付
func aliPay(){
//TODO:修改key
/*============================================================================*/
/*=======================需要填写商户app申请的===================================*/
/*============================================================================*/
let partner:NSString = "xxxx"
let seller:NSString = "x"
let privateKey:NSString = "xxx"
/*============================================================================*/
/*============================================================================*/
/*============================================================================*/
if (partner.length == 0 || seller.length == 0 || privateKey.length == 0) {
let alew = UIAlertView(title: "提示", message: "缺少partner或者seller或者私钥。", delegate: nil, cancelButtonTitle: "确定")
alew.show()
}
//else{
// if self.model == nil {
// app.havenotext(app.hud, text: "没有获取到支付项目", view: app.window!)
// return
// }
/*
*生成订单信息及签名
*/
//将商品信息赋予AlixPayOrder的成员变量
let order = Order()
order.partner = partner as String
order.sellerID = seller as String
//改 订单ID(由商家自行制定)
order.outTradeNO = self.seriNumber
//改 商品标题
order.subject = self.model?.payTitle
//改 商品描述
order.body = self.model?.payInfo
// order.body = "改 商品描述"
//改 商品价格
order.totalFee = self.model?.money
// order.totalFee = "0.01"
//回调地址
order.notifyURL = ""
//接口名称,固定为mobile.securitypay.pay。
order.service = "mobile.securitypay.pay"
//支付类型,1:商品购买。(不传情况下的默认值)
order.paymentType = "1"
//商户网站使用的编码格式,固定为utf-8。
order.inputCharset = "utf-8"
//设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。当用户输入支付密码、点击确认付款后(即创建支付宝交易后)开始计时。取值范围:1m~15d,或者使用绝对时间(示例格式:2014-06-13 16:00:00)。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。该参数数值不接受小数点,如1.5h,可转换为90m。
order.itBPay = "30m"
//商品地址
order.showURL = "m.alipay.com"
//应用注册scheme,在AlixPayDemo-Info.plist定义URL types
let appScheme = "com.zhaijiabao"
//将商品信息拼接成字符串
let orderSpec = order.description
print("orderSpec == \(orderSpec)")
//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
let signer = CreateRSADataSigner(privateKey as String)
//id<DataSigner> signer = CreateRSADataSigner(privateKey);
let signedString = signer.signString(orderSpec)
//NSString *signedString = privateKey;
//将签名成功字符串格式化为订单字符串,请严格按照该格式
var orderString:String = ""
if (signedString != nil) {
let orderString = "\(orderSpec)&sign=\"\(signedString)\"&sign_type=\"RSA\""
AlipaySDK.defaultService().payOrder(orderString, fromScheme: appScheme, callback: { (resultDic) in
print("reslut == \(resultDic)")
let dic = resultDic as! NSDictionary
let res = dic.objectForKey("resultStatus") as! String
if ((res as! NSString).integerValue == 9000){
// self.jump2AliPay()
app.havenotext(app.hud, text: "支付成功", view: app.window!)
}else{
app.havenotext(app.hud, text: "支付失败", view: app.window!)
}
})
}
}
}
以上是关于关于支付宝支付的主要内容,如果未能解决你的问题,请参考以下文章