|
@@ -32,9 +32,6 @@ import com.hdl.xl.vmodel.LotsDetailsVModel
|
|
|
import com.hdl.xl.vmodel.TibetanDetailsVModel
|
|
|
import com.hwangjr.rxbus.annotation.Subscribe
|
|
|
import com.hwangjr.rxbus.annotation.Tag
|
|
|
-import com.pay.paytypelibrary.base.OnPayResultListener
|
|
|
-import com.pay.paytypelibrary.base.OrderInfo
|
|
|
-import com.pay.paytypelibrary.base.PayUtil
|
|
|
import com.qmuiteam.qmui.kotlin.onClick
|
|
|
import com.ysnows.base.utils.B
|
|
|
import com.ysnows.base.utils.UiSwitch
|
|
@@ -100,21 +97,9 @@ class LotsDetailsActivity : MBActivity<LotsDetailsVModel, ActivityLotsDetailsBin
|
|
|
|
|
|
vm.bean.observe(this) {
|
|
|
|
|
|
- var amount = it.pay.body.totalAmount.toFloat() * 0.01
|
|
|
- var name = User.get()?.true_name
|
|
|
- var certNo = User.get()?.id_card
|
|
|
- //创建用户支付订单信息
|
|
|
- //amount:订单金额
|
|
|
- //orderNumber:商户订单号
|
|
|
- //createTime: 订单创建时间
|
|
|
- //goodsName:商品名称
|
|
|
- //name:真实姓名
|
|
|
- //certNo:身份证号 //6888803045944 16938552
|
|
|
- cashierPay("MD5", "16938552", "06030001", amount.toString(),
|
|
|
- it.pay.body.orderCode, it.pay.head.respTime, "象链数购买藏品", name!!, certNo!!)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ UiSwitch.bundle(context(), WebViewActivity::class.java,
|
|
|
+ B().putString("url", it.pay_url)
|
|
|
+ .ok())
|
|
|
|
|
|
}
|
|
|
|
|
@@ -363,148 +348,5 @@ class LotsDetailsActivity : MBActivity<LotsDetailsVModel, ActivityLotsDetailsBin
|
|
|
}
|
|
|
|
|
|
|
|
|
- //"MD5","16938552", "06030001"
|
|
|
- //amount:订单金额
|
|
|
- //orderNumber:商户订单号
|
|
|
- //createTime: 订单创建时间
|
|
|
- //goodsName:商品名称
|
|
|
- //name:真实姓名
|
|
|
- //certNo:身份证号
|
|
|
- private fun cashierPay(
|
|
|
- signType: String, merNo: String, productCode: String, amount: String,
|
|
|
- orderNumber: String, createTime: String, goodsName: String, name: String,
|
|
|
- certNo: String,
|
|
|
- ) {
|
|
|
-
|
|
|
-
|
|
|
- val orderJson = JSONObject()
|
|
|
- try {
|
|
|
- orderJson.put("version", BuildConfig.VERSION_NAME)
|
|
|
- orderJson.put("sign_type", signType)
|
|
|
- orderJson.put("mer_no", merNo) // 商户编号
|
|
|
- orderJson.put("mer_key", "Xx52CDtWRH1etGu4IfFEB4OeRrnbr+EUd5VO7cBQFCqxfDl5FJcJaUjKJbHapVsyxSODBEbssNk=") // 商户密钥
|
|
|
- orderJson.put("mer_order_no", orderNumber) // 商户订单号
|
|
|
- orderJson.put("create_time", createTime) // 订单创建时间
|
|
|
- orderJson.put("expire_time", AppUtils.getOrderExpireTime()) // 订单失效时间
|
|
|
- orderJson.put("order_amt", amount) // 订单金额
|
|
|
- orderJson.put("notify_url", "http://sandcash/notify") // 回调地址
|
|
|
- orderJson.put("return_url", "https://www.taobao.com") // 支付完成后跳转到商户页面 一键快捷不能传空
|
|
|
- orderJson.put("create_ip", "172_12_12_12") // 客户端的真实IP
|
|
|
- orderJson.put("goods_name", goodsName) // 商品名称
|
|
|
- orderJson.put("store_id", "100001") // 门店号
|
|
|
- orderJson.put("product_code", productCode) // 支付产品编码
|
|
|
- orderJson.put("clear_cycle", "0") // 清算模式
|
|
|
- val payExtraJson = JSONObject()
|
|
|
-// if (!TextUtils.isEmpty(cardNo)) {
|
|
|
-// payExtraJson.put("cardNo", cardNo) //付款卡号
|
|
|
-// }
|
|
|
- orderJson.put("pay_extra", payExtraJson.toString())
|
|
|
-
|
|
|
- orderJson.put("accsplit_flag", "NO") // 分账标识 NO无分账,YES有分账
|
|
|
- orderJson.put("jump_scheme", "tibetan://spay") //参数值可以自定义,和android:scheme、android:host保持一致
|
|
|
- orderJson.put("activity_no", "") //营销活动编码
|
|
|
- orderJson.put("benefit_amount", "") //优惠金额
|
|
|
- orderJson.put("extend", "123") //扩展字段,非必传
|
|
|
- orderJson.put("limit_pay", "5") //微信传1屏蔽信用卡,支付宝传5屏蔽部分信用卡以及花呗,支付宝传4屏蔽花呗,支付宝传1屏蔽部分信用卡,银联不支持屏蔽 不参与签名
|
|
|
- // orderJson.put("channel_mid", ""); //非必传
|
|
|
- val extendParamJson = JSONObject()
|
|
|
- val payerVerificationInfoJson = JSONObject()
|
|
|
- payerVerificationInfoJson.put("needCheckFlag", "0")
|
|
|
- payerVerificationInfoJson.put("name", name) //姓名
|
|
|
- payerVerificationInfoJson.put("certNo", certNo) //证件号
|
|
|
- payerVerificationInfoJson.put("certType", "01")
|
|
|
- extendParamJson.put("payerVerificationInfo", payerVerificationInfoJson.toString())
|
|
|
- orderJson.put("extend_params", extendParamJson.toString()) //支付宝实名信息字段,非必传,不参与签名
|
|
|
- val signKey: String
|
|
|
- signKey = if ("6888800012098" == merNo) {
|
|
|
- "PZdBctMl2c0ma9b9+25FBgH2twQBTmhzn/qNSS6xANEGMqBi/S9IhyhDi1aBb1H9gxmcvjxmMk305pcUaISEmjm6gacvTBPHj0zSgRk//7ZYF0Go/X03BZt5mTdcmslgH81l03NMtaRixuz+UKFTiw=="
|
|
|
- } else {
|
|
|
- "UZfTHiut04dIJSOqwT2KVn6Bf4OBGBrUvjaUibKc5UFinTz/EY8j/5P1nOAZxsgRJKC6qKPhB7NJAPxc7RyrM8BDgM+UhiKrzR/MvvQhFMgTDfQFoDZYEYW2z+pi4zany5c0bz6FNidixuz+UKFTiw=="
|
|
|
- }
|
|
|
-
|
|
|
- //计算签名
|
|
|
- val signMap: MutableMap<String, String> = HashMap()
|
|
|
- signMap["version"] = orderJson.getString("version")
|
|
|
- signMap["mer_no"] = orderJson.getString("mer_no")
|
|
|
- if ("MD5" == signType) {
|
|
|
- signMap["mer_key"] = orderJson.getString("mer_key")
|
|
|
- }
|
|
|
- signMap["mer_order_no"] = orderJson.getString("mer_order_no")
|
|
|
- signMap["create_time"] = orderJson.getString("create_time")
|
|
|
- signMap["order_amt"] = orderJson.getString("order_amt")
|
|
|
- signMap["notify_url"] = orderJson.getString("notify_url")
|
|
|
- signMap["return_url"] = orderJson.getString("return_url")
|
|
|
- signMap["create_ip"] = orderJson.getString("create_ip")
|
|
|
- signMap["store_id"] = orderJson.getString("store_id")
|
|
|
- signMap["pay_extra"] = orderJson.getString("pay_extra")
|
|
|
- signMap["accsplit_flag"] = orderJson.getString("accsplit_flag")
|
|
|
- signMap["sign_type"] = orderJson.getString("sign_type")
|
|
|
- signMap["mer_order_no"] = orderJson.getString("mer_order_no")
|
|
|
- signMap["create_time"] = orderJson.getString("create_time")
|
|
|
- signMap["order_amt"] = orderJson.getString("order_amt")
|
|
|
- signMap["notify_url"] = orderJson.getString("notify_url")
|
|
|
- signMap["return_url"] = orderJson.getString("return_url")
|
|
|
- signMap["create_ip"] = orderJson.getString("create_ip")
|
|
|
- signMap["store_id"] = orderJson.getString("store_id")
|
|
|
- signMap["pay_extra"] = orderJson.getString("pay_extra")
|
|
|
- signMap["accsplit_flag"] = orderJson.getString("accsplit_flag")
|
|
|
- signMap["sign_type"] = orderJson.getString("sign_type")
|
|
|
- if (!TextUtils.isEmpty(orderJson.optString("activity_no"))) {
|
|
|
- signMap["activity_no"] = orderJson.getString("activity_no")
|
|
|
- }
|
|
|
- if (!TextUtils.isEmpty(orderJson.optString("benefit_amount"))) {
|
|
|
- signMap["benefit_amount"] = orderJson.getString("benefit_amount")
|
|
|
- }
|
|
|
- if (!TextUtils.isEmpty(orderJson.optString("extend"))) {
|
|
|
- signMap["extend"] = orderJson.getString("extend")
|
|
|
- }
|
|
|
- if (!TextUtils.isEmpty(orderJson.optString("channel_mid"))) {
|
|
|
- signMap["channel_mid"] = orderJson.getString("channel_mid")
|
|
|
- }
|
|
|
- val list = MD5Utils.sortMap(signMap)
|
|
|
- val signBuilder = StringBuilder()
|
|
|
- for ((key, value) in list) {
|
|
|
- signBuilder.append(key)
|
|
|
- signBuilder.append("=")
|
|
|
- signBuilder.append(value)
|
|
|
- signBuilder.append("&")
|
|
|
- }
|
|
|
-
|
|
|
- signBuilder.append("key")
|
|
|
- signBuilder.append("=")
|
|
|
- signBuilder.append(signKey)
|
|
|
- orderJson.put("sign", MD5Utils.getMD5(signBuilder.toString()).toUpperCase()) // MD5签名结果
|
|
|
-
|
|
|
- } catch (e: Exception) {
|
|
|
- e.stackTrace
|
|
|
- }
|
|
|
-
|
|
|
-// • PayUtil.CashierPaySingle
|
|
|
-// 传入单个支付产品,直接拉起支付,无过渡页,调用方需要自己添加进度加载框;
|
|
|
-// 在Listener的onSuccess拉起支付(支付宝除外)。
|
|
|
-//
|
|
|
-// • PayUtil.CashierPayMulti
|
|
|
-// 传入多个支付产品,也可传入单个,跳转sdk自带的收银台页面;
|
|
|
-// 在onActivityResult拉起支付(支付宝除外)。
|
|
|
-//
|
|
|
-// 调用方有自己的收银台页面时建议使用Single,否则使用Multi。
|
|
|
-// 两个API二选一即可。 (demo是为了演示用法,所以两种都写了)
|
|
|
-
|
|
|
-
|
|
|
- PayUtil.CashierPaySingle(this@LotsDetailsActivity, orderJson.toString(), object : OnPayResultListener {
|
|
|
- override fun onSuccess(orderInfo: OrderInfo) {
|
|
|
- //支付宝、H5快捷、一键快捷、快捷充值、云账户,支付完成不走这里!
|
|
|
- Toast.makeText(this@LotsDetailsActivity, "支付成功", Toast.LENGTH_LONG).show()
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- override fun onError(retMsg: String) {
|
|
|
- Toast.makeText(this@LotsDetailsActivity, retMsg, Toast.LENGTH_LONG).show()
|
|
|
-
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
}
|