Commit 460cdf3b authored by 王雪伟's avatar 王雪伟

[提交人]:王雪伟

[提交简述] :修改充值弹窗
[实现方案] :
parent 5729eae5
...@@ -13,6 +13,12 @@ import androidx.multidex.MultiDex ...@@ -13,6 +13,12 @@ import androidx.multidex.MultiDex
import com.heytap.msp.push.HeytapPushManager import com.heytap.msp.push.HeytapPushManager
import com.huawei.hms.push.HmsMessaging import com.huawei.hms.push.HmsMessaging
import com.meizu.cloud.pushsdk.PushManager import com.meizu.cloud.pushsdk.PushManager
import com.paypal.checkout.PayPalCheckout
import com.paypal.checkout.config.CheckoutConfig
import com.paypal.checkout.config.Environment
import com.paypal.checkout.config.SettingsConfig
import com.paypal.checkout.createorder.CurrencyCode
import com.paypal.checkout.createorder.UserAction
import com.tencent.android.tpush.XGPushConfig import com.tencent.android.tpush.XGPushConfig
import com.tencent.bugly.crashreport.CrashReport import com.tencent.bugly.crashreport.CrashReport
import com.tencent.imsdk.v2.V2TIMCallback import com.tencent.imsdk.v2.V2TIMCallback
...@@ -105,8 +111,26 @@ class Appli : Application() { ...@@ -105,8 +111,26 @@ class Appli : Application() {
// } // }
// }) // })
registerActivityLifecycleCallbacks(StatisticActivityLifecycleCallback()) registerActivityLifecycleCallbacks(StatisticActivityLifecycleCallback())
}
initPayPal()
}
private fun initPayPal() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val config = CheckoutConfig(
application = this,
clientId = Constant.PAY_PAL_CLIENT_ID,
environment = Environment.SANDBOX,//正式上线后,改为Environment.LIVE
returnUrl = "com.zhangxin.starlight://paypalpay",//创建应用时填的RETURN_URL
currencyCode = CurrencyCode.USD,//货币种类:CNY-人民币;HKD-港币;TWD-新台币;USD-美元...
userAction = UserAction.PAY_NOW,
settingsConfig = SettingsConfig(
loggingEnabled = false,
shouldFailEligibility = false
)
)
PayPalCheckout.setConfig(config)
}
}
private fun getOaid() { private fun getOaid() {
MiitHelper(appIdsUpdater).getDeviceIds(AppContext.mAppContext) MiitHelper(appIdsUpdater).getDeviceIds(AppContext.mAppContext)
} }
......
...@@ -8,6 +8,8 @@ import android.Manifest; ...@@ -8,6 +8,8 @@ import android.Manifest;
public class Constant { public class Constant {
public static String PAY_PAL_CLIENT_ID ="AeCOQewq8tWcuy7V2YsL3S3IRMDZk6zSTtHP76x-yiHIgYN7PZ1xT4Iyzv-2zJm15OqR5sWjc6__9xhE";
//公共参数 //公共参数
String UMENG_APPKEY = "597dbf2abbea835685001b27"; String UMENG_APPKEY = "597dbf2abbea835685001b27";
......
...@@ -30,6 +30,7 @@ public class NetConfig { ...@@ -30,6 +30,7 @@ public class NetConfig {
public static String BASE_FEED_URL = ""; public static String BASE_FEED_URL = "";
public static final String URL_REPORT_BASE = "http://report.zhangxinhulian.com/"; public static final String URL_REPORT_BASE = "http://report.zhangxinhulian.com/";
public static final String HOME_BANNER_BASE_URL = "https://bs.zhangxinhulian.com/"; public static final String HOME_BANNER_BASE_URL = "https://bs.zhangxinhulian.com/";
public static final String URL_PAY_BASE = "http://paytest.zhangxinhulian.com/";
public static void setBase_Url(Environment s) { public static void setBase_Url(Environment s) {
sEnvironment = s; sEnvironment = s;
...@@ -155,6 +156,9 @@ public class NetConfig { ...@@ -155,6 +156,9 @@ public class NetConfig {
public static final String URL_AUTH_GOOGLE_LOGIN = "app/v1/auth/googleLogin";//绑定谷歌登录 public static final String URL_AUTH_GOOGLE_LOGIN = "app/v1/auth/googleLogin";//绑定谷歌登录
public static final String URL_AUTH_FACEBOOK_LOGIN = "app/v1/auth/facebookLogin";//绑定FaceBook登录 public static final String URL_AUTH_FACEBOOK_LOGIN = "app/v1/auth/facebookLogin";//绑定FaceBook登录
///unifiedpay/gateway/google/替换包名/notify/order
public static final String URL_GOOGLE_NOTIFY = URL_PAY_BASE + "unifiedpay/gateway/google/com.zhangxin.magicbox/notify/order";
} }
public static class Task { public static class Task {
......
...@@ -8,6 +8,7 @@ import com.zxhl.cms.net.model.other.IsWeChatLoginEntity ...@@ -8,6 +8,7 @@ import com.zxhl.cms.net.model.other.IsWeChatLoginEntity
import com.zxhl.cms.net.model.other.WxBindEntity import com.zxhl.cms.net.model.other.WxBindEntity
import com.zxhl.cms.net.model.uc.UserInfo import com.zxhl.cms.net.model.uc.UserInfo
import com.zxhl.cms.net.model.uc.VersionEntity import com.zxhl.cms.net.model.uc.VersionEntity
import com.zxhl.cms.pay.googlepay.GooglePayResult
import io.reactivex.Observable import io.reactivex.Observable
import okhttp3.MultipartBody import okhttp3.MultipartBody
import retrofit2.http.* import retrofit2.http.*
...@@ -305,4 +306,12 @@ interface IHomeApi { ...@@ -305,4 +306,12 @@ interface IHomeApi {
@POST(NetConfig.StarLight.HOME_STAR_CONSTELLATION_RESLUT) @POST(NetConfig.StarLight.HOME_STAR_CONSTELLATION_RESLUT)
fun getStarMachReslut(): Observable<Response<StarMachEntity>> fun getStarMachReslut(): Observable<Response<StarMachEntity>>
/**
* google支付成功后 通知后台
*/
@POST(NetConfig.User.URL_GOOGLE_NOTIFY)
fun googlePaySuccess(
@Body entity: GooglePayResult?
): Observable<Response<Any>>
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.zxhl.cms.net.api; ...@@ -2,6 +2,7 @@ package com.zxhl.cms.net.api;
import com.zxhl.cms.ad.upload.model.Response; import com.zxhl.cms.ad.upload.model.Response;
import com.zxhl.cms.common.NetConfig; import com.zxhl.cms.common.NetConfig;
import com.zxhl.cms.net.model.pay.GooglePayEntity;
import com.zxhl.cms.net.model.uc.AliPayEntity; import com.zxhl.cms.net.model.uc.AliPayEntity;
import com.zxhl.cms.net.model.uc.PayVerifyEntity; import com.zxhl.cms.net.model.uc.PayVerifyEntity;
import com.zxhl.cms.net.model.uc.UserInfo; import com.zxhl.cms.net.model.uc.UserInfo;
...@@ -64,6 +65,13 @@ public interface IUserInfoApi { ...@@ -64,6 +65,13 @@ public interface IUserInfoApi {
@POST(NetConfig.User.URL_PAY_ORDER) @POST(NetConfig.User.URL_PAY_ORDER)
Observable<Response<AliPayEntity>> aliPay(@Query("goodsId") String goodsId, @Query("payType") String payType, @Query("voucherId") String voucherId, @Query("appId") String appId); Observable<Response<AliPayEntity>> aliPay(@Query("goodsId") String goodsId, @Query("payType") String payType, @Query("voucherId") String voucherId, @Query("appId") String appId);
/**
* Google支付
*
* @return
*/
@POST(NetConfig.User.URL_PAY_ORDER)
Observable<Response<GooglePayEntity>> googlePay(@Query("goodsId") String goodsId, @Query("payType") String payType, @Query("voucherId") String voucherId, @Query("appId") String appId, @Query("payMode") String payMode);
/** /**
* 获取用户资料 * 获取用户资料
......
package com.zxhl.cms.net.model.pay;
/**
* @author (wangXuewei)
* @detail :
*/
public class GooglePayEntity {
/**
* payType : 4
* wakeup : {"orderNo":1503315110133714944}
* payPlatform : null
* outTradeNo : 1503315110133714944
*/
private int payType;
private WakeupBean wakeup;
private String outTradeNo;
public int getPayType() {
return payType;
}
public void setPayType(int payType) {
this.payType = payType;
}
public WakeupBean getWakeup() {
return wakeup;
}
public void setWakeup(WakeupBean wakeup) {
this.wakeup = wakeup;
}
public String getOutTradeNo() {
return outTradeNo;
}
public void setOutTradeNo(String outTradeNo) {
this.outTradeNo = outTradeNo;
}
public static class WakeupBean {
/**
* orderNo : 1503315110133714944
*/
private long orderNo;
public long getOrderNo() {
return orderNo;
}
public void setOrderNo(long orderNo) {
this.orderNo = orderNo;
}
}
}
package com.zxhl.cms.pay.adapter
import android.content.Context
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.zxhl.cms.R
import com.zxhl.cms.common.base.BaseRecyclerAdapter
import com.zxhl.cms.net.model.pay.VipPayEntity
import com.zxhl.cms.utils.OnRecycleItemClickListener
/**
* @author (wangXuewei)
* @datetime 2022-04-12 19:04 GMT+8
* @detail :
*/
class BecomeVipDialogPriceAdapter : BaseRecyclerAdapter<VipPayEntity, BecomeVipDialogPriceAdapter.ViewHolder> {
private var mContext: Context? = null
private var mPosition = 0
private val listener: OnRecycleItemClickListener<VipPayEntity>
constructor(
content: Context?,
listener: OnRecycleItemClickListener<VipPayEntity>
) : super() {
this.listener = listener
mContext = content
}
fun setSelectView(position: Int) {
mPosition = position;
notifyDataSetChanged()
}
override fun onCreateViewHolder(holder: ViewGroup, p1: Int): BecomeVipDialogPriceAdapter.ViewHolder {
return ViewHolder(
LayoutInflater.from(holder.context)
.inflate(R.layout.item_layout_become_dialog_vip_price_view, holder, false)
)
}
override fun onBindViewHolder(holder: BecomeVipDialogPriceAdapter.ViewHolder, position: Int) {
// val data = mList[position]
holder.id_vip_time.text = "1 Week +"
holder.id_coin_num.text = "780"
holder.id_money.text = "$${2.99}"
if (mPosition==position){
holder.id_item_view.background = mContext?.getDrawable(R.drawable.shape_8857ff_bd8aff_bg_r10)
holder.id_vip_time.setTextColor(Color.parseColor("#FFFFFF"))
holder.id_coin_num.setTextColor(Color.parseColor("#FFFFFF"))
holder.id_money.setTextColor(Color.parseColor("#FFFFFF"))
}else{
holder.id_item_view.background = mContext?.getDrawable(R.drawable.shape_f4edff_r10_bg)
holder.id_vip_time.setTextColor(Color.parseColor("#333333"))
holder.id_coin_num.setTextColor(Color.parseColor("#333333"))
holder.id_money.setTextColor(Color.parseColor("#333333"))
}
holder.id_item_view?.setOnClickListener {
listener.onItemClick(it,position,null)
}
}
override fun getItemCount(): Int {
return 3
}
inner class ViewHolder : RecyclerView.ViewHolder {
var id_vip_time: TextView
var id_money: TextView
var id_coin_num: TextView
var id_item_view: LinearLayout
constructor(itemView: View) : super(itemView) {
id_item_view = itemView.findViewById(R.id.id_ll_dialog_item_become_vip_view)
id_vip_time = itemView.findViewById(R.id.id_tv_dialog_item_vip_time)
id_coin_num = itemView.findViewById(R.id.id_tv_dialog_coin_num)
id_money = itemView.findViewById(R.id.id_tv_dialog_item_price)
}
}
}
\ No newline at end of file
package com.zxhl.cms.pay.googlepay
/**
* @author (wangXuewei)
* @datetime 2022-03-14 16:49 GMT+8
* @detail :
*/
interface GooglePayCallBack {
fun onPaySuccess(purchase: GooglePayResult, googleJson:String)
fun onCancel()
fun onError(error: String)
}
\ No newline at end of file
package com.zxhl.cms.pay.googlepay
class GooglePayResult {
var packageName: String = ""
var orderId: String = ""
var productId: String = ""
var developerPayload: String = ""
var obfuscatedAccountid: String = ""
var purchaseTime: String = ""
var purchaseState: String = ""
var purchaseToken: String = ""
}
\ No newline at end of file
This diff is collapsed.
package com.zxhl.cms.paypal
/**
* @author (wangXuewei)
* @datetime 2022-03-14 16:49 GMT+8
* @detail :
*/
interface PayPalPayCallBack {
fun onPaySuccess(result:String)
fun onCancel()
fun onError(error: String)
}
\ No newline at end of file
...@@ -17,7 +17,7 @@ class PaymentPagePresenter:PaymentPageContract.Presenter { ...@@ -17,7 +17,7 @@ class PaymentPagePresenter:PaymentPageContract.Presenter {
} }
override fun verifyThePayment(result: String?, payType: Int) { override fun verifyThePayment(result: String?, payType: Int) {
mView.orderVerificationSuccessful("")
} }
override fun appInfo() { override fun appInfo() {
......
...@@ -58,6 +58,6 @@ class CoinStoreActivity : BaseActivity(), CoinStoreContract.View, ...@@ -58,6 +58,6 @@ class CoinStoreActivity : BaseActivity(), CoinStoreContract.View,
} }
override fun onItemClick(view: View?, position: Int, data: RecordEntity?) { override fun onItemClick(view: View?, position: Int, data: RecordEntity?) {
JumpUtils.paymentPageJump(Constant.Key.PAY_TYPE_COIN,"1","name","0.0") JumpUtils.paymentPageJump(Constant.Key.PAY_TYPE_COIN,"1","name","0.1")
} }
} }
\ No newline at end of file
package com.zxhl.cms.pay.view package com.zxhl.cms.pay.view
import android.content.Intent import android.content.Intent
import android.os.Build
import android.util.Log
import android.view.View import android.view.View
import com.paypal.checkout.PayPalCheckout
import com.zxhl.cms.R import com.zxhl.cms.R
import com.zxhl.cms.common.base.BaseActivity import com.zxhl.cms.common.base.BaseActivity
import com.zxhl.cms.net.model.box.AppInEntity import com.zxhl.cms.net.model.box.AppInEntity
import com.zxhl.cms.pay.PayContract
import com.zxhl.cms.pay.contract.PaymentPageContract import com.zxhl.cms.pay.contract.PaymentPageContract
import com.zxhl.cms.pay.googlepay.GooglePayCallBack
import com.zxhl.cms.pay.googlepay.GooglePayHelper
import com.zxhl.cms.pay.googlepay.GooglePayResult
import com.zxhl.cms.pay.paypal.PayPalHelper
import com.zxhl.cms.pay.presenter.PaymentPagePresenter
import com.zxhl.cms.paypal.PayPalPayCallBack
import com.zxhl.cms.utils.EventUtils
import com.zxhl.cms.utils.Utils
import com.zxhl.cms.widget.CenterDialog import com.zxhl.cms.widget.CenterDialog
import com.zxhl.cms.widget.LoadingDialog
import kotlinx.android.synthetic.main.activity_layout_payment_page.* import kotlinx.android.synthetic.main.activity_layout_payment_page.*
import kotlinx.android.synthetic.main.activity_layout_payment_page.id_img_back import kotlinx.android.synthetic.main.activity_layout_payment_page.id_img_back
import kotlinx.android.synthetic.main.activity_member.* import kotlinx.android.synthetic.main.activity_member.*
...@@ -30,11 +43,21 @@ class PaymentPageActivity : BaseActivity(), PaymentPageContract.View { ...@@ -30,11 +43,21 @@ class PaymentPageActivity : BaseActivity(), PaymentPageContract.View {
private var payType: Int? = GOOGLE_PAY private var payType: Int? = GOOGLE_PAY
private var googlePay: GooglePayHelper? = null
private var payPalPay: PayPalHelper? = null
private var mLoading: LoadingDialog? = null
private var mPresenter: PaymentPageContract.Presenter? = null
private var goodsType: String = "";
private var goodsId: String = "";
private var goodsName: String = "";
private var goodsPrice: String = "";
override fun init() { override fun init() {
val goodsType = intent?.data?.getQueryParameter("pay_goods_type") ?: "" goodsType = intent?.data?.getQueryParameter("pay_goods_type") ?: ""
val goodsId = intent?.data?.getQueryParameter("pay_goods_id") ?: "" goodsId = intent?.data?.getQueryParameter("pay_goods_id") ?: ""
val goodsName = intent?.data?.getQueryParameter("pay_goods_name") ?: "" goodsName = intent?.data?.getQueryParameter("pay_goods_name") ?: ""
val goodsPrice = intent?.data?.getQueryParameter("pay_goods_price") ?: "" goodsPrice = intent?.data?.getQueryParameter("pay_goods_price") ?: ""
id_tv_goods_name.text = goodsName id_tv_goods_name.text = goodsName
id_tv_goods_price.text = "Price:$${goodsPrice}" id_tv_goods_price.text = "Price:$${goodsPrice}"
...@@ -44,6 +67,35 @@ class PaymentPageActivity : BaseActivity(), PaymentPageContract.View { ...@@ -44,6 +67,35 @@ class PaymentPageActivity : BaseActivity(), PaymentPageContract.View {
id_img_google_btn.setOnClickListener(this) id_img_google_btn.setOnClickListener(this)
id_rl_paypal_pay.setOnClickListener(this) id_rl_paypal_pay.setOnClickListener(this)
id_tv_pay_btn.setOnClickListener(this) id_tv_pay_btn.setOnClickListener(this)
mLoading = LoadingDialog.getLoadingDialog(
this,
getString(com.zxhl.cms.R.string.wait_ing),
false,
false
)
mPresenter = PaymentPagePresenter(this)
googlePay = GooglePayHelper(this)
googlePay?.init(object : GooglePayCallBack {
override fun onPaySuccess(purchase: GooglePayResult, googleJson: String) {
mPresenter?.verifyThePayment(googleJson, GOOGLE_PAY)
//mLoading?.setResult(true, "Pay for success", 1000)
EventUtils.onEvent("GooglePaySuccess_bd")
}
override fun onCancel() {
EventUtils.onEvent("GooglePayCancel_bd")
}
override fun onError(error: String) {
Log.d("wxw", "补单PayError:$error")
EventUtils.onEvent("GooglePayError_bd", error)
}
})
payPalPay = PayPalHelper(this)
} }
override fun onClick(v: View?) { override fun onClick(v: View?) {
...@@ -58,7 +110,20 @@ class PaymentPageActivity : BaseActivity(), PaymentPageContract.View { ...@@ -58,7 +110,20 @@ class PaymentPageActivity : BaseActivity(), PaymentPageContract.View {
selectPayType(PAY_PAL_PAY) selectPayType(PAY_PAL_PAY)
} }
id_tv_pay_btn -> { id_tv_pay_btn -> {
CenterDialog.showPaySuccessDialog(this) //CenterDialog.showPaySuccessDialog(this)
if (payType == 0) {
Utils.showToast(this, "Please select payment type")
return
}
EventUtils.onEvent("pay_page_pay_btn", goodsPrice)
Log.d("wxw","Payment${goodsId}${goodsPrice}")
if (payType == GOOGLE_PAY) {
googlePay(goodsId)
} else if (payType == PAY_PAL_PAY) {
payPalPay(goodsId, goodsPrice)
} else {
EventUtils.onEvent("pay_type_error", "pay_type$payType")
}
} }
} }
} }
...@@ -82,15 +147,94 @@ class PaymentPageActivity : BaseActivity(), PaymentPageContract.View { ...@@ -82,15 +147,94 @@ class PaymentPageActivity : BaseActivity(), PaymentPageContract.View {
} }
override fun orderVerificationSuccessful(status: String) { override fun orderVerificationSuccessful(status: String) {
EventUtils.onEvent("pay_suc")
mLoading?.setResult(true, "Pay for success", 1000)
} }
override fun orderVerificationFailed(errorMsg: String) { override fun orderVerificationFailed(errorMsg: String) {
EventUtils.onEvent("pay_fail")
mLoading?.setResult(false, "Pay for failure", 1000)
} }
override fun setAppInfo(result: AppInEntity?) { override fun setAppInfo(result: AppInEntity?) {
} }
private fun googlePay(goodsId: String) {
if (goodsId == "") {
EventUtils.onEvent("GooglePayGoodsIdNull")
return
}
mLoading?.setLoading(getString(R.string.wait_ing))
mLoading?.show()
EventUtils.onEvent("GooglePayStart", "开始支付")
googlePay?.googlePay(goodsId, "6", object : GooglePayCallBack {
override fun onPaySuccess(purchase: GooglePayResult, googleJson: String) {
mPresenter?.verifyThePayment(googleJson, GOOGLE_PAY)
EventUtils.onEvent("GooglePaySuccess")
EventUtils.onEvent("GooglePayEnd", "支付结束_成功")
}
override fun onCancel() {
runOnUiThread {
mLoading?.setResult(false, "pay cancel", 1000)
}
EventUtils.onEvent("GooglePayCancel")
EventUtils.onEvent("GooglePayEnd", "支付结束_取消")
}
override fun onError(error: String) {
Log.d("wxw", "PayError:$error")
runOnUiThread {
mLoading?.setResult(false, "pay error", 1000)
}
EventUtils.onEvent("GooglePayError", error)
EventUtils.onEvent("GooglePayEnd", "支付结束_异常 msg:${error}")
}
})
}
private fun payPalPay(goodsId: String, goodsPrice: String) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
showToast("Sorry your device does not currently support this payment method")
return
}
if (goodsId == "" || goodsPrice == "") {
EventUtils.onEvent("PayPalPayGoodsIdNull")
return
}
mLoading?.setLoading(getString(R.string.wait_ing))
mLoading?.show()
payPalPay?.payPalPay(goodsId, goodsPrice, "6", object : PayPalPayCallBack {
override fun onPaySuccess(result: String) {
EventUtils.onEvent("PayPalPaySuccess")
mPresenter?.verifyThePayment(result, PAY_PAL_PAY)
// runOnUiThread {
// mLoading?.setResult(false, "pay success", 1000)
// }
}
override fun onCancel() {
EventUtils.onEvent("PayPalPayCancel")
runOnUiThread {
mLoading?.setResult(false, "pay cancel", 1000)
}
}
override fun onError(error: String) {
Log.d("wxw", "PayError:$error")
EventUtils.onEvent("PayPalPayError", error)
runOnUiThread {
mLoading?.setResult(false, "pay error", 1000)
}
}
}, id_PayPal_btn)
}
} }
\ No newline at end of file
...@@ -11,6 +11,8 @@ import androidx.recyclerview.widget.RecyclerView ...@@ -11,6 +11,8 @@ import androidx.recyclerview.widget.RecyclerView
import com.zxhl.cms.R import com.zxhl.cms.R
import com.zxhl.cms.pay.adapter.BecomeVipBannerAdapter import com.zxhl.cms.pay.adapter.BecomeVipBannerAdapter
import com.zxhl.cms.pay.adapter.BecomeVipDialogBannerAdapter import com.zxhl.cms.pay.adapter.BecomeVipDialogBannerAdapter
import com.zxhl.cms.pay.adapter.BecomeVipDialogPriceAdapter
import com.zxhl.cms.utils.OnRecycleItemClickListener
import com.zxhl.cms.widget.CenterDialog import com.zxhl.cms.widget.CenterDialog
import com.zxhl.cms.widget.RecyclerViewPageChangeListenerHelper import com.zxhl.cms.widget.RecyclerViewPageChangeListenerHelper
import com.zxhl.cms.widget.UIndicator import com.zxhl.cms.widget.UIndicator
...@@ -25,6 +27,7 @@ import org.greenrobot.eventbus.EventBus ...@@ -25,6 +27,7 @@ import org.greenrobot.eventbus.EventBus
object VipPayDialog { object VipPayDialog {
private var mActivity: Activity? = null; private var mActivity: Activity? = null;
private var mBannerAdapter: BecomeVipDialogBannerAdapter? = null private var mBannerAdapter: BecomeVipDialogBannerAdapter? = null
private var mPriceAdapter: BecomeVipDialogPriceAdapter? = null
private var mCallBack: VipPayCallBack? = null private var mCallBack: VipPayCallBack? = null
fun setDialogDismissCallback(callback: VipPayCallBack?) { fun setDialogDismissCallback(callback: VipPayCallBack?) {
this.mCallBack = callback this.mCallBack = callback
...@@ -60,9 +63,9 @@ object VipPayDialog { ...@@ -60,9 +63,9 @@ object VipPayDialog {
val pay_banner = mDialogView.findViewById<RecyclerView>(R.id.id_rcl_pay_banner) val pay_banner = mDialogView.findViewById<RecyclerView>(R.id.id_rcl_pay_banner)
val banner_indic = mDialogView.findViewById<UIndicator>(R.id.id_banner_indicator) val banner_indic = mDialogView.findViewById<UIndicator>(R.id.id_banner_indicator)
val btn_continue = mDialogView.findViewById<TextView>(R.id.id_tv_vip_dialog_pay_btn) val btn_continue = mDialogView.findViewById<TextView>(R.id.id_tv_vip_dialog_pay_btn)
val price_list = mDialogView.findViewById<RecyclerView>(R.id.id_rcl_pay_price_list)
//banner
banner_indic.setIndicatorCount(5) banner_indic.setIndicatorCount(5)
mBannerAdapter = BecomeVipDialogBannerAdapter(act) mBannerAdapter = BecomeVipDialogBannerAdapter(act)
pay_banner?.layoutManager = LinearLayoutManager( pay_banner?.layoutManager = LinearLayoutManager(
act, LinearLayoutManager.HORIZONTAL, act, LinearLayoutManager.HORIZONTAL,
...@@ -87,7 +90,13 @@ object VipPayDialog { ...@@ -87,7 +90,13 @@ object VipPayDialog {
} }
}) })
) )
//price
mPriceAdapter =
BecomeVipDialogPriceAdapter(act) { view, position, data ->
mPriceAdapter?.setSelectView(position)
}
price_list?.layoutManager = LinearLayoutManager(act)
price_list?.adapter = mPriceAdapter
btn_continue.setOnClickListener { btn_continue.setOnClickListener {
mDialog?.dismiss() mDialog?.dismiss()
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F4EDFF" />
<corners android:radius="10dp" />
</shape>
\ No newline at end of file
...@@ -165,4 +165,11 @@ ...@@ -165,4 +165,11 @@
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" /> android:textStyle="bold" />
<com.paypal.checkout.paymentbutton.PayPalButton
android:id="@+id/id_PayPal_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="-100dp"
android:visibility="gone" />
</RelativeLayout> </RelativeLayout>
\ No newline at end of file
...@@ -33,9 +33,10 @@ ...@@ -33,9 +33,10 @@
android:id="@+id/id_rcl_pay_price_list" android:id="@+id/id_rcl_pay_price_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/id_rcl_pay_banner" android:layout_below="@id/id_banner_indicator"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_marginTop="5dp" android:layout_marginTop="30dp"
android:layout_above="@id/id_tv_vip_dialog_pay_btn"
android:layout_marginRight="10dp" /> android:layout_marginRight="10dp" />
<TextView <TextView
...@@ -44,7 +45,10 @@ ...@@ -44,7 +45,10 @@
android:layout_height="50dp" android:layout_height="50dp"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_margin="20dp" android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="20dp"
android:layout_marginTop="5dp"
android:background="@drawable/shape_8857ff_bd8aff_bg_r25" android:background="@drawable/shape_8857ff_bd8aff_bg_r25"
android:gravity="center" android:gravity="center"
android:text="Continue" android:text="Continue"
......
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/id_ll_dialog_item_become_vip_view"
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:background="@drawable/shape_8857ff_bd8aff_bg_r10"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/id_tv_dialog_item_vip_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1 Month +"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginLeft="10dp"
android:layout_marginEnd="5dp"
android:src="@drawable/icon_xingbi_da_wode" />
<TextView
android:id="@+id/id_tv_dialog_coin_num"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="780"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/id_tv_dialog_item_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="$2.99"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
</RelativeLayout>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment