package com.yidian.shenghuoquan.buserorder.dto

import com.google.gson.annotations.SerializedName

/**
 * 订单支付请求参数
 */
data class OrderPayReqDto(
  @SerializedName("user_id")
  val userId: String? = null,// 用户id
  @SerializedName("appid")
  val appId: String? = null,// 应用id："merchant-c"
  @SerializedName("order_id")
  val orderId: String? = null,// 订单号
  @SerializedName("pay_method_id")
  val payMethodId: Int? = null,// 支付方式id: 101:支付宝，102：微信支付
)

/**
 * 订单支付响应
 */
data class PingPayResult(
    @SerializedName("k")
    val k: String? = null,
    @SerializedName("v")
    val v: V? = null
)

data class V(
    @SerializedName("actual_amount")
    val actualAmount: Int? = null,
    @SerializedName("amount")
    val amount: Int? = null,
    @SerializedName("amount_paid")
    val amountPaid: Int? = null,
    @SerializedName("amount_refunded")
    val amountRefunded: Int? = null,
    @SerializedName("app")
    val app: String? = null,
    @SerializedName("available_balance")
    val availableBalance: Int? = null,
    @SerializedName("available_methods")
    val availableMethods: List<String>? = null,
    @SerializedName("body")
    val body: String? = null,
    @SerializedName("charge")
    val charge: String? = null,
    @SerializedName("charge_essentials")
    val chargeEssentials: ChargeEssentials? = null,
    @SerializedName("charges")
    val charges: Charges? = null,
    @SerializedName("client_ip")
    val clientIp: String? = null,
    @SerializedName("coupon")
    val coupon: Any? = null,
    @SerializedName("coupon_amount")
    val couponAmount: Int? = null,
    @SerializedName("created")
    val created: Int? = null,
    @SerializedName("currency")
    val currency: String? = null,
    @SerializedName("description")
    val description: Any? = null,
    @SerializedName("id")
    val id: String? = null,
    @SerializedName("livemode")
    val livemode: Boolean? = null,
    @SerializedName("merchant_order_no")
    val merchantOrderNo: String? = null,
    @SerializedName("metadata")
    val metadata: MetadataX? = null,
    @SerializedName("object")
    val objectX: String? = null,
    @SerializedName("paid")
    val paid: Boolean? = null,
    @SerializedName("receipt_app")
    val receiptApp: String? = null,
    @SerializedName("refunded")
    val refunded: Boolean? = null,
    @SerializedName("service_app")
    val serviceApp: String? = null,
    @SerializedName("status")
    val status: String? = null,
    @SerializedName("subject")
    val subject: String? = null,
    @SerializedName("time_expire")
    val timeExpire: Int? = null,
    @SerializedName("time_paid")
    val timePaid: Any? = null,
    @SerializedName("uid")
    val uid: String? = null
)

data class ChargeEssentials(
    @SerializedName("channel")
    val channel: String? = null,
    @SerializedName("credential")
    val credential: Credential? = null,
    @SerializedName("extra")
    val extra: List<Any>? = null,
    @SerializedName("failure_code")
    val failureCode: Any? = null,
    @SerializedName("failure_msg")
    val failureMsg: Any? = null,
    @SerializedName("transaction_no")
    val transactionNo: Any? = null
)

data class Charges(
    @SerializedName("data")
    val data: List<Data>? = null,
    @SerializedName("has_more")
    val hasMore: Boolean? = null,
    @SerializedName("object")
    val objectX: String? = null,
    @SerializedName("url")
    val url: String? = null
)

data class MetadataX(
    @SerializedName("goods_sku_id")
    val goodsSkuId: List<String>? = null,
    @SerializedName("order_id")
    val orderId: String? = null,
    @SerializedName("order_item_id")
    val orderItemId: List<String>? = null
)

data class Credential(
    @SerializedName("object")
    val objectX: String? = null,
    @SerializedName("wx")
    val wx: Wx? = null
)

data class Wx(
    @SerializedName("appId")
    val appId: String? = null,
    @SerializedName("nonceStr")
    val nonceStr: String? = null,
    @SerializedName("packageValue")
    val packageValue: String? = null,
    @SerializedName("partnerId")
    val partnerId: String? = null,
    @SerializedName("prepayId")
    val prepayId: String? = null,
    @SerializedName("sign")
    val sign: String? = null,
    @SerializedName("timeStamp")
    val timeStamp: Int? = null
)

data class Data(
    @SerializedName("amount")
    val amount: Int? = null,
    @SerializedName("amount_refunded")
    val amountRefunded: Int? = null,
    @SerializedName("amount_settle")
    val amountSettle: Int? = null,
    @SerializedName("app")
    val app: String? = null,
    @SerializedName("body")
    val body: String? = null,
    @SerializedName("channel")
    val channel: String? = null,
    @SerializedName("client_ip")
    val clientIp: String? = null,
    @SerializedName("created")
    val created: Int? = null,
    @SerializedName("credential")
    val credential: CredentialX? = null,
    @SerializedName("currency")
    val currency: String? = null,
    @SerializedName("description")
    val description: Any? = null,
    @SerializedName("extra")
    val extra: List<Any>? = null,
    @SerializedName("failure_code")
    val failureCode: Any? = null,
    @SerializedName("failure_msg")
    val failureMsg: Any? = null,
    @SerializedName("id")
    val id: String? = null,
    @SerializedName("livemode")
    val livemode: Boolean? = null,
    @SerializedName("metadata")
    val metadata: Metadata? = null,
    @SerializedName("object")
    val objectX: String? = null,
    @SerializedName("order_no")
    val orderNo: String? = null,
    @SerializedName("paid")
    val paid: Boolean? = null,
    @SerializedName("refunded")
    val refunded: Boolean? = null,
    @SerializedName("refunds")
    val refunds: Any? = null,
    @SerializedName("reversed")
    val reversed: Boolean? = null,
    @SerializedName("subject")
    val subject: String? = null,
    @SerializedName("time_expire")
    val timeExpire: Int? = null,
    @SerializedName("time_paid")
    val timePaid: Any? = null,
    @SerializedName("time_settle")
    val timeSettle: Any? = null,
    @SerializedName("transaction_no")
    val transactionNo: Any? = null
)

data class CredentialX(
    @SerializedName("object")
    val objectX: String? = null,
    @SerializedName("wx")
    val wx: WxX? = null
)

data class Metadata(
    @SerializedName("goods_sku_id")
    val goodsSkuId: List<String>? = null,
    @SerializedName("order_id")
    val orderId: String? = null,
    @SerializedName("order_item_id")
    val orderItemId: List<String>? = null
)

data class WxX(
    @SerializedName("appId")
    val appId: String? = null,
    @SerializedName("nonceStr")
    val nonceStr: String? = null,
    @SerializedName("packageValue")
    val packageValue: String? = null,
    @SerializedName("partnerId")
    val partnerId: String? = null,
    @SerializedName("prepayId")
    val prepayId: String? = null,
    @SerializedName("sign")
    val sign: String? = null,
    @SerializedName("timeStamp")
    val timeStamp: Int? = null
)
