Commit 00c19681 authored by shiyl's avatar shiyl

创建订单逻辑完善

parent e81cf34a
...@@ -51,5 +51,5 @@ data class CreateOrderResDto( ...@@ -51,5 +51,5 @@ data class CreateOrderResDto(
@SerializedName("order_id") @SerializedName("order_id")
val orderId: String? = null,// 订单号 val orderId: String? = null,// 订单号
@SerializedName("payment") @SerializedName("payment")
val payment: Int? = null,// 是否零元单,1:是0元单,0:不是0元单 val payment: Int? = null,// 是否零元单,0:是0元单,1:不是0元单
) : Parcelable ) : Parcelable
...@@ -19,12 +19,7 @@ data class OrderPayReqDto( ...@@ -19,12 +19,7 @@ data class OrderPayReqDto(
/** /**
* 订单支付响应 * 订单支付响应
*/ */
data class OrderPayResDto( data class PingPayResult(
@SerializedName("result")
val result: List<Result>? = null
)
data class Result(
@SerializedName("k") @SerializedName("k")
val k: String? = null, val k: String? = null,
@SerializedName("v") @SerializedName("v")
......
...@@ -105,19 +105,19 @@ object OrderRemoteDataSource { ...@@ -105,19 +105,19 @@ object OrderRemoteDataSource {
/** /**
* 支付订单 * 支付订单
*/ */
fun requestPayOrder(requestParams: HashMap<String, String?>, callback: ((OrderPayResDto?) -> Unit)? = null) { fun requestPayOrder(requestParams: HashMap<String, String?>, callback: ((List<PingPayResult>?) -> Unit)? = null) {
val timeStamp = System.currentTimeMillis() val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp) val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp) val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp)
ServiceFactory.getInstance().createService(OrderApiService::class.java) ServiceFactory.getInstance().createService(OrderApiService::class.java)
.requestOrderPay(publicParamsMap, privateParamsMap) .requestOrderPay(publicParamsMap, privateParamsMap)
.compose(TransformUtil.defaultSchedulers()) .compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultSubscriber<OrderPayResDto?>() { .subscribe(object : HttpResultSubscriber<List<PingPayResult>?>() {
override fun onSuccess(result: HttpResult<OrderPayResDto?>?) { override fun onSuccess(result: HttpResult<List<PingPayResult>?>?) {
callback?.invoke(result?.result) callback?.invoke(result?.result)
} }
override fun onFailure(result: HttpResult<OrderPayResDto?>?) { override fun onFailure(result: HttpResult<List<PingPayResult>?>?) {
} }
}) })
......
...@@ -18,6 +18,9 @@ import org.greenrobot.eventbus.Subscribe ...@@ -18,6 +18,9 @@ import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
import org.json.JSONObject import org.json.JSONObject
import timber.log.Timber import timber.log.Timber
import com.pingplusplus.android.Pingpp
import com.pingplusplus.android.Pingpp.REQUEST_CODE_PAYMENT
import com.yidian.bcommon.utils.ToastUtils
/** /**
...@@ -79,19 +82,27 @@ class ConfirmOrderActivity : BaseMvvmActivity<BorderActivityConfirmOrderBinding, ...@@ -79,19 +82,27 @@ class ConfirmOrderActivity : BaseMvvmActivity<BorderActivityConfirmOrderBinding,
}) })
vm.chooseCouponEvent.observe(this) { vm.chooseCouponEvent.observe(this) {
// 将最新的优惠券列表传递过去 // 将最新的优惠券列表传递过去
val hashMap = HashMap<String, Any?>() val map = HashMap<String, Any?>()
hashMap[IntentConstants.KEY_EXTRA_COUPON_LIST] = it map[IntentConstants.KEY_EXTRA_COUPON_LIST] = it
XPageManager.push(XRouterPathConstants.CHOOSE_VOUCHER_ACTIVITY, hashMap) XPageManager.push(XRouterPathConstants.CHOOSE_VOUCHER_ACTIVITY, map)
} }
vm.choosePointEvent.observe(this) { vm.choosePointEvent.observe(this) {
// 将选择的自提点id传递过去 // 将选择的自提点id传递过去
marketingId?.let { id -> marketingId?.let { id ->
val hashMap = HashMap<String, Any?>() val map = HashMap<String, Any?>()
hashMap[IntentConstants.KEY_EXTRA_PICKUP_POINT_ID] = it map[IntentConstants.KEY_EXTRA_PICKUP_POINT_ID] = it
hashMap[IntentConstants.KEY_EXTRA_MARKETING_ID] = id map[IntentConstants.KEY_EXTRA_MARKETING_ID] = id
XPageManager.push(XRouterPathConstants.PICKUP_POINT_ACTIVITY, hashMap) XPageManager.push(XRouterPathConstants.PICKUP_POINT_ACTIVITY, map)
} }
} }
vm.toOrderDetailEvent.observe(this) {
val map = HashMap<String, Any?>()
map[IntentConstants.KEY_EXTRA_ORDER_ID] = it
XPageManager.push(XRouterPathConstants.ORDER_DETAIL_ACTIVITY, map)
}
vm.toPaymentEvent.observe(this) {
Pingpp.createPayment(this, it)
}
} }
...@@ -116,4 +127,30 @@ class ConfirmOrderActivity : BaseMvvmActivity<BorderActivityConfirmOrderBinding, ...@@ -116,4 +127,30 @@ class ConfirmOrderActivity : BaseMvvmActivity<BorderActivityConfirmOrderBinding,
} }
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
//支付页面返回处理
if (requestCode == REQUEST_CODE_PAYMENT) {
if (resultCode == RESULT_OK) {
data?.extras?.let {
val result = it.getString("pay_result")
/* 处理返回值
* "success" - 支付成功
* "fail" - 支付失败
* "cancel" - 取消支付
* "invalid" - 支付插件未安装(一般是微信客户端未安装的情况)
* "unknown" - app进程异常被杀死(一般是低内存状态下,app进程被杀死)
*/
val errorMsg = it.getString("error_msg") // 错误信息
val extraMsg = it.getString("extra_msg") // 错误信息
if (result.equals("success")) {
vm.paymentSuccess()
} else {
ToastUtils.showShortSafe("支付失败,错误原因:$errorMsg")
}
}
}
}
}
} }
...@@ -13,6 +13,7 @@ import org.json.JSONObject ...@@ -13,6 +13,7 @@ import org.json.JSONObject
class ConfirmOrderViewModel : BaseViewModel() { class ConfirmOrderViewModel : BaseViewModel() {
private var payOrderId: String? = null
private lateinit var currentParamsJson: JSONObject// 当前订单的请求参数 private lateinit var currentParamsJson: JSONObject// 当前订单的请求参数
private var originalAmount: Double = 0.00// 原价总和 private var originalAmount: Double = 0.00// 原价总和
var couponAmount: Double = 0.00// 优惠券金额 var couponAmount: Double = 0.00// 优惠券金额
...@@ -45,6 +46,18 @@ class ConfirmOrderViewModel : BaseViewModel() { ...@@ -45,6 +46,18 @@ class ConfirmOrderViewModel : BaseViewModel() {
private val _chooseCouponEvent = MutableLiveData<List<CouponDto>?>() private val _chooseCouponEvent = MutableLiveData<List<CouponDto>?>()
val chooseCouponEvent: LiveData<List<CouponDto>?> = _chooseCouponEvent val chooseCouponEvent: LiveData<List<CouponDto>?> = _chooseCouponEvent
/**
* 选择自提点 Event
*/
private val _toOrderDetailEvent = MutableLiveData<String?>()
val toOrderDetailEvent: LiveData<String?> = _toOrderDetailEvent
/**
* 调起支付 Event
*/
private val _toPaymentEvent = MutableLiveData<String>()
val toPaymentEvent: LiveData<String> = _toPaymentEvent
/** /**
* 请求订单信息 * 请求订单信息
*/ */
...@@ -166,15 +179,40 @@ class ConfirmOrderViewModel : BaseViewModel() { ...@@ -166,15 +179,40 @@ class ConfirmOrderViewModel : BaseViewModel() {
currentParamsJson.put("receiver_mobile", receivingPhone.value) currentParamsJson.put("receiver_mobile", receivingPhone.value)
currentParamsJson.put("comment", remark.value) currentParamsJson.put("comment", remark.value)
OrderRemoteDataSource.requestCreateOrder(currentParamsJson) { OrderRemoteDataSource.requestCreateOrder(currentParamsJson) {
ToastUtils.showShort("创建订单成功${it?.orderId}") it?.let {
ToastUtils.showShort("创建订单成功${it.orderId}")
if (it.payment == 0) {// 0元单不用支付直接进订单详情
_toOrderDetailEvent.value = it.orderId
} else {
toGetCharge(it.orderId)
}
}
} }
} }
/** /**
* 立即支付 * 获取charge并进行支付
*/ */
fun payNow() { private fun toGetCharge(orderId: String?) {
payOrderId = orderId
val requestParams = HashMap<String, String?>()
requestParams["order_id"] = orderId
requestParams["pay_method_id"] = "105"// 微信 App 支付
OrderRemoteDataSource.requestPayOrder(requestParams) {
it?.let {
ToastUtils.showShortSafe("获取charge成功:${it.size}")
// 调起支付
_toPaymentEvent.value = it[0].v?.charges.toString()
}
}
}
/**
* 支付结果
*/
fun paymentSuccess() {
_toOrderDetailEvent.value = payOrderId
} }
} }
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