package com.fastwechat import android.app.Activity import android.content.Intent import android.util.Log import com.tencent.mm.opensdk.constants.ConstantsAPI import com.tencent.mm.opensdk.modelbase.BaseReq import com.tencent.mm.opensdk.modelbase.BaseResp import com.tencent.mm.opensdk.modelpay.PayReq import com.tencent.mm.opensdk.openapi.IWXAPI import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler import com.tencent.mm.opensdk.openapi.WXAPIFactory open class WechatCenter private constructor() { companion object { val TAG: String = "*** WechatCenter ****" private var instance: WechatCenter? = null get() { if (field == null) { field = WechatCenter() } return field } @Synchronized fun shared(): WechatCenter { return instance!! } var api: IWXAPI? = null open class PayParams( val appId: String, val partnerId: String, val prepayId: String, val nonceStr: String, val timestamp: String, val sign: String ) { val packageValue: String = "Sign=WXPay" } } private var appId: String? = null private var isAppIDRegistered: Boolean = false private fun checkIsInitial() { if (api == null) { throw Exception("AppID Uninitialized") } } /** * 注册微信APP_ID */ fun register(activity: Activity, appId: String) { this.appId = appId api = WXAPIFactory.createWXAPI(activity, null, false) api!!.registerApp(appId) isAppIDRegistered = true } fun isInstalled():Boolean { this.checkIsInitial() return api!!.isWXAppInstalled } fun pay(params: PayParams) { this.checkIsInitial() Thread(object : Runnable { override fun run() { val request = PayReq(); request.appId = params.appId; request.partnerId = params.partnerId; request.prepayId = params.prepayId; request.packageValue = params.packageValue; request.nonceStr = params.nonceStr; request.timeStamp = params.timestamp; request.sign = params.sign; api!!.sendReq(request); } }).start() } fun handleIntent(intent: Intent, handler: IWXAPIEventHandler) { this.checkIsInitial() api!!.handleIntent(intent, handler); } fun handleWxReq(baseReq: BaseReq) { //ignore } fun handleWxResp(baseResp: BaseResp,activity: Activity) { if (baseResp.type == ConstantsAPI.COMMAND_PAY_BY_WX) { FastWechatModule.send(mapOf("code" to baseResp.errCode)) } activity.finish() } }