using Alipay.EasySDK.Kernel; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Newtonsoft.Json; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using ZeroD.Util; namespace LifePayment.Domain { public class AlipayInterfaceManager : AlipayApiClient, IAlipayInterfaceManager { private Config _config; public AlipayInterfaceManager(IOptionsMonitor<Config> optionsMonitor, ILogger<AlipayInterfaceManager> logger) : base(optionsMonitor, logger) { _config = optionsMonitor.CurrentValue; } /// <summary> /// 支付å®ç”¨æˆ·åè®®ç¾çº¦æŽ¥å£ /// 支æŒç”¨æˆ·åœ¨æ”¯ä»˜å®é¡µé¢å®Œæˆæ”¯ä»˜å®å议的ç¾çº¦ï¼Œç›®å‰æ”¯æŒæ”¯ä»˜å®é’±åŒ…H5页é¢ç¾çº¦ã€æ‰«ç ç¾çº¦ç‰æ–¹å¼ã€‚ /// æ¤æŽ¥å£å¹¶éžç›´æŽ¥è°ƒç”¨çš„æŽ¥å£ï¼Œéœ€æ‹¼æŽ¥è·³è½¬é“¾æŽ¥å”¤èµ·ï¼Œå…·ä½“æ–¹å¼è§ä¸‹æ–‡â€œæ— 线端唤起ç¾çº¦è¯´æ˜Žâ€ /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<UserAgreementPageSignResponse> UserAgreementPageSign(UserAgreementPageSignInput input) { return await base.PageRequest<UserAgreementPageSignInput, UserAgreementPageSignResponse>(input, AlipayApiConstant.UserAgreementPageSign, _config.NotifyUrl + "/api/AliPayNotify/NotifyOrderChanged ", "GET"); } /// <summary> /// 支付å®ç”¨æˆ·åè®®æŸ¥è¯¢æŽ¥å£ /// 人资å议授æƒç¾çº¦æŸ¥è¯¢ /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<UserAgreementQueryResponse> UserAgreementQuery(UserAgreementQueryInput input) { return await base.Request<UserAgreementQueryInput, UserAgreementQueryResponse>(input, AlipayApiConstant.UserAgreementQuery); } /// <summary> /// 支付å®ç”¨æˆ·åè®®è§£çº¦æŽ¥å£ /// 人资å议解约 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<AlipayBaseOutput> UserAgreementUnsign(UserAgreementUnsignInput input) { return await base.Request<UserAgreementUnsignInput, AlipayBaseOutput>(input, AlipayApiConstant.UserAgreementUnsign); } /// <summary> /// 资金记账本开通 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<FundAccountbookCreateResponse> FundAccountbookCreate(FundAccountbookCreateInput input) { return await base.Request<FundAccountbookCreateInput, FundAccountbookCreateResponse>(input, AlipayApiConstant.FundAccountBookCreate); } /// <summary> /// 查询资金记账本的å¯ç”¨é‡‘é¢ç‰ä¿¡æ¯ /// 基于用户授æƒå议,平å°å¯é€šè¿‡åŽå°æœåŠ¡æŽ¥å£ï¼Œä¸ºå¹³å°ä¸Šçš„用户æä¾›èµ„é‡‘è®°è´¦æœ¬ç›¸å…³ä¿¡æ¯æŸ¥è¯¢æœåŠ¡ /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<FundAccountBookQueryResponse> FundAccountBookQuery(FundAccountBookQueryInput input) { return await base.Request<FundAccountBookQueryInput, FundAccountBookQueryResponse>(input, AlipayApiConstant.FundAccountBookQuery); } /// <summary> /// å•ç¬”è½¬è´¦æŽ¥å£æ˜¯åŸºäºŽæ”¯ä»˜å®çš„资金处ç†èƒ½åŠ›ï¼Œä¸ºäº†æ»¡è¶³æ”¯ä»˜å®å•†å®¶çš„转账需求,针对有部分开å‘能力的商家,æä¾›é€šè¿‡API接å£å®Œæˆä¼ä¸šè‡ªèº«æ”¯ä»˜å®è´¦æˆ·åˆ°æ”¯ä»˜å®è´¦æˆ·ã€ä¼ä¸šè‡ªèº«æ”¯ä»˜å®è´¦æˆ·åˆ°é“¶è¡Œå¡çš„转账功能。 /// 适用于:C2C现金红包的红包领å–ã€B2CçŽ°é‡‘çº¢åŒ…çš„çº¢åŒ…å‘æ”¾ã€B2Cå•笔转账到支付å®è´¦æˆ·ã€B2Cå•笔转账到银行å¡ç‰ã€‚ /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<FundTransUniTransferResponse> FundTransUniTransfer(FundTransUniTransferInput input) { return await base.Request<FundTransUniTransferInput, FundTransUniTransferResponse>(input, AlipayApiConstant.FundTransUniTransfer); } /// <summary> /// è½¬è´¦ä¸šåŠ¡å•æ®æŸ¥è¯¢æŽ¥å£ /// 商户å¯é€šè¿‡è¯¥æŽ¥å£æŸ¥è¯¢è½¬è´¦ä¸šåС啿®çš„状æ€ï¼Œä¸»è¦åº”用于统一转账接å£(alipay.fund.trans.uni.transfer)ã€æ— 线转账接å£(alipay.fund.trans.app.pay)ã€å•笔转账到支付å®è´¦æˆ·æŽ¥å£ï¼ˆalipay.fund.trans.toaccount.transfer) /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<FundTransCommonQueryResponse> FundTransCommonoQuery(FundTransCommonQueryInput input) { return await base.Request<FundTransCommonQueryInput, FundTransCommonQueryResponse>(input, AlipayApiConstant.FundTransCommonQuery); } /// <summary> /// 资金调拨到用户å下的å‘薪专项的页é¢ä»˜æ¬¾æŽ¥å£ /// 基于用户授æƒå议,平å°é€šè¿‡é¡µé¢æŽ¥å£å½¢å¼å”¤èµ·æ”¯ä»˜å®å¤–部收银å°ã€‚å¾…ç”¨æˆ·æ ¸èº«ç¡®è®¤åŽï¼Œæ”¯ä»˜å®æœåŠ¡ç«¯ä¾æ®å¹³å°æŒ‡ä»¤ï¼Œå°†ç”¨æˆ·æ”¯ä»˜å®çš„å¯ç”¨èµ„金划拨到用户å下的å‘薪专项ä¸å¯ç”¨èµ„金ä¸ï¼Œå¹¶å°†å¤„ç†ç»“æžœä»¥å¼‚æ¥æ¶ˆæ¯æ–¹å¼é€šçŸ¥åˆ°å¹³å° /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<AlipayFundTransPagePayResponse> FundTransPagePay(FundTransPagePayInput input) { return await base.PageRequest<FundTransPagePayInput, AlipayFundTransPagePayResponse>(input, AlipayApiConstant.FundTransPagePay, _config.NotifyUrl + "/AliPayNotify/NotifyOrderChanged"); } ///// <summary> ///// 基于付款方的委托授æƒï¼Œç”¨äºŽæ‰¹é‡å‘指定支付å®è´¦æˆ·/银行å¡è½¬è´¦ ///// å¹³å°åŸºäºŽä»˜æ¬¾æ–¹çš„委托授æƒï¼Œå°†ç”¨æˆ·çš„专款资金批é‡è½¬è´¦åˆ°æŒ‡å®šçš„æ”¯ä»˜å®è´¦æˆ· ///// </summary> ///// <param name="input"></param> ///// <returns></returns> //public Task<FundBatchUniTransferResponse> FundBatchUniTransfer(FundBatchUniTransferInput input) //{ // return base.Request<FundBatchUniTransferInput, FundBatchUniTransferResponse>(input, AlipayApiConstant.FundBatchUniTransfer); //} ///// <summary> ///// 基于付款方的委托授æƒï¼Œ ///// 场景一:当商户收到批次异æ¥é€šçŸ¥çš„åŽï¼Œå¯é€šè¿‡è¯¥æŽ¥å£æŸ¥è¯¢æ‰¹æ¬¡ä¸‹çš„æ˜Žç»†ä¿¡æ¯ï¼› /////场景二:商户未收到批次异æ¥é€šçŸ¥æ—¶ï¼Œå•†æˆ·é€šè¿‡æ¤æŽ¥å£å¯ä»¥ä¸»åŠ¨æŸ¥è¯¢æ‰¹æ¬¡å’Œæ‰¹æ¬¡ä¸‹æ˜Žç»†å•æ®çš„çŠ¶æ€ ///// </summary> ///// <param name="input"></param> ///// <returns></returns> //public Task<FundBatchDetailQueryResponse> FundBatchDetailQuery(FundBatchDetailQueryInput input) //{ // return base.Request<FundBatchDetailQueryInput, FundBatchDetailQueryResponse>(input, AlipayApiConstant.FundBatchDetailQuery); //} ///// <summary> ///// 用于查询支付å®è´¦æˆ·ä½™é¢ ///// </summary> ///// <param name="input"></param> ///// <returns></returns> //public Task<FundAccountQueryResponse> FundAccountQuery(FundAccountQueryInput input) //{ // return base.Request<FundAccountQueryInput, FundAccountQueryResponse>(input, AlipayApiConstant.FundAccountQuery); //} /// <summary> /// 申请电åå›žå• /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<DataBillErceiptApplyResponse> DataBillErceiptApply(DataBillErceiptApplyInput input) { return await base.Request<DataBillErceiptApplyInput, DataBillErceiptApplyResponse>(input, AlipayApiConstant.DataBillErceiptApply); } /// <summary> /// 查询电å回å•çŠ¶æ€ /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<DataBillEreceiptQueryResponse> DataBillEreceiptQuery(DataBillEreceiptQueryInput input) { return await base.Request<DataBillEreceiptQueryInput, DataBillEreceiptQueryResponse>(input, AlipayApiConstant.DataBillEreceiptQuery); } /// <summary> /// è´¦å•下载 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<DataDataserviceBillDownloadUrlQueryResponse> DataDataserviceBillDownloadUrlQuery(DataDataserviceBillDownloadUrlQueryInput input) { return await base.Request<DataDataserviceBillDownloadUrlQueryInput, DataDataserviceBillDownloadUrlQueryResponse>(input, AlipayApiConstant.DataDataserviceBillDownloadUrlQuery); } private static string GetPrivateKey(string appId) { IDictionary<string, string> json = JsonConvert.DeserializeObject<IDictionary<string, string>>( File.ReadAllText(DirFileHelper.GetSolutionBasePath() + "/privateKey.json")); return json[appId]; } } }