Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
Overview
Overview
Details
Activity
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
杨凯
YDL-Component-Medical
Commits
21fc5c6c
Commit
21fc5c6c
authored
Nov 11, 2019
by
严久程
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
支付模块
parent
8619efbe
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
84 additions
and
446 deletions
+84
-446
CoursePlayActivity.kt
m-course/src/main/java/com/yidianling/course/coursePlay/CoursePlayActivity.kt
+1
-1
build.gradle
ydl-pay/build.gradle
+13
-1
CommonPayDialog.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/CommonPayDialog.kt
+34
-36
CommonWXPayBean.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/bean/CommonWXPayBean.kt
+1
-1
WeiXinPayStatusEvent.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/bean/WeiXinPayStatusEvent.kt
+1
-1
BalancePayParam.java
ydl-pay/src/main/java/com/yidianling/ydl_pay/bean/params/BalancePayParam.java
+2
-0
BaseCommand.java
ydl-pay/src/main/java/com/yidianling/ydl_pay/bean/params/BaseCommand.java
+0
-28
CommonPayParam.java
ydl-pay/src/main/java/com/yidianling/ydl_pay/bean/params/CommonPayParam.java
+2
-0
FormatText.java
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/FormatText.java
+0
-32
HttpUtils.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/HttpUtils.kt
+20
-18
PayRetrofitUtils.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/PayRetrofitUtils.kt
+0
-278
PayServices.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/PayServices.kt
+9
-5
BaseResponse.java
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/response/BaseResponse.java
+0
-16
HttpUrlUtils.java
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/utils/HttpUrlUtils.java
+1
-1
RxHttpUtils.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/utils/RxHttpUtils.kt
+0
-28
No files found.
m-course/src/main/java/com/yidianling/course/coursePlay/CoursePlayActivity.kt
View file @
21fc5c6c
...
...
@@ -24,7 +24,7 @@ import com.ydl.media.audio.utils.PlayProgressUtil
import
com.ydl.media.view.PlayTypeEnum
import
com.ydl.media.view.PlayerFloatHelper
import
com.ydl.ydl_image.module.GlideApp
import
com.y
dl
.ydl_pay.CommonPayDialog
import
com.y
idianling
.ydl_pay.CommonPayDialog
import
com.ydl.ydl_router.manager.YDLRouterManager
import
com.ydl.ydlcommon.adapter.CommonRecyclerAdapter
import
com.ydl.ydlcommon.base.BaseActivity
...
...
ydl-pay/build.gradle
View file @
21fc5c6c
...
...
@@ -38,7 +38,7 @@ dependencies {
testImplementation
'junit:junit:4.12'
androidTestImplementation
'com.android.support.test:runner:1.0.2'
androidTestImplementation
'com.android.support.test.espresso:espresso-core:3.0.2'
compile
"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation
"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation
'com.squareup.retrofit2:retrofit:2.3.0'
...
...
@@ -49,11 +49,23 @@ dependencies {
implementation
'com.facebook.stetho:stetho-okhttp3:1.4.1'
implementation
'io.reactivex.rxjava2:rxandroid:2.0.1'
//noinspection GradleCompatible
implementation
'com.android.support:recyclerview-v7:27.1.1'
implementation
'de.greenrobot:eventbus:2.4.0'
api
'com.umeng.sdk:share-wechat:6.9.1'
api
rootProject
.
ext
.
dependencies
[
"ydl-hnet"
]
if
(
rootProject
.
ext
.
dev_mode
){
//开发时使用
api
project
(
':ydl-platform'
)
}
else
{
//发布时使用
api
(
rootProject
.
ext
.
dependencies
[
"ydl-platform"
])
{
transitive
=
true
}
}
}
repositories
{
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/CommonPayDialog.kt
View file @
21fc5c6c
package
com.y
dl
.ydl_pay
package
com.y
idianling
.ydl_pay
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.app.Dialog
import
android.content.Context
...
...
@@ -13,19 +14,11 @@ import android.widget.LinearLayout
import
com.alipay.sdk.app.PayTask
import
com.tencent.mm.opensdk.modelpay.PayReq
import
com.tencent.mm.opensdk.openapi.WXAPIFactory
import
com.ydl.ydl_pay.bean.*
import
com.ydl.ydl_pay.http.HttpConfig
import
com.ydl.ydl_pay.http.HttpUtils
import
com.ydl.ydl_pay.http.PayRetrofitUtils
import
com.ydl.ydl_pay.toast.ToastHelper
import
com.ydl.ydl_pay.widget.PayCouponView
import
com.ydl.ydl_pay.widget.PayInfoDetailView
import
com.yidianling.ydl_pay.BuildConfig
import
com.yidianling.ydl_pay.R
import
com.yidianling.ydl_pay.bean.AllCouponListBean
import
com.yidianling.ydl_pay.bean.CommonCouponBean
import
com.yidianling.ydl_pay.bean.OrderInfoBean
import
com.yidianling.ydl_pay.bean.PayResult
import
com.yidianling.ydl_pay.bean.*
import
com.yidianling.ydl_pay.bean.params.*
import
com.yidianling.ydl_pay.http.utils.NetUtils
import
com.yidianling.ydl_pay.http.utils.RxDeviceTool
...
...
@@ -97,7 +90,7 @@ class CommonPayDialog : Dialog {
private
constructor
(
context
:
Context
)
:
super
(
context
,
R
.
style
.
common_dialog_style
)
private
constructor
(
build
:
CommonPayDialog
.
Build
)
:
this
(
build
.
mActivity
)
{
private
constructor
(
build
:
Build
)
:
this
(
build
.
mActivity
)
{
this
.
goodsId
=
build
.
goodsId
this
.
activity
=
build
.
mActivity
this
.
listener
=
build
.
listener
...
...
@@ -127,6 +120,7 @@ class CommonPayDialog : Dialog {
/**
* 获取下单信息
*/
@SuppressLint
(
"CheckResult"
)
private
fun
getOrderInfo
()
{
if
(!
NetUtils
.
isConnected
(
activity
))
{
ToastHelper
.
show
(
activity
,
activity
.
getString
(
R
.
string
.
net_error
))
...
...
@@ -214,6 +208,7 @@ class CommonPayDialog : Dialog {
/**
获取所有选择优惠券
*/
@SuppressLint
(
"CheckResult"
)
private
fun
getAllCoupon
()
{
if
(!
NetUtils
.
isConnected
(
activity
))
{
ToastHelper
.
show
(
activity
,
activity
.
getString
(
R
.
string
.
net_error
))
...
...
@@ -272,6 +267,7 @@ class CommonPayDialog : Dialog {
* @param useMoneyType 支付类型 1余额,2三方支付,3混合
*
*/
@SuppressLint
(
"CheckResult"
)
private
fun
createOrder
(
payWay
:
Int
,
payMoney
:
Float
,
useMoneyType
:
Int
,
code
:
String
,
couponType
:
String
)
{
if
(!
NetUtils
.
isConnected
(
activity
))
{
ToastHelper
.
show
(
activity
,
activity
.
getString
(
R
.
string
.
net_error
))
...
...
@@ -336,6 +332,7 @@ class CommonPayDialog : Dialog {
* 支付宝支付
*
*/
@SuppressLint
(
"CheckResult"
)
private
fun
getAliPayOrderId
(
payId
:
String
,
isThreePay
:
Int
)
{
if
(!
NetUtils
.
isConnected
(
activity
))
{
activity
.
runOnUiThread
{
...
...
@@ -386,6 +383,7 @@ class CommonPayDialog : Dialog {
/**
* 微信支付
*/
@SuppressLint
(
"CheckResult"
)
private
fun
getWeiXinPayOrderId
(
payId
:
String
,
isThreePay
:
Int
)
{
if
(!
NetUtils
.
isConnected
(
activity
))
{
activity
.
runOnUiThread
{
...
...
@@ -527,7 +525,7 @@ class CommonPayDialog : Dialog {
*/
fun
setCourseId
(
courseId
:
String
):
Build
{
this
.
goodsId
=
courseId
payType
=
CommonPayDialog
.
TYPE_COURSE
payType
=
TYPE_COURSE
return
this
@Build
}
...
...
@@ -600,30 +598,30 @@ class CommonPayDialog : Dialog {
*/
private
fun
initHttpHeadConfig
()
{
RxDeviceTool
.
initContext
(
mActivity
)
HttpConfig
.
version
=
RxDeviceTool
.
getAppVersionName
(
mActivity
)
HttpConfig
.
osBuild
=
RxDeviceTool
.
getBuildMANUFACTURER
()
+
","
+
RxDeviceTool
.
getBuildBrandModel
()
+
","
+
RxDeviceTool
.
getOsBuileVersion
()
+
","
+
RxDeviceTool
.
getAppVersionName
(
mActivity
)
HttpConfig
.
uid
=
uid
HttpConfig
.
accessToken
=
token
HttpConfig
.
ffrom
=
ffrom
HttpConfig
.
isTestEnvironment
=
isTestEnvironment
val
packageName
=
mActivity
.
packageName
if
(
packageName
.
endsWith
(
"zj.android"
))
{
//专家版
HttpConfig
.
isFromApp
=
"2"
}
else
{
HttpConfig
.
isFromApp
=
"1"
}
if
(
BuildConfig
.
DEBUG
)
{
if
(
TextUtils
.
isEmpty
(
HttpConfig
.
ffrom
))
{
ToastHelper
.
show
(
mActivity
,
"请先调用--setFfrom()--方法"
)
}
if
(
TextUtils
.
isEmpty
(
HttpConfig
.
uid
))
{
ToastHelper
.
show
(
mActivity
,
"请先调用--setUid()--方法"
)
}
if
(
TextUtils
.
isEmpty
(
HttpConfig
.
accessToken
))
{
ToastHelper
.
show
(
mActivity
,
"请先调用--setToken()--方法"
)
}
}
PayRetrofitUtils
.
setConfig
(
HttpConfig
)
//
HttpConfig.version = RxDeviceTool.getAppVersionName(mActivity)
//
HttpConfig.osBuild = RxDeviceTool.getBuildMANUFACTURER() + "," + RxDeviceTool.getBuildBrandModel() + "," + RxDeviceTool.getOsBuileVersion() + "," + RxDeviceTool.getAppVersionName(mActivity)
//
HttpConfig.uid = uid
//
HttpConfig.accessToken = token
//
HttpConfig.ffrom = ffrom
//
HttpConfig.isTestEnvironment = isTestEnvironment
//
val packageName = mActivity.packageName
//
if (packageName.endsWith("zj.android")) {//专家版
//
HttpConfig.isFromApp = "2"
//
} else {
//
HttpConfig.isFromApp = "1"
//
}
//
if (BuildConfig.DEBUG) {
//
if (TextUtils.isEmpty(HttpConfig.ffrom)) {
//
ToastHelper.show(mActivity, "请先调用--setFfrom()--方法")
//
}
//
if (TextUtils.isEmpty(HttpConfig.uid)) {
//
ToastHelper.show(mActivity, "请先调用--setUid()--方法")
//
}
//
if (TextUtils.isEmpty(HttpConfig.accessToken)) {
//
ToastHelper.show(mActivity, "请先调用--setToken()--方法")
//
}
//
}
//
PayRetrofitUtils.setConfig(HttpConfig)
}
}
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/bean/CommonWXPayBean.kt
View file @
21fc5c6c
package
com.y
dl
.ydl_pay.bean
package
com.y
idianling
.ydl_pay.bean
/**
* author : Zhangwenchao
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/bean/WeiXinPayStatusEvent.kt
View file @
21fc5c6c
package
com.y
dl
.ydl_pay.bean
package
com.y
idianling
.ydl_pay.bean
/**
* @author jiucheng
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/bean/params/BalancePayParam.java
View file @
21fc5c6c
package
com
.
yidianling
.
ydl_pay
.
bean
.
params
;
import
com.ydl.ydlcommon.data.http.BaseCommand
;
/**
* @author jiucheng
* @描述:
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/bean/params/BaseCommand.java
deleted
100644 → 0
View file @
8619efbe
package
com
.
yidianling
.
ydl_pay
.
bean
.
params
;
import
com.ydl.ydl_pay.http.HttpConfig
;
/**
* 基础网络请求类
* Created by Dog on 2015/5/8.
*/
public
class
BaseCommand
{
public
String
uid
=
HttpConfig
.
INSTANCE
.
getUid
();
public
String
accessToken
=
HttpConfig
.
INSTANCE
.
getAccessToken
();
public
String
ts
;
public
String
version
=
HttpConfig
.
INSTANCE
.
getVersion
();
public
String
osBuild
=
HttpConfig
.
INSTANCE
.
getOsBuild
();
public
String
isFromApp
=
"1"
;
//2表示专家版1表示用户版
public
String
ffrom
=
HttpConfig
.
INSTANCE
.
getFfrom
();
//渠Y道来源
public
BaseCommand
()
{
ts
=
(
System
.
currentTimeMillis
()
/
1000
)
+
""
;
}
}
ydl-pay/src/main/java/com/yidianling/ydl_pay/bean/params/CommonPayParam.java
View file @
21fc5c6c
package
com
.
yidianling
.
ydl_pay
.
bean
.
params
;
import
com.ydl.ydlcommon.data.http.BaseCommand
;
/**
* @author jiucheng
* @描述:
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/FormatText.java
deleted
100644 → 0
View file @
8619efbe
package
com
.
yidianling
.
ydl_pay
.
http
;
/**
* Post请求表单
*/
public
class
FormatText
{
//key
private
String
mKey
;
//value
private
String
mValue
;
public
FormatText
(
String
mKey
,
String
mValue
)
{
this
.
mKey
=
mKey
;
this
.
mValue
=
mValue
;
}
public
String
getmKey
()
{
return
mKey
;
}
public
String
getmValue
()
{
return
mValue
;
}
@Override
public
String
toString
()
{
return
"FormatText{"
+
"mKey='"
+
mKey
+
'\''
+
", mValue='"
+
mValue
+
'\''
+
'}'
;
}
}
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/HttpUtils.kt
View file @
21fc5c6c
package
com.ydl.ydl_pay.http
import
com.google.gson.Gson
import
com.ydl.ydl_pay.BuildConfig
import
com.ydl.ydl_pay.actionpoint.ActionDataBean
import
com.ydl.ydl_pay.bean.*
import
com.ydl.ydl_pay.bean.params.*
import
com.ydl.ydl_pay.http.response.BaseResponse
import
com.ydl.ydl_pay.http.utils.HttpUrlUtils
import
com.ydl.ydl_pay.http.utils.NetUtils
import
com.ydl.ydl_pay.http.utils.RxHttpUtils
import
com.ydl.ydlcommon.data.http.BaseCommand
import
com.ydl.ydlcommon.data.http.BaseResponse
import
com.ydl.ydlcommon.utils.NetworkParamsUtils
import
com.ydl.ydlnet.YDLHttpUtils
import
com.yidianling.ydl_pay.bean.*
import
com.yidianling.ydl_pay.bean.params.CheckRequestCouponBean
import
com.yidianling.ydl_pay.bean.params.CreateOrderRequestBean
import
com.yidianling.ydl_pay.bean.params.GetAllCouponRequestBean
import
com.yidianling.ydl_pay.bean.params.OrderRequestBean
import
io.reactivex.Observable
import
okhttp3.MediaType
import
okhttp3.RequestBody
...
...
@@ -28,7 +31,7 @@ class HttpUtils {
fun
getOrderInfo
(
bean
:
OrderRequestBean
):
Observable
<
BaseResponse
<
OrderInfoBean
>>
{
var
str
=
Gson
().
toJson
(
bean
)
val
body
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json; charset=utf-8"
),
str
)
as
RequestBody
return
PayRetrofitUtils
.
getRetrofit
().
create
(
PayServices
::
class
.
java
).
getOrderInfo
(
body
)
return
YDLHttpUtils
.
obtainApi
(
PayServices
::
class
.
java
).
getOrderInfo
(
body
)
}
/**
...
...
@@ -37,7 +40,7 @@ class HttpUtils {
fun
checkCourseCoupon
(
bean
:
CheckRequestCouponBean
):
Observable
<
BaseResponse
<
CouponCodeInfoBean
>>
{
var
str
=
Gson
().
toJson
(
bean
)
val
body
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json; charset=utf-8"
),
str
)
as
RequestBody
return
PayRetrofitUtils
.
getRetrofit
().
create
(
PayServices
::
class
.
java
).
checkCourseCoupon
(
body
)
return
YDLHttpUtils
.
obtainApi
(
PayServices
::
class
.
java
).
checkCourseCoupon
(
body
)
}
...
...
@@ -47,7 +50,7 @@ class HttpUtils {
fun
selectCoupon
(
bean
:
GetAllCouponRequestBean
):
Observable
<
BaseResponse
<
AllCouponListBean
>>
{
var
str
=
Gson
().
toJson
(
bean
)
val
body
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json; charset=utf-8"
),
str
)
as
RequestBody
return
PayRetrofitUtils
.
getRetrofit
().
create
(
PayServices
::
class
.
java
).
selectCoupon
(
body
)
return
YDLHttpUtils
.
obtainApi
(
PayServices
::
class
.
java
).
selectCoupon
(
body
)
}
...
...
@@ -57,7 +60,7 @@ class HttpUtils {
fun
createOrder
(
bean
:
CreateOrderRequestBean
):
Observable
<
BaseResponse
<
PayOrderBean
>>
{
var
str
=
Gson
().
toJson
(
bean
)
val
body
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json; charset=utf-8"
),
str
)
as
RequestBody
return
PayRetrofitUtils
.
getRetrofit
().
create
(
PayServices
::
class
.
java
).
createOrder
(
body
)
return
YDLHttpUtils
.
obtainApi
(
PayServices
::
class
.
java
).
createOrder
(
body
)
}
...
...
@@ -65,19 +68,18 @@ class HttpUtils {
* 支付宝在线支付
*/
fun
getAliPayOrderId
(
bean
:
BaseCommand
):
Observable
<
BaseResponse
<
CommonPayRecharge
>>
{
var
params
=
PayRetrofitUtils
.
getPostList
(
bean
)
var
map
=
PayRetrofitUtils
.
getMaps
(
params
)
return
PayRetrofitUtils
.
getRetrofit
().
newBuilder
().
baseUrl
(
HttpUrlUtils
.
getBaseUrl
(
HttpConfig
.
isTestEnvironment
,
false
))
.
build
().
create
(
PayServices
::
class
.
java
).
getAliPayOrderId
(
map
)
var
params
=
NetworkParamsUtils
.
getPostList
(
bean
)
var
map
=
NetworkParamsUtils
.
getMaps
(
params
)
return
YDLHttpUtils
.
obtainApi
(
PayServices
::
class
.
java
).
getAliPayOrderId
(
map
)
}
/**
* 微信在线支付
*/
fun
wxPay
(
bean
:
BaseCommand
):
Observable
<
BaseResponse
<
CommonWXPayBean
>>
{
var
params
=
PayRetrofit
Utils
.
getPostList
(
bean
)
var
map
=
PayRetrofit
Utils
.
getMaps
(
params
)
return
PayRetrofitUtils
.
getRetrofit
().
newBuilder
().
baseUrl
(
HttpUrlUtils
.
getBaseUrl
(
HttpConfig
.
isTestEnvironment
,
false
)).
build
().
create
(
PayServices
::
class
.
java
).
wxPay
(
map
)
var
params
=
NetworkParams
Utils
.
getPostList
(
bean
)
var
map
=
NetworkParams
Utils
.
getMaps
(
params
)
return
YDLHttpUtils
.
obtainApi
(
PayServices
::
class
.
java
).
wxPay
(
map
)
}
...
...
@@ -86,7 +88,7 @@ class HttpUtils {
*/
internal
fun
actionDataCount
(
actionDataParams
:
ActionDataBean
):
Observable
<
BaseResponse
<
String
>>
{
val
body
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json; charset=utf-8"
),
Gson
().
toJson
(
actionDataParams
))
return
PayRetrofitUtils
.
getRetrofit
().
newBuilder
().
baseUrl
(
HttpUrlUtils
.
geActionUrl
(
HttpConfig
.
isTestEnvironment
)).
build
().
create
(
PayServices
::
class
.
java
).
actionDataCount
(
body
)
return
YDLHttpUtils
.
obtainApi
(
PayServices
::
class
.
java
).
actionDataCount
(
body
)
}
}
}
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/PayRetrofitUtils.kt
deleted
100644 → 0
View file @
8619efbe
package
com.ydl.ydl_pay.http
import
android.annotation.SuppressLint
import
com.facebook.stetho.okhttp3.StethoInterceptor
import
com.ydl.ydl_pay.BuildConfig
import
com.ydl.ydl_pay.bean.params.BaseCommand
import
com.ydl.ydl_pay.http.log.LogUtil
import
com.ydl.ydl_pay.http.utils.HttpUrlUtils
import
okhttp3.FormBody
import
okhttp3.MultipartBody
import
okhttp3.OkHttpClient
import
okhttp3.logging.HttpLoggingInterceptor
import
okio.Buffer
import
retrofit2.Retrofit
import
retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import
retrofit2.converter.gson.GsonConverterFactory
import
java.security.KeyManagementException
import
java.security.MessageDigest
import
java.security.NoSuchAlgorithmException
import
java.security.SecureRandom
import
java.security.cert.X509Certificate
import
java.util.*
import
java.util.concurrent.TimeUnit
import
javax.net.ssl.SSLContext
import
javax.net.ssl.SSLSocketFactory
import
javax.net.ssl.TrustManager
import
javax.net.ssl.X509TrustManager
/**
* @author jiucheng
* @描述:支付模块的网络请求
* @Copyright Copyright (c) 2018
* @Company 壹点灵
* @date 2019/4/3
*/
class
PayRetrofitUtils
private
constructor
()
{
private
lateinit
var
config
:
HttpConfig
companion
object
{
private
const
val
AUTHORIZATION_NAME
=
"Authorization"
private
const
val
SESSION_KEY_DEFAULT_VALUE
=
"dc59cf294f37d237c1f06240568ffe21"
private
const
val
YDL
=
"Ydl "
private
const
val
UID
=
"uid"
private
const
val
FFROM
=
"ffrom"
private
const
val
IS_FROM_APP
=
"isFromApp"
//1表示用户版2表示专家版
private
const
val
OS_BUILD
=
"osBuild"
private
const
val
TS
=
"ts"
private
const
val
VERSION
=
"version"
private
const
val
TOKEN
=
"accessToken"
private
const
val
DEFAULT_TIMEOUT
=
15
private
const
val
OS_TYPE
=
"osType"
// 1.ios 2.android
private
fun
getInstance
():
PayRetrofitUtils
{
return
Holder
.
INSTANCE
}
fun
setConfig
(
config
:
HttpConfig
)
{
getInstance
().
config
=
config
}
// 调用此方法获取 Retrofit 对象
fun
getRetrofit
():
Retrofit
{
return
getInstance
().
retrofit
}
fun
getPostList
(
crq
:
BaseCommand
):
List
<
FormatText
>
{
val
formTextList
=
ArrayList
<
FormatText
>()
val
fields
=
crq
.
javaClass
.
fields
for
(
field
in
fields
)
{
try
{
val
accessFlag
=
field
.
isAccessible
field
.
isAccessible
=
true
val
o
=
field
.
get
(
crq
)
if
(
o
!=
null
)
{
val
formatText
=
FormatText
(
field
.
name
,
o
.
toString
())
formTextList
.
add
(
formatText
)
}
field
.
isAccessible
=
accessFlag
}
catch
(
e
:
IllegalAccessException
)
{
e
.
printStackTrace
()
}
}
return
formTextList
}
//获取网络请求表
fun
getMaps
(
list
:
List
<
FormatText
>):
Map
<
String
,
String
>
{
val
map
=
HashMap
<
String
,
String
>()
val
size
=
list
.
size
for
(
i
in
0
until
size
)
{
val
formatText
=
list
[
i
]
map
[
formatText
.
getmKey
()]
=
formatText
.
getmValue
().
toString
()
}
return
map
}
}
private
val
retrofit
:
Retrofit
by
lazy
{
Retrofit
.
Builder
()
.
baseUrl
(
getBaseJavaUrl
())
.
addConverterFactory
(
GsonConverterFactory
.
create
())
.
addCallAdapterFactory
(
RxJava2CallAdapterFactory
.
create
())
.
client
(
getOkHttp
())
.
build
()
}
private
fun
getBaseJavaUrl
():
String
{
return
HttpUrlUtils
.
getBaseUrl
(
config
.
isTestEnvironment
,
true
)
}
private
fun
getOkHttp
():
OkHttpClient
{
val
builder
=
OkHttpClient
.
Builder
()
builder
.
retryOnConnectionFailure
(
false
)
builder
.
addInterceptor
{
chain
->
val
body
=
chain
.
request
().
body
()
val
list
=
ArrayList
<
FormatText
>()
if
(
body
is
FormBody
)
{
val
formBody
=
body
as
FormBody
?
for
(
i
in
0
until
formBody
!!
.
size
())
{
list
.
add
(
FormatText
(
formBody
.
name
(
i
),
formBody
.
value
(
i
)))
}
}
if
(
body
is
MultipartBody
)
{
val
multipartBody
=
body
as
MultipartBody
?
val
parts
=
multipartBody
!!
.
parts
()
for
(
part
in
parts
)
{
if
(
"text/plain; charset=utf-8"
==
part
.
body
().
contentType
()
!!
.
toString
())
{
val
headerStr
=
part
.
headers
()
!!
.
toString
()
val
name
=
headerStr
.
split
(
"\"\\n"
.
toRegex
()).
dropLastWhile
{
it
.
isEmpty
()
}.
toTypedArray
()[
0
].
split
(
"=\""
.
toRegex
()).
dropLastWhile
{
it
.
isEmpty
()
}.
toTypedArray
()[
1
]
val
buffer
=
Buffer
()
part
.
body
().
writeTo
(
buffer
)
val
value
=
buffer
.
readUtf8
()
list
.
add
(
FormatText
(
name
,
value
))
}
}
}
val
head
=
YDL
+
getSign
(
list
)
LogUtil
.
i
(
"RetrofitLog"
,
"head = $head"
)
val
build
=
chain
.
request
()
.
newBuilder
()
.
header
(
AUTHORIZATION_NAME
,
head
)
.
addHeader
(
FFROM
,
config
.
ffrom
)
.
addHeader
(
IS_FROM_APP
,
config
.
isFromApp
)
.
addHeader
(
VERSION
,
config
.
version
)
.
addHeader
(
OS_BUILD
,
config
.
osBuild
)
.
addHeader
(
OS_TYPE
,
"2"
)
.
addHeader
(
TOKEN
,
config
.
accessToken
)
.
addHeader
(
TS
,
(
System
.
currentTimeMillis
()
/
1000
).
toString
())
.
addHeader
(
UID
,
config
.
uid
)
chain
.
proceed
(
build
.
build
())
}
if
(
BuildConfig
.
DEBUG
)
{
builder
.
addInterceptor
(
HttpLoggingInterceptor
{
message
->
//打印retrofit日志
LogUtil
.
i
(
"RetrofitLog"
,
"retrofitBack = $message"
)
}.
setLevel
(
HttpLoggingInterceptor
.
Level
.
BODY
))
builder
.
addNetworkInterceptor
(
StethoInterceptor
())
}
//使用自定义SSLSocketFactory
val
factory
=
createSSLSocketFactory
()
if
(
factory
!=
null
)
{
builder
.
sslSocketFactory
(
factory
)
.
hostnameVerifier
{
_
,
_
->
true
}
}
builder
.
connectTimeout
(
DEFAULT_TIMEOUT
.
toLong
(),
TimeUnit
.
SECONDS
)
.
readTimeout
(
DEFAULT_TIMEOUT
.
toLong
(),
TimeUnit
.
SECONDS
)
.
writeTimeout
(
DEFAULT_TIMEOUT
.
toLong
(),
TimeUnit
.
SECONDS
)
return
builder
.
build
()
}
//获取请求头签名
private
fun
getSign
(
list
:
List
<
FormatText
>):
String
?
{
//将请求参数倒序排列
Collections
.
sort
(
list
,
SortData
())
val
stringBuilder
=
StringBuilder
()
val
size
=
list
.
size
for
(
i
in
0
until
size
)
{
val
formatText
=
list
[
i
]
if
(
i
!=
0
)
{
stringBuilder
.
append
(
"&"
)
}
stringBuilder
.
append
(
String
.
format
(
"%s=%s"
,
formatText
.
getmKey
(),
formatText
.
getmValue
()))
}
stringBuilder
.
append
(
SESSION_KEY_DEFAULT_VALUE
)
return
digestMD5
(
stringBuilder
.
toString
())
}
//用来命名排序规则的
internal
class
SortData
:
Comparator
<
FormatText
>
{
override
fun
compare
(
lhs
:
FormatText
,
rhs
:
FormatText
):
Int
{
val
res
=
lhs
.
getmKey
().
compareTo
(
rhs
.
getmKey
())
if
(
res
==
0
)
{
return
0
}
return
if
(
res
>
0
)
-
1
else
1
}
}
/**
* 用于MD5加密
*
* @param clear 明文
* @return 密文
*/
private
fun
digestMD5
(
clear
:
String
):
String
?
{
val
hexDigits
=
charArrayOf
(
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
)
try
{
val
strTemp
=
clear
.
toByteArray
(
charset
(
"utf-8"
))
// 使用MD5创建MessageDigest对象
val
mdTemp
=
MessageDigest
.
getInstance
(
"MD5"
)
mdTemp
.
update
(
strTemp
)
val
md
=
mdTemp
.
digest
()
val
j
=
md
.
size
val
str
=
CharArray
(
j
*
2
)
var
k
=
0
for
(
b
in
md
)
{
// 将每个数(int)b进行双字节加密
str
[
k
++]
=
hexDigits
[
b
.
toInt
()
shr
4
and
0
xf
]
str
[
k
++]
=
hexDigits
[
b
.
toInt
()
and
0
xf
]
}
return
String
(
str
)
}
catch
(
e
:
Exception
)
{
return
null
}
}
/**
* 默认信任所有的证书
*/
@SuppressLint
(
"TrustAllX509TrustManager"
)
private
fun
createSSLSocketFactory
():
SSLSocketFactory
?
{
val
xtm
=
object
:
X509TrustManager
{
override
fun
checkClientTrusted
(
chain
:
Array
<
X509Certificate
>,
authType
:
String
)
{}
override
fun
checkServerTrusted
(
chain
:
Array
<
X509Certificate
>,
authType
:
String
)
{}
override
fun
getAcceptedIssuers
():
Array
<
X509Certificate
?>
{
return
arrayOfNulls
(
0
)
}
}
val
sslContext
:
SSLContext
try
{
sslContext
=
SSLContext
.
getInstance
(
"SSL"
)
sslContext
.
init
(
null
,
arrayOf
<
TrustManager
>(
xtm
),
SecureRandom
())
}
catch
(
e
:
NoSuchAlgorithmException
)
{
e
.
printStackTrace
()
return
null
}
catch
(
e
:
KeyManagementException
)
{
e
.
printStackTrace
()
return
null
}
return
sslContext
.
socketFactory
}
private
object
Holder
{
val
INSTANCE
=
PayRetrofitUtils
()
}
}
\ No newline at end of file
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/PayServices.kt
View file @
21fc5c6c
package
com.ydl.ydl_pay.http
import
com.ydl.ydl_pay.bean.*
import
com.ydl.ydl_pay.http.response.BaseResponse
import
com.ydl.ydlcommon.base.config.YDL_DOMAIN
import
com.ydl.ydlcommon.base.config.YDL_DOMAIN_JAVA
import
com.ydl.ydlcommon.data.http.BaseResponse
import
com.yidianling.ydl_pay.bean.*
import
io.reactivex.Observable
import
okhttp3.RequestBody
import
retrofit2.http.Body
import
retrofit2.http.FieldMap
import
retrofit2.http.FormUrlEncoded
import
retrofit2.http.POST
import
retrofit2.http.*
/**
* @author jiucheng
...
...
@@ -22,12 +22,14 @@ interface PayServices {
* 获取下单的信息
*/
@POST
(
"auth/Order/getOrderInfo"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
getOrderInfo
(
@Body
body
:
RequestBody
):
Observable
<
BaseResponse
<
OrderInfoBean
>>
/**
* 验证课程兑换券是否可用
*/
@POST
(
"auth/course/checkCourseCoupon"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
checkCourseCoupon
(
@Body
body
:
RequestBody
):
Observable
<
BaseResponse
<
CouponCodeInfoBean
>>
...
...
@@ -35,6 +37,7 @@ interface PayServices {
* 下单时候选择优惠券
*/
@POST
(
"auth/new_coupon/selectCoupon"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
selectCoupon
(
@Body
body
:
RequestBody
):
Observable
<
BaseResponse
<
AllCouponListBean
>>
...
...
@@ -42,6 +45,7 @@ interface PayServices {
* 创建订单
*/
@POST
(
"auth/Order/createOrder"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
createOrder
(
@Body
body
:
RequestBody
):
Observable
<
BaseResponse
<
PayOrderBean
>>
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/response/BaseResponse.java
deleted
100644 → 0
View file @
8619efbe
package
com
.
yidianling
.
ydl_pay
.
http
.
response
;
import
com.google.gson.annotations.SerializedName
;
/**
* 基础返回数据类
* Created by Dog on 2015/5/8.
*/
public
class
BaseResponse
<
T
>
{
public
int
code
;
public
String
msg
;
public
int
status
;
@SerializedName
(
"total_page"
)
public
int
totalPage
;
public
T
data
;
}
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/utils/HttpUrlUtils.java
View file @
21fc5c6c
package
com
.
yidianling
.
ydl_pay
.
http
.
utils
;
import
com.y
dl
.ydl_pay.BuildConfig
;
import
com.y
idianling
.ydl_pay.BuildConfig
;
/**
* @author jiucheng
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/http/utils/RxHttpUtils.kt
deleted
100644 → 0
View file @
8619efbe
package
com.ydl.ydl_pay.http.utils
import
com.ydl.ydl_pay.http.response.BaseResponse
import
io.reactivex.Observable
import
io.reactivex.ObservableTransformer
import
java.net.ConnectException
/**
* author : Zhangwenchao
* e-mail : zhangwch@yidianling.com
*/
object
RxHttpUtils
{
/**
* 根据返回数据,得到真正需要的数据
* 若状态码不为0,抛出接口异常
*/
@JvmStatic
fun
<
T
>
resultData
():
ObservableTransformer
<
BaseResponse
<
T
>,
T
>
{
return
ObservableTransformer
{
it
.
flatMap
{
if
(
it
.
code
==
0
)
Observable
.
just
(
it
.
data
)
else
Observable
.
error
(
Throwable
(
it
.
msg
))
}
}
}
}
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