#region Apache License Version 2.0 /*---------------------------------------------------------------- Copyright 2023 Jeffrey Su & Suzhou Senparc Network Technology Co.,Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Detail: https://github.com/JeffreySu/WeiXinMPSDK/blob/master/license.md ----------------------------------------------------------------*/ #endregion Apache License Version 2.0 /*---------------------------------------------------------------- Copyright (C) 2023 Senparc 文件名:PayNotifyJson.cs 文件功能描述:订单支付结果通知Json 创建标识:Senparc - 20210925 ----------------------------------------------------------------*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Senparc.Weixin.TenPayV3.Apis.Entities; namespace Senparc.Weixin.TenPayV3.Apis.VehicleParking { /// /// 订单支付结果通知Json /// 详细请参考微信支付官方文档 https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_8_6.shtml /// public class PayNotifyJson : ReturnJsonBase { /// /// 含参构造函数 /// /// 应用ID 调用接口提交的应用ID示例值:wxd678efh567hg6787 /// 商户号 调用接口提交的商户号示例值:1230000109 /// 商户订单号 调用接口提交的商户服务订单号示例值:1234323JKHDFE1243252 /// 微信支付订单号 微信支付系统生成的订单号。示例值:2501201407033可为null /// 服务描述 商户自定义字段,用户交易账单中对扣费服务的描述。示例值:500001 /// 订单创建时间 订单成功创建时返回,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。示例值:2017-08-26T10:43:39+08:00 /// 交易状态 交易状态:SUCCESS:支付成功ACCEPT:已接收,等待扣款PAY_FAIL:支付失败(其他原因,如银行返回失败)REFUND:转入退款示例值:SUCCESS /// 交易状态描述 对当前订单状态的描述和下一步操作的指引。示例值:支付失败,请重新下单支付可为null /// 支付完成时间 订单支付完成时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。示例值:2017-08-26T10:43:39+08:00可为null /// 付款银行 银行类型,采用字符串类型的银行标识,值列表详见银行类型。示例值:CMC可为null /// 附加数据 附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用。示例值:停车场扣费可为null /// 用户是否已还款 枚举值:Y:用户已还款N:用户未还款注意:使用此字段前需先确认bank_type字段值为BPA以及trade_state字段值为SUCCESS。示例值:Y可为null /// 交易场景 交易场景值,目前支持PARKING:车场停车场景示例值:PARKING /// 停车场景信息 trade_scene为PARKING时,返回停车场景信息可为null /// 支付者 支付者信息,详细说明见下文可为null /// 订单金额 订单金额信息,详细说明见下文 /// 优惠功能 优惠功能信息,详细说明见下文可为null public PayNotifyJson(string appid, string sp_mchid, string out_trade_no, string transaction_id, string description, string create_time, string trade_state, string trade_state_description, string success_time, string bank_type, string attach, string user_repaid, string trade_scene, Parking_Info parking_info, Payer payer, Amount amount, Promotion_Detail[] promotion_detail) { this.appid = appid; this.sp_mchid = sp_mchid; this.out_trade_no = out_trade_no; this.transaction_id = transaction_id; this.description = description; this.create_time = create_time; this.trade_state = trade_state; this.trade_state_description = trade_state_description; this.success_time = success_time; this.bank_type = bank_type; this.attach = attach; this.user_repaid = user_repaid; this.trade_scene = trade_scene; this.parking_info = parking_info; this.payer = payer; this.amount = amount; this.promotion_detail = promotion_detail; } /// /// 无参构造函数 /// public PayNotifyJson() { } /// /// 应用ID /// 调用接口提交的应用ID /// 示例值:wxd678efh567hg6787 /// public string appid { get; set; } /// /// 商户号 /// 调用接口提交的商户号 /// 示例值:1230000109 /// public string sp_mchid { get; set; } /// /// 商户订单号 /// 调用接口提交的商户服务订单号 /// 示例值:1234323JKHDFE1243252 /// public string out_trade_no { get; set; } /// /// 微信支付订单号 /// 微信支付系统生成的订单号。 /// 示例值:2501201407033 /// 可为null /// public string transaction_id { get; set; } /// /// 服务描述 /// 商户自定义字段,用户交易账单中对扣费服务的描述。 /// 示例值:500001 /// public string description { get; set; } /// /// 订单创建时间 /// 订单成功创建时返回,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。 /// 示例值:2017-08-26T10:43:39+08:00 /// public string create_time { get; set; } /// /// 交易状态 /// 交易状态: SUCCESS:支付成功 ACCEPT:已接收,等待扣款 PAY_FAIL:支付失败(其他原因,如银行返回失败) REFUND:转入退款 /// 示例值:SUCCESS /// public string trade_state { get; set; } /// /// 交易状态描述 /// 对当前订单状态的描述和下一步操作的指引。 /// 示例值:支付失败,请重新下单支付 /// 可为null /// public string trade_state_description { get; set; } /// /// 支付完成时间 /// 订单支付完成时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。 /// 示例值:2017-08-26T10:43:39+08:00 /// 可为null /// public string success_time { get; set; } /// /// 付款银行 /// 银行类型,采用字符串类型的银行标识,值列表详见银行类型。 /// 示例值:CMC /// 可为null /// public string bank_type { get; set; } /// /// 附加数据 /// 附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用。 /// 示例值:停车场扣费 /// 可为null /// public string attach { get; set; } /// /// 用户是否已还款 /// 枚举值: Y:用户已还款 N:用户未还款 注意:使用此字段前需先确认bank_type字段值为BPA以及 trade_state字段值为SUCCESS。 /// 示例值:Y /// 可为null /// public string user_repaid { get; set; } /// /// 交易场景 /// 交易场景值,目前支持 PARKING:车场停车场景 /// 示例值:PARKING /// public string trade_scene { get; set; } /// /// 停车场景信息 /// trade_scene为PARKING时,返回停车场景信息 /// 可为null /// public Parking_Info parking_info { get; set; } /// /// 支付者 /// 支付者信息,详细说明见下文 /// 可为null /// public Payer payer { get; set; } /// /// 订单金额 /// 订单金额信息,详细说明见下文 /// public Amount amount { get; set; } /// /// 优惠功能 /// 优惠功能信息,详细说明见下文 /// 可为null /// public Promotion_Detail[] promotion_detail { get; set; } #region 子数据类型 public class Parking_Info { /// /// 含参构造函数 /// /// 停车入场id 车主服务为商户分配的入场id,商户通过入场通知接口获取入场id示例值:5K8264ILTKCH16CQ250 /// 车牌号 车牌号,仅包括省份+车牌,不包括特殊字符。示例值:粤B888888 /// 车牌颜色 车牌颜色,枚举值:BLUE:蓝色GREEN:绿色YELLOW:黄色BLACK:黑色WHITE:白色LIMEGREEN:黄绿色示例值:BLUE /// 入场时间 用户入场时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。示例值:2017-08-26T10:43:39+08:00 /// 出场时间 用户出场时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。示例值:2017-08-26T10:43:39+08:00 /// 停车场名称 所在停车位车场的名称示例值:欢乐海岸停车场 /// 计费时长 计费的时间长,单位为秒示例值:3600 /// 停车场设备id 停车场设备id示例值:12321 public Parking_Info(string parking_id, string plate_number, string plate_color, string start_time, string end_time, string parking_name, int charging_duration, string device_id) { this.parking_id = parking_id; this.plate_number = plate_number; this.plate_color = plate_color; this.start_time = start_time; this.end_time = end_time; this.parking_name = parking_name; this.charging_duration = charging_duration; this.device_id = device_id; } /// /// 无参构造函数 /// public Parking_Info() { } /// /// 停车入场id /// 车主服务为商户分配的入场id,商户通过入场通知接口获取入场id /// 示例值:5K8264ILTKCH16CQ250 /// public string parking_id { get; set; } /// /// 车牌号 /// 车牌号,仅包括省份+车牌,不包括特殊字符。 /// 示例值:粤B888888 /// public string plate_number { get; set; } /// /// 车牌颜色 /// 车牌颜色,枚举值: BLUE:蓝色 GREEN:绿色 YELLOW:黄色 BLACK:黑色 WHITE:白色 LIMEGREEN:黄绿色 /// 示例值:BLUE /// public string plate_color { get; set; } /// /// 入场时间 /// 用户入场时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。 /// 示例值:2017-08-26T10:43:39+08:00 /// public string start_time { get; set; } /// /// 出场时间 /// 用户出场时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。 /// 示例值:2017-08-26T10:43:39+08:00 /// public string end_time { get; set; } /// /// 停车场名称 /// 所在停车位车场的名称 /// 示例值:欢乐海岸停车场 /// public string parking_name { get; set; } /// /// 计费时长 /// 计费的时间长,单位为秒 /// 示例值:3600 /// public int charging_duration { get; set; } /// /// 停车场设备id /// 停车场设备id /// 示例值:12321 /// public string device_id { get; set; } } public class Payer { /// /// 含参构造函数 /// /// 用户在服务商的标识 用户在服务商的标识示例值:oUpF8uMuAJOM2pxb1Q public Payer(string openid) { this.openid = openid; } /// /// 无参构造函数 /// public Payer() { } /// /// 用户在服务商的标识 /// 用户在服务商的标识 /// 示例值:oUpF8uMuAJOM2pxb1Q /// public string openid { get; set; } } public class Amount { /// /// 含参构造函数 /// /// 订单金额 订单总金额,单位为分,只能为整数示例值:888 /// 货币类型 符合ISO4217标准的三位字母代码,目前只支持人民币:CNY示例值:CNY可为null /// 用户实际支付金额 用户实际支付金额,单位为分,只能为整数示例值:888可为null /// 折扣 订单折扣示例值:100可为null public Amount(ulong total, string currency, ulong payer_total, ulong discount_total) { this.total = total; this.currency = currency; this.payer_total = payer_total; this.discount_total = discount_total; } /// /// 无参构造函数 /// public Amount() { } /// /// 订单金额 /// 订单总金额,单位为分,只能为整数 /// 示例值:888 /// public ulong total { get; set; } /// /// 货币类型 /// 符合ISO 4217标准的三位字母代码,目前只支持人民币:CNY /// 示例值:CNY /// 可为null /// public string currency { get; set; } /// /// 用户实际支付金额 /// 用户实际支付金额,单位为分,只能为整数 /// 示例值:888 /// 可为null /// public ulong payer_total { get; set; } /// /// 折扣 /// 订单折扣 /// 示例值:100 /// 可为null /// public ulong discount_total { get; set; } } public class Promotion_Detail { /// /// 含参构造函数 /// /// 券ID 券或者立减优惠id示例值:109519 /// 优惠名称 优惠名称。示例值:单品惠-6可为null /// 优惠范围 枚举值GLOBAL:全场代金券SINGLE:单品优惠示例值:GLOBAL可为null /// 优惠类型 枚举值:CASH:充值NOCASH:预充值示例值:CASH可为null /// 优惠券面额 用户享受优惠的金额。示例值:5 /// 活动ID 在微信商户后台配置的批次ID。示例值:931386可为null /// 微信出资 特指由微信支付商户平台创建的优惠,出资金额等于本项优惠总金额,单位为分。示例值:0可为null /// 商户出资 特指商户自己创建的优惠,出资金额等于本项优惠总金额,单位为分。示例值:0可为null /// 其他出资 其他出资方出资金额,单位为分。示例值:5可为null /// 优惠币种 CNY:人民币,境内商户号仅支持人民币。示例值:CNY可为null public Promotion_Detail(string coupon_id, string name, string scope, string type, ulong amount, string activity_id, ulong wechatpay_contribute, ulong merchant_contribute, ulong other_contribute, string currency) { this.coupon_id = coupon_id; this.name = name; this.scope = scope; this.type = type; this.amount = amount; this.activity_id = activity_id; this.wechatpay_contribute = wechatpay_contribute; this.merchant_contribute = merchant_contribute; this.other_contribute = other_contribute; this.currency = currency; } /// /// 无参构造函数 /// public Promotion_Detail() { } /// /// 券ID /// 券或者立减优惠id /// /// 示例值:109519 /// public string coupon_id { get; set; } /// /// 优惠名称 /// 优惠名称。 /// /// 示例值:单品惠-6 /// 可为null /// public string name { get; set; } /// /// 优惠范围 /// 枚举值 GLOBAL:全场代金券 SINGLE:单品优惠 /// 示例值:GLOBAL /// /// 可为null /// public string scope { get; set; } /// /// 优惠类型 /// 枚举值: CASH:充值 NOCASH:预充值 /// /// 示例值:CASH /// 可为null /// public string type { get; set; } /// /// 优惠券面额 /// 用户享受优惠的金额。 /// /// 示例值:5 /// public ulong amount { get; set; } /// /// 活动ID /// 在微信商户后台配置的批次ID。 /// /// 示例值:931386 /// 可为null /// public string activity_id { get; set; } /// /// 微信出资 /// 特指由微信支付商户平台创建的优惠,出资金额等于本项优惠总金额,单位为分。 /// /// 示例值:0 /// 可为null /// public ulong wechatpay_contribute { get; set; } /// /// 商户出资 /// 特指商户自己创建的优惠,出资金额等于本项优惠总金额,单位为分。 /// /// 示例值:0 /// 可为null /// public ulong merchant_contribute { get; set; } /// /// 其他出资 /// 其他出资方出资金额,单位为分。 /// /// 示例值:5 /// 可为null /// public ulong other_contribute { get; set; } /// /// 优惠币种 /// CNY:人民币,境内商户号仅支持人民币。 /// 示例值:CNY /// 可为null /// public string currency { get; set; } } #endregion } }