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/course/BuyCourseActivity.kt | 150 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 145 insertions(+), 5 deletions(-)
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 c60b042..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
@@ -1,26 +1,39 @@
package com.sinata.xqmuse.ui.course
+import android.view.View
import androidx.core.os.bundleOf
+import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SpanBuilder
import cn.sinata.xldutils.utils.isValidPhone
import cn.sinata.xldutils.utils.showAllowingStateLoss
import cn.sinata.xldutils.visible
+import com.share.utils.ShareUtils
import com.sinata.xqmuse.R
import com.sinata.xqmuse.dialog.BuyRuleDialog
+import com.sinata.xqmuse.dialog.ShareDialog
+import com.sinata.xqmuse.dialog.TipDialog
+import com.sinata.xqmuse.network.Apis
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.entity.ConfirmOrder
import com.sinata.xqmuse.network.request
import com.sinata.xqmuse.ui.TransparentStatusBarActivity
import com.sinata.xqmuse.utils.extention.clickDelay
import com.sinata.xqmuse.utils.interfaces.StringCallback
+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
-class BuyCourseActivity:TransparentStatusBarActivity() {
+class BuyCourseActivity:TransparentStatusBarActivity(),PayListener {
override fun setContentView() = R.layout.activity_buy_course
private val isSend by lazy { intent.getBooleanExtra("isSend",false) }
+ 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 {
@@ -28,12 +41,41 @@
if (!phone.isValidPhone()){
toast("手机号输入有误")
}else{
- HttpManager.getUserByPhone(phone).request(this){_,data->
+ HttpManager.getUserByPhone(phone).request(this,false,{_,data->
+ cl_empty.gone()
+ receiveId = data?.id
iv_avatar.setImageURI(data?.avatar)
tv_name.text = data?.nickname
tv_phone.text = data?.cellPhone
+ }){_,msg->
+ if (msg == "未查询到账户信息"){
+ receiveId = null
+ iv_avatar.setImageURI("")
+ tv_name.text = ""
+ tv_phone.text = ""
+ cl_empty.visible()
+ }else
+ toast(msg)
}
}
+ }
+
+ tv_invite.setOnClickListener {
+ val shareDialog = ShareDialog()
+ shareDialog.callback = object :StringCallback{
+ override fun onResult(rst: String) {
+ if (rst == "wx"){
+ ShareUtils.share(this@BuyCourseActivity,
+ SHARE_MEDIA.WEIXIN,tv_title.text.toString(),"赠送你一个课程,快来注册领取吧",
+ Apis.SHARE_REGISTER,null,"")
+ }else{
+ ShareUtils.share(this@BuyCourseActivity,
+ SHARE_MEDIA.WEIXIN_CIRCLE,tv_title.text.toString(),"赠送你一个课程,快来注册领取吧",
+ Apis.SHARE_REGISTER,null,"")
+ }
+ }
+ }
+ shareDialog.showAllowingStateLoss(supportFragmentManager,"share")
}
tv_buy_rule.clickDelay {
@@ -48,6 +90,50 @@
buyRuleDialog.showAllowingStateLoss(supportFragmentManager,"rule")
}
}
+
+ tv_action.setOnClickListener {
+ if (cb_rule.isChecked){
+ if (isSend&&receiveId.isNullOrEmpty()){
+ toast("赠送好友不能为空")
+ return@setOnClickListener
+ }
+ if (rb_balance.isChecked&&((data?.balance?:"0.0").toDouble()>=(data?.generalPrice?:"0.0").toDouble())){//余额勾选,并且可用余额大于课程价格,直接扣余额
+ payBalance()
+ }else if (rb_ali.isChecked){
+ pay(2)
+ }else if (rb_wx.isChecked){
+ pay(1)
+ }else{
+ toast("请选择支付方式")
+ }
+ }else
+ toast("请阅读并同意《购买协议》")
+ }
+ }
+
+ 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,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
+ }
+ }
+
+ private fun payBalance() {
+ tv_action.isEnabled = false
+ showDialog()
+ HttpManager.gvieCourse(data?.id?:"",2,receiveId).request(this,success = {_,_->
+ onPaySuccess()
+ }){_,_->
+ tv_action.isEnabled = true
+ }
}
override fun initView() {
@@ -55,17 +141,71 @@
cl_send.visible()
}
data?.apply {
+ if (!orderId.isNullOrEmpty()){
+ titleBar.addRightButton("取消订单",onClickListener = View.OnClickListener {
+ TipDialog.show(supportFragmentManager,"是否确认取消该订单?",object :TipDialog.OnClickCallback{
+ override fun onOk() {
+ HttpManager.cancel(orderId).request(this@BuyCourseActivity){_,_->
+ toast("取消成功")
+ setResult(RESULT_OK)
+ finish()
+ }
+ }
+
+ override fun onCancel() {
+ }
+ })
+ })
+ }
+ if (generalPrice.isNullOrEmpty()){
+ generalPrice = if (amount.isNullOrEmpty()) "0.0" else amount
+ }
iv_cover.setImageURI(coverUrl)
- tv_title.text = courseTitle
+ tv_title.text = courseTitle?:title
tv_teacher.text = "导师 $tutor"
- tv_price.text = SpanBuilder("¥$generalPrice").size(0,1,11).build()
- tv_money.text = SpanBuilder("¥$generalPrice").size(0,1,11).build()
+ tv_price.text = SpanBuilder("¥${generalPrice}").size(0,1,11).build()
+ tv_money.text = SpanBuilder("¥${generalPrice}").size(0,1,11).build()
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)
+ finish()
+ }
+
+ override fun onPayCancel() {
+ }
+
+ override fun onPayError(msg: String) {
+ }
}
--
Gitblit v1.7.1