/*----------------------------------------------------------------
Copyright (C) 2019 Senparc
文件名:InvoicePlatformData.cs
文件功能描述:开票平台接口post数据
创建标识:Senparc - 20180930
----------------------------------------------------------------*/
using System.Collections.Generic;
using Senparc.Weixin.MP.AdvancedAPIs.GroupMessage;
namespace Senparc.Weixin.MP.AdvancedAPIs
{
///
/// 发票模板对象
///
public class InvoiceInfo
{
///
/// 发票卡券模板基础信息
///
public InvoiceBaseInfo base_info { get; set; }
///
/// 收款方(开票方)全称,显示在发票详情内。故建议一个收款方对应一个发票卡券模板
///
public string payee { get; set; }
///
/// 发票类型
///
public string type { get; set; }
}
///
/// 发票卡券模板基础信息
///
public class InvoiceBaseInfo
{
///
/// 发票商家 LOGO
///
public string logo_url { get; set; }
///
/// 收款方(显示在列表),上限为 9 个汉字,建议填入商户简称
///
public string title { get; set; }
///
/// 开票平台自定义入口名称,与 custom_url 字段共同使用,长度限制在 5 个汉字内
///
public string custom_url_name { get; set; }
///
/// 开票平台自定义入口跳转外链的地址链接 , 发票外跳的链接会带有发票参数,用于标识是从哪张发票跳出的链接
///
public string custom_url { get; set; }
///
/// 显示在入口右侧的 tips ,长度限制在 6 个汉字内
///
public string custom_url_sub_title { get; set; }
///
/// 营销场景的自定义入口
///
public string promotion_url_name { get; set; }
///
/// 入口跳转外链的地址链接,发票外跳的链接会带有发票参数,用于标识是从那张发票跳出的链接
///
public string promotion_url { get; set; }
///
/// 显示在入口右侧的 tips ,长度限制在 6 个汉字内
///
public string promotion_url_sub_title { get; set; }
}
///
/// 将电子发票卡券插入用户卡包数据
///
public class InsertCardToBagData
{
///
/// 发票order_id,既商户给用户授权开票的订单号
///
public string order_id { get; set; }
///
/// 发票card_id
///
public string card_id { get; set; }
///
/// 该订单号授权时使用的appid,一般为商户appid
///
public string appid { get; set; }
///
/// 发票具体内容
///
public CardExtInfo card_ext { get; set; }
}
///
/// 发票具体内容
///
public class CardExtInfo
{
///
/// 随机字符串,防止重复
///
public string nonce_str { get; set; }
///
/// 用户信息结构体
///
public UserCard user_card { get; set; }
}
///
/// 用户信息结构体
///
public class UserCard
{
public InvoicePlatformUserData invoice_user_data { get; set; }
}
///
/// 发票信息基础公用信息(开票平台,报销方)
///
public abstract class InvoiceBaseUseData
{
///
/// 发票的金额,以分为单位
///
public int fee { get; set; }
///
/// 发票的抬头
///
public string title { get; set; }
///
/// 发票的开票时间,为10位时间戳
///
public int billing_time { get; set; }
///
/// 发票的发票代码
///
public string billing_no { get; set; }
///
/// 发票的发票号码
///
public string billing_code { get; set; }
///
/// 商品详情结构
///
public List info { get; set; }
///
/// 不含税金额,以分为单位
///
public int fee_without_tax { get; set; }
///
/// 税额,以分为单位
///
public int tax { get; set; }
///
/// 校验码,发票pdf右上角,开票日期下的校验码
///
public string check_code { get; set; }
///
/// 购买方纳税人识别号
///
public string buyer_number { get; set; }
///
/// 购买方地址、电话
///
public string buyer_address_and_phone { get; set; }
///
/// 购买方开户行及账号
///
public string buyer_bank_account { get; set; }
///
/// 销售方纳税人识别号
///
public string seller_number { get; set; }
///
/// 销售方地址、电话
///
public string seller_address_and_phone { get; set; }
///
/// 销售方开户行及账号
///
public string seller_bank_account { get; set; }
///
/// 备注,发票右下角处
///
public string remarks { get; set; }
///
/// 收款人,发票左下角处
///
public string cashier { get; set; }
///
/// 开票人,发票下方处
///
public string maker { get; set; }
}
///
/// 开票平台将电子发票卡券插入用户卡包时的发票信息
///
public class InvoicePlatformUserData: InvoiceBaseUseData
{
///
/// 发票pdf文件上传到微信发票平台后,会生成一个发票
///
public string s_pdf_media_id { get; set; }
///
/// 其它消费附件的PDF
///
public string s_trip_pdf_media_id { get; set; }
}
///
/// 报销方查询报销发票时的发票信息
///
public class InvoiceReimburseUserData : InvoiceBaseUseData
{
///
/// 这张发票对应的PDF_URL
///
public string pdf_url { get; set; }
///
/// 其它消费凭证附件对应的URL,如行程单、水单等
///
public string trip_pdf_url { get; set; }
///
/// 发票报销状态,与对应
///
public string reimburse_status { get; set; }
///
/// 尝试转换为对应枚举,如果转换失败,则返回null
///
public Reimburse_Status? Status
{
get
{
#if !NET35
if (System.Enum.TryParse(this.reimburse_status, out Reimburse_Status status))
{
return status;
}
#else
try
{
return (Reimburse_Status)System.Enum.Parse(typeof(Reimburse_Status), this.reimburse_status);
}
catch { }
#endif
return null;
}
}
}
///
/// 商品详情结构
///
public class ProjectInfo
{
///
/// 项目的名称
///
public string name { get; set; }
///
/// 项目的数量
///
public int num { get; set; }
///
/// 项目的单位
///
public string unit { get; set; }
///
/// 项目的单价
///
public int price { get; set; }
}
///
/// 单张发票
///
public class InvoiceItem
{
///
/// 发票卡券的 card_id
///
public string card_id { get; set; }
///
/// 发票卡券的加密 code ,和 card_id 共同构成一张发票卡券的唯一标识
///
public string encrypt_code { get; set; }
}
}