Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
ShenghuoquanBusiness
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bp
ShenghuoquanBusiness
Commits
00c19681
Commit
00c19681
authored
Aug 26, 2021
by
shiyl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
创建订单逻辑完善
parent
e81cf34a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
91 additions
and
21 deletions
+91
-21
CreateOrderDto.kt
...java/com/yidian/shenghuoquan/border/dto/CreateOrderDto.kt
+1
-1
OrderPayDto.kt
...in/java/com/yidian/shenghuoquan/border/dto/OrderPayDto.kt
+1
-6
OrderRemoteDataSource.kt
.../yidian/shenghuoquan/border/http/OrderRemoteDataSource.kt
+4
-4
ConfirmOrderActivity.kt
...com/yidian/shenghuoquan/border/ui/ConfirmOrderActivity.kt
+44
-7
ConfirmOrderViewModel.kt
...om/yidian/shenghuoquan/border/ui/ConfirmOrderViewModel.kt
+41
-3
No files found.
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/dto/CreateOrderDto.kt
View file @
00c19681
...
...
@@ -51,5 +51,5 @@ data class CreateOrderResDto(
@SerializedName
(
"order_id"
)
val
orderId
:
String
?
=
null
,
// 订单号
@SerializedName
(
"payment"
)
val
payment
:
Int
?
=
null
,
// 是否零元单,
1:是0元单,0
:不是0元单
val
payment
:
Int
?
=
null
,
// 是否零元单,
0:是0元单,1
:不是0元单
)
:
Parcelable
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/dto/OrderPayDto.kt
View file @
00c19681
...
...
@@ -19,12 +19,7 @@ data class OrderPayReqDto(
/**
* 订单支付响应
*/
data class
OrderPayResDto
(
@SerializedName
(
"result"
)
val
result
:
List
<
Result
>?
=
null
)
data class
Result
(
data class
PingPayResult
(
@SerializedName
(
"k"
)
val
k
:
String
?
=
null
,
@SerializedName
(
"v"
)
...
...
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/http/OrderRemoteDataSource.kt
View file @
00c19681
...
...
@@ -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
publicParamsMap
=
HttpParamsUtils
.
getPublicParamsMap
(
timeStamp
)
val
privateParamsMap
=
HttpParamsUtils
.
getPrivateParamsMap
(
requestParams
,
timeStamp
)
ServiceFactory
.
getInstance
().
createService
(
OrderApiService
::
class
.
java
)
.
requestOrderPay
(
publicParamsMap
,
privateParamsMap
)
.
compose
(
TransformUtil
.
defaultSchedulers
())
.
subscribe
(
object
:
HttpResultSubscriber
<
OrderPayResDto
?>()
{
override
fun
onSuccess
(
result
:
HttpResult
<
OrderPayResDto
?
>?)
{
.
subscribe
(
object
:
HttpResultSubscriber
<
List
<
PingPayResult
>
?>()
{
override
fun
onSuccess
(
result
:
HttpResult
<
List
<
PingPayResult
>
?>?)
{
callback
?.
invoke
(
result
?.
result
)
}
override
fun
onFailure
(
result
:
HttpResult
<
OrderPayResDto
?
>?)
{
override
fun
onFailure
(
result
:
HttpResult
<
List
<
PingPayResult
>
?>?)
{
}
})
...
...
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/ui/ConfirmOrderActivity.kt
View file @
00c19681
...
...
@@ -18,6 +18,9 @@ import org.greenrobot.eventbus.Subscribe
import
org.greenrobot.eventbus.ThreadMode
import
org.json.JSONObject
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,
})
vm
.
chooseCouponEvent
.
observe
(
this
)
{
// 将最新的优惠券列表传递过去
val
hashM
ap
=
HashMap
<
String
,
Any
?>()
hashM
ap
[
IntentConstants
.
KEY_EXTRA_COUPON_LIST
]
=
it
XPageManager
.
push
(
XRouterPathConstants
.
CHOOSE_VOUCHER_ACTIVITY
,
hashM
ap
)
val
m
ap
=
HashMap
<
String
,
Any
?>()
m
ap
[
IntentConstants
.
KEY_EXTRA_COUPON_LIST
]
=
it
XPageManager
.
push
(
XRouterPathConstants
.
CHOOSE_VOUCHER_ACTIVITY
,
m
ap
)
}
vm
.
choosePointEvent
.
observe
(
this
)
{
// 将选择的自提点id传递过去
marketingId
?.
let
{
id
->
val
hashM
ap
=
HashMap
<
String
,
Any
?>()
hashM
ap
[
IntentConstants
.
KEY_EXTRA_PICKUP_POINT_ID
]
=
it
hashM
ap
[
IntentConstants
.
KEY_EXTRA_MARKETING_ID
]
=
id
XPageManager
.
push
(
XRouterPathConstants
.
PICKUP_POINT_ACTIVITY
,
hashM
ap
)
val
m
ap
=
HashMap
<
String
,
Any
?>()
m
ap
[
IntentConstants
.
KEY_EXTRA_PICKUP_POINT_ID
]
=
it
m
ap
[
IntentConstants
.
KEY_EXTRA_MARKETING_ID
]
=
id
XPageManager
.
push
(
XRouterPathConstants
.
PICKUP_POINT_ACTIVITY
,
m
ap
)
}
}
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,
}
}
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"
)
}
}
}
}
}
}
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/ui/ConfirmOrderViewModel.kt
View file @
00c19681
...
...
@@ -13,6 +13,7 @@ import org.json.JSONObject
class
ConfirmOrderViewModel
:
BaseViewModel
()
{
private
var
payOrderId
:
String
?
=
null
private
lateinit
var
currentParamsJson
:
JSONObject
// 当前订单的请求参数
private
var
originalAmount
:
Double
=
0.00
// 原价总和
var
couponAmount
:
Double
=
0.00
// 优惠券金额
...
...
@@ -45,6 +46,18 @@ class ConfirmOrderViewModel : BaseViewModel() {
private
val
_chooseCouponEvent
=
MutableLiveData
<
List
<
CouponDto
>?>()
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() {
currentParamsJson
.
put
(
"receiver_mobile"
,
receivingPhone
.
value
)
currentParamsJson
.
put
(
"comment"
,
remark
.
value
)
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
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment