Пример #1
0
        /// <summary>
        /// 获取openId(蚂蚁金服)
        /// </summary>
        /// <param name="request">请求参数</param>
        /// <param name="config">配置</param>
        /// <returns>结果</returns>
        public static string GetOpenidFromCode(OpenidFromCodeRequestInfo request, SdkPay.Config config)
        {
            const string url           = SdkPay.Config.ServerUrl;
            string       appId         = config.GetAppId();
            string       privateKeyPem = config.GetPrivateKeyPem();
            const string format        = SdkPay.Config.Format;
            const string signType      = SdkPay.Config.SignType;
            string       publicKeyPem  = config.GetPublicKeyPemAliPay();
            const string charset       = SdkPay.Config.Charset;
            IAopClient   client        = new DefaultAopClient(url, appId, privateKeyPem, format, charset, signType, publicKeyPem);
            AlipaySystemOauthTokenRequest alipaySystemOauthTokenRequest = new AlipaySystemOauthTokenRequest
            {
                GrantType = "authorization_code",
                Code      = request.Code
            };
            AlipaySystemOauthTokenResponse response = client.Execute(alipaySystemOauthTokenRequest);

            return(response?.UserId);
        }
Пример #2
0
        /// <summary>
        /// 创建Sdk支付链接串(蚂蚁金服)
        /// </summary>
        /// <param name="directInfo">支付信息</param>
        /// <param name="config">config</param>
        /// <returns>请求连接</returns>
        public static string CreateDirectSdkPayByUser(DirectInfo directInfo, SdkPay.Config config)
        {
            const string             url           = SdkPay.Config.ServerUrl;
            string                   appId         = config.GetAppId();
            string                   privateKeyPem = config.GetPrivateKeyPem();
            const string             format        = SdkPay.Config.Format;
            const string             version       = SdkPay.Config.Version;
            const string             signType      = SdkPay.Config.SignType;
            string                   publicKeyPem  = config.GetPublicKeyPem();
            const string             charset       = SdkPay.Config.Charset;
            const string             productCode   = SdkPay.Config.ProductCode;
            string                   pid           = config.GetPid();
            IAopClient               client        = new DefaultAopClient(url, appId, privateKeyPem, format, version, signType, publicKeyPem, charset, false);
            AlipayTradeAppPayRequest request       = new AlipayTradeAppPayRequest();

            if (!string.IsNullOrWhiteSpace(directInfo.Notify))
            {
                request.SetNotifyUrl(directInfo.Notify);
            }
            if (!string.IsNullOrWhiteSpace(directInfo.Return))
            {
                request.SetReturnUrl(directInfo.Return);
            }
            AlipayTradeAppPayModel model = new AlipayTradeAppPayModel
            {
                Body           = directInfo.ExtraCommonParam,
                Subject        = directInfo.Subject,
                TotalAmount    = directInfo.TotalFee.ToString("0.00"),
                ProductCode    = productCode,
                OutTradeNo     = directInfo.OutTradeNo,
                TimeoutExpress = "30m",
                SellerId       = pid
            };

            request.SetBizModel(model);
            AlipayTradeAppPayResponse response = client.SdkExecute(request);
            var body = response.Body;

            return(body);
        }
Пример #3
0
        /// <summary>
        /// 创建请求code的URL(蚂蚁金服)
        /// </summary>
        /// <param name="request">请求参数</param>
        /// <param name="config">配置</param>
        /// <returns>结果</returns>
        public static string GetOpenidAndAccessTokenUrl(OpenidAndAccessTokenUrlInfo request, SdkPay.Config config)
        {
            string scope = "auth_base";

            return($"https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id={config.GetAppId()}&scope={scope}&redirect_uri={request.RedirectUri}&state={request.State}");
        }
Пример #4
0
        /// <summary>
        /// 支付宝单笔转账查询结果(蚂蚁金服)
        /// </summary>
        /// <param name="fundTransOrderQueryInfo">查询信息</param>
        /// <param name="config">config</param>
        /// <returns>结果</returns>
        public static FundTransOrderQueryResult FundTransOrderQuery(FundTransOrderQueryInfo fundTransOrderQueryInfo, SdkPay.Config config)
        {
            const string url           = SdkPay.Config.ServerUrl;
            string       appId         = config.GetAppId();
            string       privateKeyPem = config.GetPrivateKeyPem();
            const string format        = SdkPay.Config.Format;
            const string version       = SdkPay.Config.Version;
            const string signType      = SdkPay.Config.SignType;
            string       publicKeyPem  = config.GetPublicKeyPemAliPay();
            const string charset       = SdkPay.Config.Charset;
            IAopClient   client        = new DefaultAopClient(url, appId, privateKeyPem, format, version, signType, publicKeyPem, charset, false);
            AlipayFundTransOrderQueryRequest request = new AlipayFundTransOrderQueryRequest();
            AlipayFundTransOrderQueryModel   model   = new AlipayFundTransOrderQueryModel
            {
                OrderId  = fundTransOrderQueryInfo.OrderId,
                OutBizNo = fundTransOrderQueryInfo.OutBizNo
            };

            request.SetBizModel(model);
            AlipayFundTransOrderQueryResponse response = client.Execute(request);
            FundTransOrderQueryResult         result   = new FundTransOrderQueryResult();

            if (response.Code == "10000")
            {
                if (response.Status.ToUpper() == "SUCCESS")
                {
                    result.IsSuccess = true;
                    result.Message   = response.Status.ToUpper();
                    result.OrderId   = response.OrderId;
                    result.PayDate   = Convert.ToDateTime(response.PayDate);
                    result.OutBizNo  = response.OutBizNo;
                }
                else
                {
                    result.IsSuccess = false;
                    result.Message   = response.Status.ToUpper();
                }
            }
            else
            {
                result.IsSuccess = false;
                result.Message   = response.SubMsg ?? response.Msg;
            }
            return(result);
        }
