支払統合

5524 ワード

アリペイ支払い
支付宝の統合導入を行うSDKがDemo付きバージョンであれば、後続のSDK更新の際に、SDKをダウンロードして導入し、エラーが発生すると、解決策はDemo付きのパッケージファイルを再ダウンロードしてSDKを導入することです.アリペイの支払いを行うにはSchemeに転送する必要があります.私たちはinfoURL Schemesを登録する必要があります.そうしないと、支払い後のコールバックはできません.支払いの振り替え方法は以下の通りです.
            let order = AlipaySDK()                                 
            //s.requestArgument = []          
            sessionManager.executeRequest(withSession: s) { [weak self](S) in
                if S.isSucess {
                    let orderStr = (S.responseObject["RETURN_DATA"] as! Dictionary)["orderStr"] ?? ""
                    order.payOrder(orderStr, fromScheme: AliPayscheme, callback: { (result) in                        
                    })
                }
            }

支払いが完了した後、AppDelegateで支払い結果のコールバックを行う必要があり、ここに拡張クラスを追加し、対応する位置で応答の処理を行う.
class AliSdkManager: NSObject {
    public static var aliSdkManager:AliSdkManager!
    
    public static func sharedManager () -> AliSdkManager{
        AliSdkManager.aliSdkManager = AliSdkManager.init()
        return AliSdkManager.aliSdkManager
    }
    internal func showResult(result:NSDictionary){
        //        9000        
        //        8000       
        //        4000        
        //        6001        
        //        6002        
        let returnCode:String = result["resultStatus"] as! String
        switch  returnCode{
        case "6001":
            break
        case "8000":
            break
        case "4000":
            break
        case "9000":
            break
        default:
            break
        }
    }
}

この拡張クラスを使用するには、AppDelegateに登録する必要があります.
_ = AliSdkManager.sharedManager()

そして支払いコールバックを行います
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        if url.host == "safepay" {
            AlipaySDK.defaultService().processOrder(withPaymentResult: url as URL!, standbyCallback: {
                    (resultDic) -> Void in
                    //        
                AliSdkManager.aliSdkManager.showResult(result: resultDic! as NSDictionary);
                })
            }
        //        return true;
        return WXApi.handleOpen(url, delegate: self)
    }

微信支払い
SDKのインポート
pod 'WechatOpenSDK'
infoURL Schemesを登録する必要があります.内容は微信オープンプラットフォームに登録されたAppIDに記入します.そうしないと、支払いに成功した後、プログラムに戻ってSDKの登録を完了することはできません.
WXApi.registerApp(wxAppKey, enableMTA: true) //wxAppKey            AppID

ウィーチャット決済の呼び出し方法
            let s = getMYSession(self)
            s.requestId = "" //         
            s.requestArgument = [] //      
            sessionManager.executeRequest(withSession: s) { [weak self](S) in
                if S.isSucess {
                    let request = PayReq.init()
                    request.prepayId = (S.responseObject["RETURN_DATA"] as! Dictionary)["prepay_id"]
                    request.partnerId = (S.responseObject["RETURN_DATA"] as! Dictionary)["partnerid"]
                    request.package = (S.responseObject["RETURN_DATA"] as! Dictionary)["package"]
                    request.nonceStr = (S.responseObject["RETURN_DATA"] as! Dictionary)["nonstr"]
                    let time = (S.responseObject["RETURN_DATA"] as! Dictionary)["timestamp"] //as! Int
//                    let timeInt = Int(time!)
                    let timestamp : UInt32 = UInt32.init(exactly: Double(Int(time!)!))!
                    request.timeStamp = timestamp
                    request.sign = (S.responseObject["RETURN_DATA"] as! Dictionary)["paysign"]
//                    WXBackShowMessage = "  "
                    WXApi.send(request)
                }
            }

支払コールバックを行う
    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        if url.host == "safepay" {
            AlipaySDK.defaultService().processOrder(withPaymentResult: url as URL!, standbyCallback: {
                    (resultDic) -> Void in
                    //        
                AliSdkManager.aliSdkManager.showResult(result: resultDic! as NSDictionary);
                })
            }
        //        return true;
        return WXApi.handleOpen(url, delegate: self)
    }
    func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
        return WXApi.handleOpen(url, delegate: self)
    }
    
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        return WXApi.handleOpen(url, delegate: self)
    }
    func onResp(_ resp: BaseResp!) {
        if resp .isKind(of: PayResp.self) {
            switch resp.errCode {
            case 0:
                print("  ")
            default:
                print("  ")               
                break
            }
        }
    }

微信授権https://www.jianshu.com/p/098088242f45