集成支付宝接口 swift

参考:http://www.bubuko.com/infodetail-650291.html

1.


 //调支付宝
    func Alipay() {
        
        /*
        *商户的唯一的parnter和seller。
        *签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。
        */
        
        /*============================================================================*/
        /*=======================需要填写商户app申请的===================================*/
        /*============================================================================*/
        let partner = ""
        let seller = ""
        let privateKey = ""
        /*============================================================================*/
        /*============================================================================*/
        /*============================================================================*/
        
        //partner和seller获取失败,提示
        if (count(partner) == 0 || count(seller) == 0 || count(privateKey) == 0)
        {
            var alert = UIAlertView(title: "提示", message: "缺少partner或者seller或者私钥。", delegate: self, cancelButtonTitle: "确定")
            alert.show()
            return
        }
        
        //配置请求信息。
        
        let generateTradeNO = ""
        let product = Product()
        product.subject = "订单标题(号)"
        product.body = "订单描述(商品串-地址)"
        product.price = 12.123
        var order:Order = Order()
        order.partner = partner
        order.seller = seller
        //订单ID(由商家□自□行制定)
        order.tradeNO = generateTradeNO
        //商品标题
        order.productName = product.subject
        //商品描述
        order.productDescription = product.body
        //商品价格
        order.amount = String(format: "%.2f", product.price)
        //回调URL
        order.notifyURL = "http://www.xxx.com"
        order.service = "mobile.securitypay.pay"
        order.paymentType = "1"
        order.inputCharset = "utf-8"
        order.itBPay = "30m"
        
        //应用注册scheme,在AlixPayDemo-Info.plist定义URL types 
        var appScheme = "alisdkdemo"
        //将商品信息拼接成字符串
        var orderSpec = order.description
        println("orderSpec = \(orderSpec)")
        
        //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循 RSA 签名规范, 并将签名字符串 base64 编码和 UrlEncode
        
        var signer = CreateRSADataSigner(privateKey)
        var signedString = signer.signString(orderSpec)
        //将签名成功字符串格式化为订单字符串,请严格按照该格式 NSString *orderString = nil;
        if (signedString != nil) {
            var orderString = "\(orderSpec)&sign=\"\(signedString)\"&sign_type=\"RSA\""
//            orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
//            orderSpec, signedString, @"RSA"];
            AlipaySDK.defaultService().payOrder(orderString, fromScheme: appScheme, callback: { (resultDic) -> Void in
                    println("reslut = \(resultDic)")
            })
        }
    }

3. 报错: rsa_private read error : private key is NULL

 

原因:私钥没有转成PKCS8

1)在RSADataSigner.m文件中 搜索代 [result appendString:@"-----BEGIN PRIVATE KEY-----\n"]; 将其改成 [result appendString:@"-----BEG

IN RSA PRIVATE KEY-----\n"];

2)在RSADataSigner.m文件中 搜索代 [result appendString:@"\n-----END PRIVATE KEY-----"]; 将其改成 [result appendString:@"\n-----END RSA PRIVATE KEY-----"];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值