From b8d8f9b855fdd453d06d78d2565f091db208ec8e Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期二, 26 十一月 2024 19:30:59 +0800 Subject: [PATCH] 支付 --- app/src/main/java/com/sinata/xqmuse/ui/home/BuyVoiceActivity.kt | 38 +++++++ app/src/main/java/com/sinata/xqmuse/ui/mine/BindCardActivity.kt | 2 app/src/main/java/com/sinata/xqmuse/network/entity/ThirdPayInfo.kt | 27 +++++ app/src/main/res/layout/activity_recharge.xml | 2 app/src/main/java/com/sinata/xqmuse/network/HttpManager.kt | 26 ++--- app/src/main/java/com/sinata/xqmuse/ui/mine/RechargeActivity.kt | 44 +++++++- app/src/main/java/com/sinata/xqmuse/ui/tree/TreeFragment.kt | 2 app/src/main/java/com/sinata/xqmuse/network/Apis.kt | 3 app/src/main/java/com/sinata/xqmuse/ui/mine/VipActivity.kt | 42 ++++++-- app/src/main/res/mipmap-xxhdpi/bg_guide.jpg | 0 app/src/main/java/com/sinata/xqmuse/ui/course/OfflineCourseActivity.kt | 17 ++- app/src/main/java/com/sinata/xqmuse/ui/discovery/PlaceDetailActivity.kt | 2 /dev/null | 0 app/src/main/java/com/sinata/xqmuse/network/entity/BankInfo.kt | 1 app/src/main/java/com/sinata/xqmuse/network/entity/TreeInfo.kt | 20 ++-- app/src/main/res/layout/activity_buy_course.xml | 1 app/src/main/res/layout/activity_offline_course.xml | 5 app/src/main/java/com/sinata/xqmuse/ui/mine/WalletActivity.kt | 5 + app/src/main/java/com/sinata/xqmuse/MainActivity.kt | 3 app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt | 37 +++++++ app/src/main/java/com/sinata/xqmuse/utils/extention/WeparkEx.kt | 2 app/src/main/java/com/sinata/xqmuse/utils/glide/GlideUtil.java | 2 app/src/main/java/com/sinata/xqmuse/network/ApiService.kt | 18 +-- 23 files changed, 224 insertions(+), 75 deletions(-) diff --git a/app/src/main/java/com/sinata/xqmuse/MainActivity.kt b/app/src/main/java/com/sinata/xqmuse/MainActivity.kt index 7cf6d92..f9365a9 100644 --- a/app/src/main/java/com/sinata/xqmuse/MainActivity.kt +++ b/app/src/main/java/com/sinata/xqmuse/MainActivity.kt @@ -361,7 +361,8 @@ tab_bar.currentTab = 3 onTabSelect(3) }else if(e.code == Const.EventCode.APP_FOREGROUND){ - bgPlayer?.resume() + if (voice==null) + bgPlayer?.resume() }else if(e.code == Const.EventCode.APP_BACKGROUND){ bgPlayer?.pause() }else if(e.code == Const.EventCode.CHANGE_BGM){ diff --git a/app/src/main/java/com/sinata/xqmuse/network/ApiService.kt b/app/src/main/java/com/sinata/xqmuse/network/ApiService.kt index 4e3001c..d3edf10 100644 --- a/app/src/main/java/com/sinata/xqmuse/network/ApiService.kt +++ b/app/src/main/java/com/sinata/xqmuse/network/ApiService.kt @@ -58,14 +58,6 @@ ): Flowable<ResultData<Coupon>> @FormUrlEncoded - @POST(Apis.pay) - fun pay( - @Field("id") id: String, - @Field("payType") payType : Int, - @Field("buyType") buyType: Int - ): Flowable<ResultData<PayInfo>> - - @FormUrlEncoded @POST(Apis.myFind) fun myFind( @Field("pageNum") pageNum: Int, @@ -435,6 +427,11 @@ @Query("minuteLook") minuteLook: Int = 0 //用不到分 ): Flowable<ResultData<Any>> + @POST(Apis.queryPayment) + fun queryPayment( + @Query("orderId") orderId: String + ): Flowable<ResultData<String>> + @POST(Apis.isFirst) fun isFirst(): Flowable<ResultData<Boolean>> @@ -463,8 +460,9 @@ @Query("amount") amount: Double?, @Query("receiverId") receiverId: String?, @Query("targetId") targetId: String?, - @Query("vipType") vipType: Int? - ): Flowable<ResultData<PayInfo>> + @Query("vipType") vipType: Int?, + @Query("orderId") orderId: String? + ): Flowable<ResultData<ThirdPayInfo>> @POST(Apis.updateUserAvatar) fun updateUserAvatar( diff --git a/app/src/main/java/com/sinata/xqmuse/network/Apis.kt b/app/src/main/java/com/sinata/xqmuse/network/Apis.kt index 0175c49..f1e6e1d 100644 --- a/app/src/main/java/com/sinata/xqmuse/network/Apis.kt +++ b/app/src/main/java/com/sinata/xqmuse/network/Apis.kt @@ -59,7 +59,6 @@ const val successOrderVoice = "meditation/client/meditation/meditation/successOrder" const val saveViewingHistory = "user/user/app-user-viewing-history/saveViewingHistory" - /** * 我的 */ @@ -110,7 +109,6 @@ const val getCoursePageList = "course/client/course/tutor-special-column/getCoursePageList" const val getPayCourseInfoById = "course/client/course/course/getPayCourseInfoById" const val collectCourse = "course/client/course/course/collectCourse" - const val pay = "base/sports/pay" const val success = "base/sports/success" const val queryPhysical = "account/api/startCource/queryPhysical" const val exit = "base/sports/exit" @@ -123,6 +121,7 @@ const val successOrder = "course/client/course/course/successOrder" const val studyPageByChapterId = "course/client/course/course/studyPageByChapterId" const val saveCourseStudyHistory = "user/user/app-user-viewing-history/saveCourseStudyHistory" + const val queryPayment = "order/client/order/order/queryPayment" /** diff --git a/app/src/main/java/com/sinata/xqmuse/network/HttpManager.kt b/app/src/main/java/com/sinata/xqmuse/network/HttpManager.kt index c2a442c..4f9bb82 100644 --- a/app/src/main/java/com/sinata/xqmuse/network/HttpManager.kt +++ b/app/src/main/java/com/sinata/xqmuse/network/HttpManager.kt @@ -28,17 +28,6 @@ } /** - * 支付 - */ - fun pay( - id: String, - payType: Int, - buyType: Int - ): Flowable<ResultData<PayInfo>> { - return request().pay(id,payType, buyType) - } - - /** * 支付结果 */ fun success( @@ -183,8 +172,8 @@ return request().bankList() } - fun addBank(bank: String,name: String,phone: String,idCard:String,num: String): Flowable<ResultData<Any>> { - return request().addBank(Gson().toJson(BankInfo(bank,num,name,phone,idCard))) + fun addBank(bank: String,name: String,phone: String,idCard:String,num: String,code: String): Flowable<ResultData<Any>> { + return request().addBank(Gson().toJson(BankInfo(bank,num,name,phone,idCard,code))) } fun deleteBank(id: String): Flowable<ResultData<Any>> { @@ -504,6 +493,13 @@ return request().saveCourseStudyHistory(id,isOver,secondLook) } + /** + * 查询支付状态 + */ + fun queryPayment(id: String): Flowable<ResultData<String>> { + return request().queryPayment(id) + } + fun isFirst(): Flowable<ResultData<Boolean>> { return request().isFirst() } @@ -593,8 +589,8 @@ /** * 支付 */ - fun placeOrder(orderFrom:Int,payType:Int,balanceFlag:Int,amount:Double?,receiverId:String?,targetId:String?,vipType:Int?): Flowable<ResultData<PayInfo>> { - return request().placeOrder(orderFrom, payType, balanceFlag, amount, receiverId, targetId, vipType) + fun placeOrder(orderFrom:Int,payType:Int,balanceFlag:Int,amount:Double?,receiverId:String?,targetId:String?,vipType:Int?,orderId:String? = null): Flowable<ResultData<ThirdPayInfo>> { + return request().placeOrder(orderFrom, payType, balanceFlag, amount, receiverId, targetId, vipType,orderId) } /** diff --git a/app/src/main/java/com/sinata/xqmuse/network/entity/BankInfo.kt b/app/src/main/java/com/sinata/xqmuse/network/entity/BankInfo.kt index 68978ea..1ce812f 100644 --- a/app/src/main/java/com/sinata/xqmuse/network/entity/BankInfo.kt +++ b/app/src/main/java/com/sinata/xqmuse/network/entity/BankInfo.kt @@ -6,5 +6,6 @@ val cardholder: String, val cellPhone: String, val identityCard: String, + val code: String, val id: String?=null ) \ No newline at end of file diff --git a/app/src/main/java/com/sinata/xqmuse/network/entity/ThirdPayInfo.kt b/app/src/main/java/com/sinata/xqmuse/network/entity/ThirdPayInfo.kt new file mode 100644 index 0000000..aa73994 --- /dev/null +++ b/app/src/main/java/com/sinata/xqmuse/network/entity/ThirdPayInfo.kt @@ -0,0 +1,27 @@ +package com.sinata.xqmuse.network.entity + +import android.content.Context +import com.sinata.xqmuse.utils.Const +import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram +import com.tencent.mm.opensdk.openapi.WXAPIFactory + +data class ThirdPayInfo( + val id: String, + val orderId: String, + val path: String, + val payAmt: String, + val payInfo: String, + val appId: String, + val orgId: String, + val qrcodeUrl: String, + val zeroFlag: Int +){ + fun jumpToWx(context: Context){ + val api = WXAPIFactory.createWXAPI(context, Const.WX_APP_ID) + val req = WXLaunchMiniProgram.Req() + req.userName = orgId // 填小程序原始id + req.path = path + req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE// 可选打开 开发版,体验版和正式版 + api.sendReq(req) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/sinata/xqmuse/network/entity/TreeInfo.kt b/app/src/main/java/com/sinata/xqmuse/network/entity/TreeInfo.kt index c2b95a3..cf150bc 100644 --- a/app/src/main/java/com/sinata/xqmuse/network/entity/TreeInfo.kt +++ b/app/src/main/java/com/sinata/xqmuse/network/entity/TreeInfo.kt @@ -57,15 +57,15 @@ } fun getLevelName() = when(treeLevelType){ //1=种子 2=发芽 3=幼苗 4=小树苗 5=中等树苗 6=小树 7=中树 8=大树 9=成熟的大树 10=参天大树 - 2-> "发芽" - 3-> "幼苗" - 4-> "小树苗" - 5-> "中等树苗" - 6-> "小树" - 7-> "中树" - 8-> "大树" - 9-> "成熟的大树" - 10->"参天大树" - else->"种子" + 2-> "恭喜您,种子发芽了,爱的旅程已经开始,为你加油!" + 3-> "幼苗拔地而起,智慧悄然萌发,前方的道路,更加的明亮,继续努力吧!" + 4-> "树苗在成长,内心变得更加的柔软包容。未来正在向你招手。" + 5-> "小树扎下了深深的根,离爱的梦想越来越近,继续坚持吧。" + 6-> "大树已枝繁叶茂,自由的伸展,你的努力成就了这份美好,未来将更加的璀璨。" + 7-> "智慧之花即将绽放,满载着希望与能量,前路无限的可能!" + 8-> "恭喜你,智慧的花朵已经绽放,让我们走在充满芬芳的道路上吧!" + 9-> "智慧之花开满枝头,满满的活力和美好,向你涌来了" + 10->"真爱的果实已挂满枝头,丰盛而充实,人生如此美好,感谢您的浇灌!" + else->"亲爱的家人,生命之树的种子已植入这片沃土,请以农夫的心态用心浇灌,为你加油哦。" } } \ No newline at end of file diff --git a/app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt b/app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt index 970f3d5..71300ed 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt @@ -22,6 +22,7 @@ import com.sinata.xqmuse.utils.pay.PayListener import com.umeng.socialize.bean.SHARE_MEDIA import kotlinx.android.synthetic.main.activity_buy_course.* +import org.jetbrains.anko.browse import org.jetbrains.anko.startActivity import org.jetbrains.anko.toast @@ -32,6 +33,7 @@ private val fromDetail by lazy { intent.getBooleanExtra("fromDetail",true) } private val data by lazy { intent.getParcelableExtra<ConfirmOrder>("data") } private var receiveId:String? = null + private var orderId = "" override fun initClick() { tv_search.setOnClickListener { @@ -112,8 +114,13 @@ private fun pay(way:Int) { tv_action.isEnabled = false showDialog() - HttpManager.placeOrder(2,way,if (rb_balance.isChecked) 1 else 2,null,receiveId,data?.id?:"",null).request(this,success = {_,data-> - onPaySuccess() + HttpManager.placeOrder(2,way,if (rb_balance.isChecked) 1 else 2,null,receiveId,data?.id?:"",null,data?.orderId).request(this,success = {_,data-> + tv_action.isEnabled = true + orderId = data?.orderId?:"" + if (way == 1) + data?.jumpToWx(this) + else + browse(data?.qrcodeUrl?:"") }){_,_-> tv_action.isEnabled = true } @@ -161,9 +168,35 @@ tv_total.text = generalPrice val s = "余额抵扣 当前可用 ¥$balance" rb_balance.text = SpanBuilder(s).size(4,s.length,11).color(this@BuyCourseActivity,4,s.length,R.color.textColor99).build() + rb_balance.isChecked = !(balance.isNullOrEmpty()||balance.toDouble() == 0.0) } } + private fun checkPayStatus(){ + if (!orderId.isNullOrEmpty()){ + HttpManager.queryPayment(orderId).request(this){_,data-> + when(data){ + "pending"->{ + toast("未查询到支付结果,如已付款请忽略") + } + "succeeded"->{ + toast("支付成功") + onPaySuccess() + } + "failed"->{ + toast("支付失败") + } + } + } + orderId = "" + } + } + + override fun onResume() { + super.onResume() + checkPayStatus() + } + override fun onPaySuccess() { setResult(RESULT_OK) startActivity<PaySuccessActivity>("data" to data,"fromDetail" to fromDetail) diff --git a/app/src/main/java/com/sinata/xqmuse/ui/course/OfflineCourseActivity.kt b/app/src/main/java/com/sinata/xqmuse/ui/course/OfflineCourseActivity.kt index 0181b87..35d28d9 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/course/OfflineCourseActivity.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/course/OfflineCourseActivity.kt @@ -1,5 +1,6 @@ package com.sinata.xqmuse.ui.course +import android.view.View import android.webkit.WebChromeClient import android.webkit.WebSettings import android.webkit.WebViewClient @@ -31,6 +32,7 @@ override fun setContentView() = R.layout.activity_offline_course private val data by lazy { intent.getParcelableExtra<CourseDetail>("data") } + private var first = true //第一次 加载视频封面 override fun initClick() { iv_back.setOnClickListener { finish() } @@ -90,7 +92,8 @@ controller.addDefaultControlComponent(courseTitle, false) mVideoView.setVideoController(controller) //设置控制器 mVideoView.setUrl(detailUrl) //设置视频地址 - GlideUtil.load(this@OfflineCourseActivity, coverUrl, iv_cover, 0) +// GlideUtil.load(this@OfflineCourseActivity, detailUrl, iv_cover, 0) + mVideoView.start() }else{ cl_title.gone() iv_cover.gone() @@ -122,12 +125,16 @@ override fun onPlayStateChanged(playState: Int) { when(playState){ STATE_PLAYING->{ - iv_cover.gone() - ivPlay.gone() + if (first){ + mVideoView.pause() +// iv_cover.gone() + ivPlay.visible() + first = false + } } STATE_PLAYBACK_COMPLETED->{ - iv_cover.visible() - ivPlay.visible() +// iv_cover.visible() +// ivPlay.visible() } } } diff --git a/app/src/main/java/com/sinata/xqmuse/ui/discovery/PlaceDetailActivity.kt b/app/src/main/java/com/sinata/xqmuse/ui/discovery/PlaceDetailActivity.kt index 6d89f72..841da7c 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/discovery/PlaceDetailActivity.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/discovery/PlaceDetailActivity.kt @@ -100,7 +100,7 @@ banner.currentItem = 1 tv_name.text = hallName tv_phone.text = contactNumber - tv_address.text = address + tv_address.text = addressDetail tv_time.text = "营业时间:$businessHours" val sHead = "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>" diff --git a/app/src/main/java/com/sinata/xqmuse/ui/home/BuyVoiceActivity.kt b/app/src/main/java/com/sinata/xqmuse/ui/home/BuyVoiceActivity.kt index 8fa6ec7..199d538 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/home/BuyVoiceActivity.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/home/BuyVoiceActivity.kt @@ -16,6 +16,7 @@ import com.sinata.xqmuse.utils.interfaces.StringCallback import com.sinata.xqmuse.utils.pay.PayListener import kotlinx.android.synthetic.main.activity_buy_course.* +import org.jetbrains.anko.browse import org.jetbrains.anko.startActivity import org.jetbrains.anko.toast @@ -25,6 +26,7 @@ private val fromDetail by lazy { intent.getBooleanExtra("fromDetail",true) } private val id by lazy { intent.getStringExtra("id") } private var data:ConfirmOrder? = null + private var orderId = "" override fun initClick() { tv_buy_rule.clickDelay { @@ -62,8 +64,13 @@ private fun pay(way:Int) { tv_action.isEnabled = false showDialog() - HttpManager.placeOrder(1,way,if (rb_balance.isChecked) 1 else 2,null,null,data?.id?:"",null).request(this,success = {_,data-> - onPaySuccess() + HttpManager.placeOrder(1,way,if (rb_balance.isChecked) 1 else 2,null,null,data?.id?:"",null,data?.orderId).request(this,success = {_,data-> + tv_action.isEnabled = true + orderId = data?.orderId?:"" + if (way == 1) + data?.jumpToWx(this) + else + browse(data?.qrcodeUrl?:"") }){_,_-> tv_action.isEnabled = true } @@ -110,6 +117,7 @@ tv_total.text = generalPrice val s = "余额抵扣 当前可用 ¥$balance" rb_balance.text = SpanBuilder(s).size(4,s.length,11).color(this@BuyVoiceActivity,4,s.length,R.color.textColor99).build() + rb_balance.isChecked = !(balance.isNullOrEmpty()||balance.toDouble() == 0.0) } } } @@ -126,10 +134,36 @@ tv_total.text = generalPrice val s = "余额抵扣 当前可用 ¥$balance" rb_balance.text = SpanBuilder(s).size(4,s.length,11).color(this@BuyVoiceActivity,4,s.length,R.color.textColor99).build() + rb_balance.isChecked = !(balance.isNullOrEmpty()||balance.toDouble() == 0.0) } } } + private fun checkPayStatus(){ + if (!orderId.isNullOrEmpty()){ + HttpManager.queryPayment(orderId).request(this){_,data-> + when(data){ + "pending"->{ + toast("未查询到支付结果,如已付款请忽略") + } + "succeeded"->{ + toast("支付成功") + onPaySuccess() + } + "failed"->{ + toast("支付失败") + } + } + } + orderId = "" + } + } + + override fun onResume() { + super.onResume() + checkPayStatus() + } + override fun onPaySuccess() { setResult(RESULT_OK) startActivity<PaySuccessActivity>("data" to data,"fromDetail" to fromDetail,"isAudio" to true) diff --git a/app/src/main/java/com/sinata/xqmuse/ui/mine/BindCardActivity.kt b/app/src/main/java/com/sinata/xqmuse/ui/mine/BindCardActivity.kt index a2f3332..829389c 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/mine/BindCardActivity.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/mine/BindCardActivity.kt @@ -62,7 +62,7 @@ return@setOnClickListener } tv_action.isEnabled = false - HttpManager.addBank(bank, name, phone, idCard, num).request(this,success = {_,_-> + HttpManager.addBank(bank, name, phone, idCard, num,code).request(this,success = {_,_-> setResult(RESULT_OK) myToast("添加成功") finish() diff --git a/app/src/main/java/com/sinata/xqmuse/ui/mine/RechargeActivity.kt b/app/src/main/java/com/sinata/xqmuse/ui/mine/RechargeActivity.kt index a608652..074deff 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/mine/RechargeActivity.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/mine/RechargeActivity.kt @@ -18,6 +18,7 @@ import com.sinata.xqmuse.utils.pay.PayUtil import kotlinx.android.synthetic.main.activity_recharge.* import org.greenrobot.eventbus.EventBus +import org.jetbrains.anko.browse import org.jetbrains.anko.sdk27.coroutines.onClick import org.jetbrains.anko.startActivity import org.jetbrains.anko.toast @@ -26,8 +27,9 @@ class RechargeActivity : TransparentStatusBarActivity(),PayListener { override fun setContentView() = R.layout.activity_recharge - private var way = 1 + private var way = 2 private var money = 0.0 + private var orderId = "" override fun initClick() { tv_way.setOnClickListener { @@ -79,15 +81,34 @@ toast("%s充值%.2f".format(if (payType == 1) "微信" else "支付宝",money)) HttpManager.placeOrder(4,payType,2,money,null,null,null ) .request(this){_,data-> - if (payType == 1){ - PayUtil.initWeChatPay(this,Const.WX_APP_ID) - PayUtil.weChatPay(data!!) - }else{ - PayUtil.aliPay(this,data?.orderInfo?:"") - } - onPaySuccess() //todo test - + orderId = data?.orderId?:"" + if (payType == 1) + data?.jumpToWx(this) + else + browse(data?.qrcodeUrl?:"") } + } + + private fun checkPayStatus(){ + if (!orderId.isNullOrEmpty()){ + if (!orderId.isNullOrEmpty()){ + HttpManager.queryPayment(orderId).request(this){_,data-> + when(data){ + "pending"->{ + toast("未查询到支付结果,如已付款请忽略") + } + "succeeded"->{ + toast("支付成功") + onPaySuccess() + } + "failed"->{ + toast("支付失败") + } + } + } + orderId = "" + } + } } override fun onPaySuccess() { @@ -103,6 +124,11 @@ override fun onPayError(msg: String) { } + override fun onResume() { + super.onResume() + checkPayStatus() + } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == RESULT_OK){ diff --git a/app/src/main/java/com/sinata/xqmuse/ui/mine/VipActivity.kt b/app/src/main/java/com/sinata/xqmuse/ui/mine/VipActivity.kt index 3b6f8a9..b4f7307 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/mine/VipActivity.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/mine/VipActivity.kt @@ -22,6 +22,7 @@ import kotlinx.android.synthetic.main.activity_vip.* import org.greenrobot.eventbus.EventBus import org.jetbrains.anko.backgroundResource +import org.jetbrains.anko.browse import org.jetbrains.anko.toast class VipActivity : TransparentStatusBarActivity(), PayListener { @@ -29,6 +30,7 @@ private val price = arrayListOf<Double>() private val adapter = VipPriceAdapter(price) + private var orderId = "" override fun initClick() { iv_back.setOnClickListener { finish() } @@ -55,16 +57,11 @@ override fun onResult(rst: String) { HttpManager.placeOrder(3,rst.toInt(),2,price[adapter.checked],null,null,adapter.checked+1 ) .request(this@VipActivity){_,data-> - if (rst == "1"){ - PayUtil.initWeChatPay(this@VipActivity,Const.WX_APP_ID) - PayUtil.weChatPay(data!!) - }else{ - PayUtil.aliPay(this@VipActivity,data?.orderInfo?:"") - tv_action.postDelayed({ //TEST CALLBACK - onPaySuccess() - },3000) - - } + orderId = data?.orderId?:"" + if (rst == "1") + data?.jumpToWx(this@VipActivity) + else + browse(data?.qrcodeUrl?:"") } } },enableBalance = false) @@ -137,6 +134,26 @@ } } + private fun checkPayStatus(){ + if (!orderId.isNullOrEmpty()){ + HttpManager.queryPayment(orderId).request(this){_,data-> + when(data){ + "pending"->{ + toast("未查询到支付结果,如已付款请忽略") + } + "succeeded"->{ + toast("支付成功") + onPaySuccess() + } + "failed"->{ + toast("支付失败") + } + } + } + orderId = "" + } + } + override fun onDestroy() { super.onDestroy() PayUtil.unregisterApp() @@ -153,4 +170,9 @@ override fun onPayError(msg: String) { } + + override fun onResume() { + super.onResume() + checkPayStatus() + } } diff --git a/app/src/main/java/com/sinata/xqmuse/ui/mine/WalletActivity.kt b/app/src/main/java/com/sinata/xqmuse/ui/mine/WalletActivity.kt index c20532f..7b9e93a 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/mine/WalletActivity.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/mine/WalletActivity.kt @@ -19,6 +19,7 @@ import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.jetbrains.anko.startActivity +import org.jetbrains.anko.toast class WalletActivity : BaseActivity() { private var balance = 0.0 @@ -35,10 +36,14 @@ iv_back.setOnClickListener { finish() } tv_action.setOnClickListener { + toast("暂未开放") + return@setOnClickListener startActivity<RechargeActivity>() } tv_withdraw.clickDelay { + toast("暂未开放") + return@clickDelay startActivity<WithdrawActivity>("balance" to balance) } diff --git a/app/src/main/java/com/sinata/xqmuse/ui/tree/TreeFragment.kt b/app/src/main/java/com/sinata/xqmuse/ui/tree/TreeFragment.kt index 6175656..1e234ac 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/tree/TreeFragment.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/tree/TreeFragment.kt @@ -107,7 +107,7 @@ tree!!.treeLevelType = data.treeLevelType showTreeAnim(tree!!.getTreeApng(),true) audioPlayer.startPlayMusic(requireContext(),tree!!.getLevelUpAudio()) - TreeTipDialog.show(childFragmentManager,"升级","恭喜!你的树苗已升级为${tree!!.getLevelName()}阶段!") + TreeTipDialog.show(childFragmentManager,"生命之树",tree!!.getLevelName()) }else if (tree!!.status != 2){ tree!!.status = 2 showTreeAnim(tree!!.getTreeApng(),tree!!.treeLevelType != 1) diff --git a/app/src/main/java/com/sinata/xqmuse/utils/extention/WeparkEx.kt b/app/src/main/java/com/sinata/xqmuse/utils/extention/WeparkEx.kt index bc3278b..1bb6087 100644 --- a/app/src/main/java/com/sinata/xqmuse/utils/extention/WeparkEx.kt +++ b/app/src/main/java/com/sinata/xqmuse/utils/extention/WeparkEx.kt @@ -30,7 +30,6 @@ import top.zibin.luban.Luban import top.zibin.luban.OnCompressListener import java.io.File -import java.lang.Exception fun String.uploadWithCompress(act:BaseActivity,callback: StringCallback){ @@ -129,3 +128,4 @@ } else true } + diff --git a/app/src/main/java/com/sinata/xqmuse/utils/glide/GlideUtil.java b/app/src/main/java/com/sinata/xqmuse/utils/glide/GlideUtil.java index 6617046..b46a880 100644 --- a/app/src/main/java/com/sinata/xqmuse/utils/glide/GlideUtil.java +++ b/app/src/main/java/com/sinata/xqmuse/utils/glide/GlideUtil.java @@ -72,7 +72,7 @@ if (url.endsWith("mp4") || url.endsWith("AVI") || url.endsWith("MP4") || url.endsWith("avi")) { new Thread(() -> { try { - Bitmap myBitmap = Glide.with(context).asBitmap().load(url).submit(100, 100).get(); + Bitmap myBitmap = Glide.with(context).asBitmap().load(url).submit(390, 310).get(); new Handler(Looper.getMainLooper()).post(() -> { loadBM(context,myBitmap,imageView,num); }); diff --git a/app/src/main/res/layout/activity_buy_course.xml b/app/src/main/res/layout/activity_buy_course.xml index 7d5db5c..3ae77f2 100644 --- a/app/src/main/res/layout/activity_buy_course.xml +++ b/app/src/main/res/layout/activity_buy_course.xml @@ -338,7 +338,6 @@ android:layout_marginTop="18dp" android:drawableStart="@mipmap/pay_wallet" android:drawableEnd="@drawable/selector_check_pay" - android:checked="true" android:drawablePadding="7dp"/> <RadioButton android:layout_width="match_parent" diff --git a/app/src/main/res/layout/activity_offline_course.xml b/app/src/main/res/layout/activity_offline_course.xml index 5127906..0a59aeb 100644 --- a/app/src/main/res/layout/activity_offline_course.xml +++ b/app/src/main/res/layout/activity_offline_course.xml @@ -16,6 +16,7 @@ android:layout_height="0dp" app:layout_constraintDimensionRatio="390:310" android:id="@+id/iv_cover" + android:visibility="gone" app:layout_constraintTop_toTopOf="parent"/> <ImageView android:layout_width="42dp" @@ -24,8 +25,8 @@ android:src="@mipmap/play_detail" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="@id/iv_cover" - app:layout_constraintBottom_toBottomOf="@id/iv_cover"/> + app:layout_constraintTop_toTopOf="@id/mVideoView" + app:layout_constraintBottom_toBottomOf="@id/mVideoView"/> <androidx.constraintlayout.widget.Barrier android:layout_width="wrap_content" android:layout_height="wrap_content" diff --git a/app/src/main/res/layout/activity_recharge.xml b/app/src/main/res/layout/activity_recharge.xml index 808c122..cb5f6b9 100644 --- a/app/src/main/res/layout/activity_recharge.xml +++ b/app/src/main/res/layout/activity_recharge.xml @@ -18,7 +18,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_way" - android:text="微信" + android:text="支付宝" android:layout_marginHorizontal="10dp" android:drawableEnd="@mipmap/more_black" android:paddingVertical="13dp" diff --git a/app/src/main/res/mipmap-xxhdpi/bg_guide.jpg b/app/src/main/res/mipmap-xxhdpi/bg_guide.jpg new file mode 100644 index 0000000..3528026 --- /dev/null +++ b/app/src/main/res/mipmap-xxhdpi/bg_guide.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxhdpi/bg_guide.png b/app/src/main/res/mipmap-xxhdpi/bg_guide.png deleted file mode 100644 index 0ba4277..0000000 --- a/app/src/main/res/mipmap-xxhdpi/bg_guide.png +++ /dev/null Binary files differ -- Gitblit v1.7.1