关于支付宝支付

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!)

                }

            })

            

        }

        

    }

}

 

以上是关于关于支付宝支付的主要内容,如果未能解决你的问题,请参考以下文章

关于集成支付宝SDK的开发

关于小程序 接入 支付宝支付 微信支付

支付宝支付接口

关于支付宝回调接口,签名验证不相同原因

关于支付宝app支付服务端的实现-Java版

支付宝H5支付demo