Ejemplo n.º 1
0
        //public override DApiResult<string> Pay(long orderNo, decimal price, string subject)
        //{
        //    var dict = Config.BaseParams("alipay.trade.pay");
        //    //业务参数
        //    var item = new Dictionary<string, object>
        //    {
        //        {"out_trade_no", orderNo},
        //        {"product_code", "QUICK_MSECURITY_PAY"},
        //        {"auth_code", "28763443825664394"},
        //        {"subject", subject},
        //        {"total_amount", price}
        //    };
        //    dict.Add("biz_content", JsonHelper.ToJson(item));
        //    dict.Add("sign", dict.RsaSign(Config.PrivateKey, Config.Charset));

        //    var url = $"{Config.Gateway}?{dict.ParamsUrl()}";
        //    Logger.Info(JsonHelper.ToJson(dict, indented: true));
        //    using (var http = new HttpHelper(url, Encoding.GetEncoding(Config.Charset)))
        //    {
        //        var html = http.GetHtml();
        //        Logger.Info(html);
        //        var dto = JsonHelper.Json<ReturnAlipayDto>(html);
        //        if (dto?.alipay_trade_pay_response == null)
        //            return DApiResult.Error<string>("支付接口异常");
        //        var result = dto.alipay_trade_pay_response;
        //        if (result.code != "10000")
        //            return DApiResult.Error<string>($"{result.msg}:{result.sub_msg}");
        //        return DApiResult.Succ(string.Empty);
        //    }
        //}

        public override DResult <VerifyDto> Verify()
        {
            var paramDict = OnlinePayHelper.GetParams();

            Logger.Info(JsonHelper.ToJson(paramDict, indented: true));
            var signVerified = AlipaySignature.RsaCheck(paramDict, Config.PublicKey, Config.Charset);

            if (!signVerified)
            {
                return(DResult.Error <VerifyDto>("验证签名失败"));
            }
            if (paramDict.GetValue <string>("app_id") != Config.AppId)
            {
                return(DResult.Error <VerifyDto>("AppId异常"));
            }
            var dto = new VerifyDto
            {
                Id           = paramDict.GetValue <string>("out_trade_no"),
                TradeNo      = paramDict.GetValue <string>("trade_no"),
                TradeStatus  = paramDict.GetValue <string>("trade_status"),
                Amount       = paramDict.GetValue <decimal>("total_amount"),
                BuyerId      = paramDict.GetValue <string>("buyer_id"),
                BuyerAccount = paramDict.GetValue <string>("buyer_logon_id")
            };

            return(DResult.Succ(dto));
        }