Пример #5
0
        /// <summary>
        /// 支付宝单笔转账(蚂蚁金服)
        /// </summary>
        /// <param name="fundTransToaccountTransferInfo">转账信息</param>
        /// <param name="config">config</param>
        /// <returns>转账结果</returns>
        public static FundTransToaccountTransferInfoResult FundTransToAccountTransfer(FundTransToaccountTransferInfo fundTransToaccountTransferInfo, SdkPay.Config config)
        {
            const string url           = SdkPay.Config.ServerUrl;
            string       appId         = config.GetAppId();
            string       privateKeyPem = config.GetPrivateKeyPem();
            const string format        = SdkPay.Config.Format;
            const string version       = SdkPay.Config.Version;
            const string signType      = SdkPay.Config.SignType;
            string       publicKeyPem  = config.GetPublicKeyPemAliPay();
            const string charset       = SdkPay.Config.Charset;
            IAopClient   client        = new DefaultAopClient(url, appId, privateKeyPem, format, version, signType, publicKeyPem, charset, false);
            var          request       = new AlipayFundTransToaccountTransferRequest();
            AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel
            {
                OutBizNo      = fundTransToaccountTransferInfo.OutBizNo,
                PayeeAccount  = fundTransToaccountTransferInfo.PayeeAccount,
                Amount        = fundTransToaccountTransferInfo.Amount,
                PayeeRealName = fundTransToaccountTransferInfo.PayeeRealName,
                Remark        = fundTransToaccountTransferInfo.Remark
            };

            request.SetBizModel(model);
            AlipayFundTransToaccountTransferResponse response = client.Execute(request);
            FundTransToaccountTransferInfoResult     result   = new FundTransToaccountTransferInfoResult();

            result.Body = response.Body;
            if (response.Code == "10000")
            {
                result.IsSuccess = true;
                result.Message   = response.Msg;
                result.OrderId   = response.OrderId;
                result.PayDate   = Convert.ToDateTime(response.PayDate);
            }
            else
            {
                result.IsSuccess = false;
                result.Message   = $"{response.Msg}-{response.SubMsg}";
            }
            return(result);
        }
Пример #6
0
        /// <summary>
        /// 支付宝支付查询(蚂蚁金服)
        /// </summary>
        /// <param name="alipayTradeQueryInfo">查询信息</param>
        /// <param name="config">config</param>
        /// <returns>结果</returns>
        public static AlipayTradeQueryResult QueryPayTradeResult(AlipayTradeQueryInfo alipayTradeQueryInfo, SdkPay.Config config)
        {
            var body                   = QueryPayTrade(alipayTradeQueryInfo, config);
            var parser                 = new AopJsonParser <QueryPayTrade>();
            var queryPayTrade          = parser.Parse(body, SdkPay.Config.Charset);
            var alipayTradeQueryResult = new AlipayTradeQueryResult
            {
                IsSuccess = queryPayTrade.Code == "10000" && (queryPayTrade.trade_status == "TRADE_SUCCESS" || queryPayTrade.trade_status == "TRADE_FINISHED")
            };

            if (alipayTradeQueryResult.IsSuccess)
            {
                alipayTradeQueryResult.Buyer           = queryPayTrade.buyer_logon_id;
                alipayTradeQueryResult.PayAmount       = Convert.ToDecimal(queryPayTrade.total_amount);
                alipayTradeQueryResult.PanyInterfaceNo = queryPayTrade.trade_no;
                alipayTradeQueryResult.TradeNo         = queryPayTrade.out_trade_no;
            }
            return(alipayTradeQueryResult);
        }
Пример #7
0
        /// <summary>
        /// 支付宝支付查询(蚂蚁金服)
        /// </summary>
        /// <param name="alipayTradeQueryInfo">查询信息</param>
        /// <param name="config">config</param>
        /// <returns>结果</returns>
        public static string QueryPayTrade(AlipayTradeQueryInfo alipayTradeQueryInfo, SdkPay.Config config)
        {
            const string                url          = SdkPay.Config.ServerUrl;
            string                      appId        = config.GetAppId();
            string                      rivateKeyPem = config.GetPrivateKeyPem();
            const string                format       = SdkPay.Config.Format;
            const string                version      = SdkPay.Config.Version;
            const string                signType     = SdkPay.Config.SignType;
            string                      publicKeyPem = config.GetPublicKeyPemAliPay();
            const string                charset      = SdkPay.Config.Charset;
            IAopClient                  client       = new DefaultAopClient(url, appId, rivateKeyPem, format, version, signType, publicKeyPem, charset, false);
            AlipayTradeQueryRequest     request      = new AlipayTradeQueryRequest();
            AlipayTradeAppPayQueryModel model        = new AlipayTradeAppPayQueryModel
            {
                out_trade_no = alipayTradeQueryInfo.OutTradeNo,
                trade_no     = alipayTradeQueryInfo.TradeNo
            };

            request.SetBizModel(model);
            AlipayTradeQueryResponse response = client.Execute(request);
            var body = response.Body;

            return(body);
        }