• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift版关于微信支付的那点事

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

今天心情那真是想要强奸吉娃娃的冲动  说白了就是不想做和工作沾边的任何事  但是也不能闲着啊  时间那么贵  

之前就想把微信支付做一下  主要就是怕自己忘记了 今天难得有时间  就来简单的记录一下  旨在提高自己  

如果要在app中介入微信的支付功能  其实坑还是稍微有点多的   但是也不是不能解决  毕竟现在百度那么强大 

 

正事开启 

(1).首先你要去微信开放平台去注册一个账号  然后完成开发者认证 然后完成商户资料填写 然后还要在线签合同  填写账号资料  反正就是等等吧   这些的都不是今天要说的重点,今天要说的是在你上述资料都完事了之后  拿到APPID后来开发的过程 

(2).好哒 ,现在你已经拿到了appID的信息了 那么就来愉快的接入吧 

(3).其实到这一步,才是真正开启今天我要说的主题的  ???? 

(4).下载微信的SDK 然后把 libWeChatSDK.a 、WXApi.h 、 WXApiObject.h 这三个文件拖到你的项目中去,并在Bridging-Header.h文件中添加如下两行代码

#import "WXApi.h"
#import "WXApiObject.h"
@import UIKit; //使用1.6版必须有(PS:1.5版可以不要)这句话你最好看一下

(5).然后加入这些依赖库 看准了哈 别加错了
SystemConfiguration.framework,libz.dylib,libsqlite3.0.dylib,libc++.dylib,Security.framework,CoreTelephony.framework

在pilst文件中加入应用的白名单 (你可以直接用文本编辑打开pilst文件,然后将下面的代码直接粘贴到 倒数第二行的上面,简单粗暴,但是很好使)

<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>


(6).设置URL Types
URL Schema中填写之前创建的应用的AppID
(7)在appdelegate里
注册一下你的应用
WXApi.registerApp(“你的应用ID”, withDescription: "wxin")

重写下面这个方法

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {

        print("openURL:\(url.absoluteString)")

        

        if url.scheme == WX_APPID {

            return WXApi.handleOpenURL(url, delegate: self)

        }

(8)接下来你就可以在你用到微信支付的地方直接调起微信了 

(微信支付和支付宝支付流程有些不一样,微信支付会在真正发起支付请求钱先发起PrePay(预支付)请求,然后利用PrePay发起支付请求。Demo中的PrePay是在客户端生成的,但是更加安全的方式是在服务端生成PrePay)

     /**

    微信支付方法

     :param: wxDict 从服务器返回来的字典数据

    */

    func sendWXPay(wxDict: [String: AnyObject]) {

        if !WXApi.isWXAppInstalled()  {//检查一下是否可以使用微信

            SwiftNotice.showText("未安装微信")

            return

        } else if !WXApi.isWXAppSupportApi() {

            SwiftNotice.showText("当前版本微信不支持微信支付")

            return

        }

        let req = PayReq()

         req.openID = wxDict["appid"] as! String

        req.partnerId = wxDict["partnerid"] as! String

        req.prepayId = wxDict["prepayid"] as! String

        req.package = wxDict["packageValue"] as! String

        req.timeStamp = UInt32(wxDict["timestamp"] as! String)!

        req.nonceStr = wxDict["noncestr"] as! String

        req.sign = wxDict["sign"] as! String

        WXApi.sendReq(req) //调起微信

    }

(9)处理微信支付完事之后的事情

 // MARK: - WXApiDelegate

      func onReq(req: BaseReq!) {//这个方法暂时好像用不到  不过你最好还是实现它

        

    }

    func onResp(resp: BaseResp!) {

        if resp.isKindOfClass(PayResp.classForCoder()) {

            //支付返回结果,实际支付结果需要去微信服务器端查询

               switch resp.errCode {

            case WXSuccess.rawValue:

                print("支付成功")

                //在这里你是不是可以去干你想干的事了呢

                break

            default:

                //当然了 失败了也是要干事情滴

                break

            }

        }

      }

完事 大功告成 



 


 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
正则表达式(Swift)发布时间:2022-07-13
下一篇:
swift开发网络篇—利用NSURLSession发送GET和POST请求发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap