public void TestMethod1()
        {
            IAopClient client = GetAlipayClient();
            AlipayMobilePublicMultiMediaDownloadRequest req = new AlipayMobilePublicMultiMediaDownloadRequest();

            string path = "c:/1.jpg";

            if (File.Exists(path))
            {
                File.Delete(path);
            }
            FileStream fs = new FileStream(path, FileMode.CreateNew);

            req.stream = fs;

            string mediaId = "L21pZnMvVDFQV3hYWGJKWFhYYUNucHJYP3Q9YW13ZiZ4c2lnPTU0MzRhYjg1ZTZjNWJmZTMxZGJiNjIzNDdjMzFkNzkw575";

            req.BizContent = "{\"mediaId\":\"" + mediaId + "\"}";

            AlipayMobilePublicMultiMediaDownloadResponse res = client.Execute(req);

            System.Console.WriteLine("-------------公众号菜单查询-------------");

            System.Console.WriteLine("Body:" + res.Body);
            System.Console.ReadLine();
        }
Exemple #2
0
        public Refund BuildRefundQuery(Refund refund)
        {
            IAopClient alipayClient = GetAopClient();
            AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest();
            AlipayTradeFastpayRefundQueryModel   model   = new AlipayTradeFastpayRefundQueryModel();

            model.OutTradeNo = refund.OrderNo;
            if (!string.IsNullOrEmpty(refund.TradeNo))
            {
                model.TradeNo = refund.TradeNo;
            }
            model.OutRequestNo = refund.OutRefundNo;
            request.SetBizModel(model);
            AlipayTradeFastpayRefundQueryResponse response = alipayClient.Execute(request);

            if (response.Code == "10000" && !string.IsNullOrEmpty(response.RefundAmount))
            {
                double refundAmount;
                if (double.TryParse(response.RefundAmount, out refundAmount))
                {
                    if (refundAmount > 0.0)
                    {
                        refund.TradeNo      = response.TradeNo;
                        refund.RefundAmount = refundAmount;
                        refund.RefundStatus = true;
                    }
                }
            }
            return(refund);
        }
 public AlipayService(IOptions <AlipayOptions> alipayOptions)
 {
     Options = alipayOptions.Value;
     //_context = contextAccessor.HttpContext; ,IHttpContextAccessor contextAccessor
     _aopClient = new DefaultAopClient(Options.Gatewayurl, Options.AppId, Options.PrivateKey, "json", "1.0",
                                       Options.SignType, Options.AlipayPublicKey, Options.CharSet, Options.IsKeyFromFile);
 }
Exemple #4
0
 /// <summary>
 /// 支付宝处理类型构造
 /// </summary>
 /// <param name="appsetting">配置对象</param>
 /// <param name="log">日志对象</param>
 internal AlipayHandle(AppSetting appsetting, Logger log)
 {
     _log     = log;
     _setting = appsetting;
     client   = new DefaultAopClient(AlipayConfig.serverUrl, _setting.AlipayAppid, AlipayConfig.merchant_private_key, "json", AlipayConfig.version,
                                     AlipayConfig.sign_type, AlipayConfig.alipay_public_key, AlipayConfig.charset, true);
 }
Exemple #5
0
        private static void MenuGet()
        {
            IAopClient client = GetAlipayClient();

            //AlipayMobilePublicMenuGetRequest req = new AlipayMobilePublicMenuGetRequest();
            //AlipayMobilePublicMenuGetResponse res = client.Execute(req);
            System.Console.Write("-------------公众号菜单查询-------------" + "\n\r");
            // System.Console.Write("Body:" + res.Body + "\n\r");
        }
Exemple #6
0
 public static IAopClient CreateInstance()
 {
     if (client == null)
     {
         var config = AlipayConfig.CreateInstance();
         client = new DefaultAopClient(config.ServerUrl, config.AppId, config.RsaPrivateKey, "json", config.Version,
                                       config.SignType, config.AlipayRsaPublicKey, config.Charset);
     }
     return(client);
 }
Exemple #7
0
 public AlipayService(IOptions <AlipayOptions> alipayOptions, IApplicationSettingService applicationSettingService)
 {
     Options = applicationSettingService.Get <AlipayOptions>();
     if (Options.AppId.IsNullOrWhiteSpace())
     {
         Options = alipayOptions.Value;
     }
     _aopClient = new DefaultAopClient(Options.Gatewayurl, Options.AppId, Options.PrivateKey, "json", "1.0",
                                       Options.SignType, Options.AlipayPublicKey, Options.CharSet, Options.IsKeyFromFile);
 }
Exemple #8
0
 static AliPayInfo()
 {
     AliPayNotifyUrl = ConfigHelper.GetValue("AliPayNotifyUrl");
     AliPayReturnUrl = ConfigHelper.GetValue("AliPayReturnUrl");
     AliPayAppId     = ConfigHelper.GetValue("AliPayAppId");
     AliPayServerUrl = ConfigHelper.GetValue("AliPayServerUrl");
     AliPayPublicKey = ConfigHelper.GetFileContent("ApliPayPublicKey_Path");
     AliPayOuerKey   = ConfigHelper.GetFileContent("ApliPayOuerKey_Path");
     AopClient       = new DefaultAopClient(AliPayServerUrl, AliPayAppId, AliPayOuerKey, "json", "1.0", "RSA2", AliPayPublicKey, "utf-8", false);
 }
Exemple #9
0
        public void Query()
        {
            IAopClient client = GetClient();
            AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();

            request.BizContent = "{" +
                                 "    \"out_trade_no\":\"20150320010101001\"," +
                                 "    \"trade_no\":\"2014112611001073956707\"" +
                                 "  }";

            AlipayTradeQueryResponse response = client.Execute(request);
        }
Exemple #10
0
        /// <summary>
        /// 订单编号
        /// </summary>
        /// <param name="oidStr"></param>
        /// <returns></returns>
        public ActionResult AliPay(string oidStr)
        {
            #region 验证订单有效

            if (string.IsNullOrEmpty(oidStr))
            {
                return(Json(false, "OrderError"));
            }

            //int[] oIds = Serialize.JsonTo<int[]>(oidStr);

            decimal payPrice = 0.01M;

            ///订单验证,统计订单总金额

            #endregion

            #region 统一下单
            try
            {
                var        notify_url            = WeixinConfig.notify_url;
                var        return_url            = WeixinConfig.return_url;
                IAopClient client                = Utility.AliPay.AliPay.GetAlipayClient();
                AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
                //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
                AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
                model.Subject     = "商品购买";
                model.TotalAmount = payPrice.ToString("F2");
                model.ProductCode = "QUICK_MSECURITY_PAY";
                Random rd     = new Random();
                var    payNum = DateTime.Now.ToString("yyyyMMddHHmmss") + rd.Next(0, 1000).ToString().PadLeft(3, '0');
                model.OutTradeNo     = payNum;
                model.TimeoutExpress = "30m";
                request.SetBizModel(model);
                request.SetNotifyUrl(notify_url);
                //request.SetReturnUrl(return_url);
                //这里和普通的接口调用不同,使用的是sdkExecute
                AlipayTradeAppPayResponse response = client.SdkExecute(request);

                //统一下单
                //OrderBll.Value.UpdateOrderApp(oIds, payNum);

                //return Json(true, new {response.Body}, "OK");
                return(null);
            }
            catch (Exception ex)
            {
                return(Json(new { Result = false, msg = "缺少参数" }));
            }
            #endregion
        }
        public AliPayAppService()
        {
            try
            {
                //client = new DefaultAopClient("https://openapi.alipaydev.com/gateway.do", APPID, GetCurrentPath() + "rsa_private_key_pkcs8.pem", "json", "1.0", "RSA2", GetCurrentPath() + "rsa_public_key_pkcs8.pem", CHARSET, true);

                client = new DefaultAopClient("https://openapi.alipaydev.com/gateway.do", APPID, APP_PRIVATE_KEY, "json", "1.0", "RSA2", ALIPAY_PUBLIC_KEY, CHARSET, false);
                Logger.Info("初始化成功");
            }
            catch (Exception ex)
            {
                throw new Exception("初始化支付宝支付对象失败!", ex);
            }
        }
Exemple #12
0
        public string BuildPaymentForm()
        {
            IAopClient alipayClient = GetAopClient();
            AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();// 创建API对应的request

            alipayRequest.SetReturnUrl(Merchant.ReturnUrl.ToString());
            alipayRequest.SetNotifyUrl(Merchant.NotifyUrl.ToString());
            AlipayTradePagePayModel model = new AlipayTradePagePayModel();

            model.Subject        = Order.Subject;
            model.OutTradeNo     = Order.OrderNo;
            model.TimeoutExpress = "30m";
            model.TotalAmount    = Order.OrderAmount.ToString();
            model.ProductCode    = "FAST_INSTANT_TRADE_PAY";
            alipayRequest.SetBizModel(model);
            return(alipayClient.pageExecute(alipayRequest).Body); // 调用SDK生成表单
        }
Exemple #13
0
        public string BuildWapPaymentUrl(Dictionary <string, string> map)
        {
            IAopClient alipayClient = GetAopClient();
            AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();

            alipayRequest.SetReturnUrl(Merchant.ReturnUrl.ToString());
            alipayRequest.SetNotifyUrl(Merchant.NotifyUrl.ToString());
            AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();

            model.Subject        = Order.Subject;
            model.OutTradeNo     = Order.OrderNo;
            model.TimeoutExpress = "30m";
            model.TotalAmount    = Order.OrderAmount.ToString();
            model.ProductCode    = "QUICK_WAP_PAY";
            alipayRequest.SetBizModel(model);
            return(alipayClient.pageExecute(alipayRequest).Body);
        }
Exemple #14
0
        private void btnOrderStatus_Press(object sender, EventArgs e)
        {
            IAopClient client = GetAPOClient();
            //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称如:alipay.trade.app.pay
            AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
            //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
            AlipayTradeQueryModel model = new AlipayTradeQueryModel();

            model.OutTradeNo = tradeNo;
            request.SetBizModel(model);
            //这是普通的接口使用Execute
            AlipayTradeQueryResponse response = client.Execute(request);

            //页面输出的response.Body就是orderString 可以直接给客户端请求,无需再做处理。
            System.Diagnostics.Debug.WriteLine(response.Body);
            MessageBox.Show(response.Body);
        }
Exemple #15
0
        private void btnCreateOrder_Press(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(tradeNo) == true)
            {
                btnOutOrder_Press(null, null);
            }
            IAopClient client = GetAPOClient();
            //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称如:alipay.trade.app.pay
            AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
            //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
            AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();

            model.Body           = "请支持0.01元";            //支付描述
            model.Subject        = "支付";                  //支付标题
            model.TotalAmount    = "0.01";                //支付金额
            model.ProductCode    = "QUICK_MSECURITY_PAY"; //产品码
            model.OutTradeNo     = tradeNo;               //外部编号,外部编号在支付成功时,只能使用一次
            model.TimeoutExpress = "30m";                 //超时时间
            request.SetBizModel(model);
            //有条件可设置回调地址,支付宝在支付完成后会POST此地址。或通过查询的方式。
            //request.SetNotifyUrl("");
            //这里和普通的接口调用不同,使用的是sdkExecute
            AlipayTradeAppPayResponse response = client.SdkExecute(request);

            //页面输出的response.Body就是orderString 可以直接给客户端请求,无需再做处理。
            System.Diagnostics.Debug.WriteLine(response.Body);

            //注意,第一个参数是苹果支付需要的格式为ap应用编号,android可设置为空
            this.aliPay1.AppPay("ap" + appid, response.Body, (obj, args) =>
            {
                if (args.isError == true)
                {
                    MessageBox.Show(args.error);
                }
                else
                {
                    string result = "";
                    foreach (KeyValuePair <string, object> item in args.result)
                    {
                        result += string.Format("{0}/{1}" + Environment.NewLine, item.Key, item.Value);
                    }
                    MessageBox.Show(result);
                }
            });
        }
Exemple #16
0
        public bool QueryNow()
        {
            IAopClient alipayClient = GetAopClient();
            AlipayTradeQueryRequest alipayRequest = new AlipayTradeQueryRequest();
            AlipayTradeQueryModel   model         = new AlipayTradeQueryModel();

            model.OutTradeNo = Order.OrderNo;
            alipayRequest.SetBizModel(model);
            AlipayTradeQueryResponse response = alipayClient.Execute(alipayRequest);

            if (((string.Compare(response.TradeStatus, "TRADE_FINISHED") == 0 || string.Compare(response.TradeStatus, "TRADE_SUCCESS") == 0)))
            {
                var orderAmount = double.Parse(response.TotalAmount);
                if (Order.OrderAmount == orderAmount && string.Compare(Order.OrderNo, response.OutTradeNo) == 0)
                {
                    return(true);
                }
            }
            return(false);
        }
Exemple #17
0
        public Dictionary <string, string> BuildPayParams()
        {
            IAopClient alipayClient = GetAopClient();
            AlipayTradeAppPayRequest alipayRequest = new AlipayTradeAppPayRequest();

            alipayRequest.SetReturnUrl(Merchant.ReturnUrl.ToString());
            alipayRequest.SetNotifyUrl(Merchant.NotifyUrl.ToString());
            AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();

            model.Subject        = Order.Subject;
            model.OutTradeNo     = Order.OrderNo;
            model.TimeoutExpress = "30m";
            model.TotalAmount    = Order.OrderAmount.ToString();
            model.ProductCode    = "QUICK_MSECURITY_PAY";
            alipayRequest.SetBizModel(model);
            Dictionary <string, string> resParam = new Dictionary <string, string>();

            resParam.Add("body", alipayClient.pageExecute(alipayRequest).Body);
            return(resParam);
        }
Exemple #18
0
        public void Precreate()
        {
            IAopClient client = GetClient();
            AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();

            //TODO:此处替换官方文档
            request.BizContent = "{" +
                                 "    \"out_trade_no\":\"20160320010101001\"," +
                                 "    \"total_amount\":88.88," +
                                 "    \"discountable_amount\":8.88," +
                                 "    \"undiscountable_amount\":80," +
                                 "    \"buyer_logon_id\":\"15901825620\"," +
                                 "    \"subject\":\"Iphone6 16G\"," +
                                 "    \"body\":\"Iphone6 16G\"," +
                                 "    \"timeout_express\":\"90m\"," +
                                 "    \"sub_merchant\":{" +
                                 "      \"merchant_id\":\"19023454\"" +
                                 "    }" +
                                 "  }";

            request.BizContent = JsonConvert.SerializeObject(new Entities.Precreate()
            {
                out_trade_no = "20160320010101001",
                subject      = "Iphone6 16G",
                total_amount = 88.88
            });


            AlipayTradePrecreateResponse response = client.Execute(request);

            if (!response.IsError)
            {
                Console.WriteLine("调用成功");
            }
            else
            {
                Console.WriteLine("调用失败");
            }

            Assert.IsFalse(response.IsError);
        }
Exemple #19
0
        /// <summary>
        /// 请求支付参数:https://docs.open.alipay.com/204/105465/
        /// </summary>
        /// <returns>客户端向安卓层(支付宝客户端SDK)请求的字符串</returns>
        public string GetAliPayParameter(AlipayTradeAppPayModel alipaymode)
        {
            if (client == null)
            {
                client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", appid, APP_Private_Key,
                                              "JSON", "1.0", "RSA2", AliPay_Public_Key, "UTF-8", false);
            }

            //参数对照: https://docs.open.alipay.com/204/105465/

            //用于请求的对象
            request = new AlipayTradeAppPayRequest();

            request.SetBizModel(alipaymode);               //请求的数据模型
            request.SetNotifyUrl(aliPayResultListenerUrl); //设置支付结果通知的地址

            //这里和普通的接口调用不同,使用的是sdkExecute
            AlipayTradeAppPayResponse response = client.SdkExecute(request);

            //(不用理这句注释)HttpUtility.HtmlEncode是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
            //通过Body获取到返回的参数
            return(response.Body);
        }
Exemple #20
0
        public Refund BuildRefund(Refund refund)
        {
            IAopClient alipayClient = GetAopClient();
            AlipayTradeRefundRequest alipayRequest = new AlipayTradeRefundRequest();
            AlipayTradeRefundModel   model         = new AlipayTradeRefundModel();

            model.OutTradeNo = refund.OrderNo;
            if (!string.IsNullOrEmpty(refund.TradeNo))
            {
                model.TradeNo = refund.TradeNo;
            }
            model.OutRequestNo = refund.OutRefundNo;
            model.RefundAmount = refund.RefundAmount.ToString();
            model.RefundReason = refund.RefundDesc;
            alipayRequest.SetBizModel(model);
            AlipayTradeRefundResponse response = alipayClient.Execute(alipayRequest);

            if (response.Code == "10000")
            {
                refund.TradeNo      = response.TradeNo;
                refund.RefundStatus = true;
            }
            return(refund);
        }
Exemple #21
0
 public void Setup()
 {
     m_Client = new DefaultAopClient(serverUrl, appId, merchant_private_key, "", version,
                                     sign_type, alipay_public_key, charset);
 }
Exemple #22
0
 public AlipayRequest()
 {
     _aopClient = new DefaultAopClient(AliPayConfig.SERVER_URL, AliPayConfig.APPID, AliPayConfig.APP_PRIVATE_KEY, AliPayConfig.FORMAT, AliPayConfig.CHARSET, AliPayConfig.SIGN_TYPE, AliPayConfig.ALIPAY_PUBLIC_KEY);
 }
Exemple #23
0
 public AppAlipayService()
 {
     _client = new DefaultAopClient(Url, AppId, AppPrivateKey, Format, "1.0", SignType, AlipayPublicKey, Charset);
     Logger  = NullLogger.Instance;
 }
        public ActionResult MicroPay(int?CompanyId, string storeId, string autoCode, string paySN, decimal totalPrice)
        {
            var op = new OpResult();
            AlipayTradePayResponse payResponse = null;

            try
            {
                var setting = paySetBLL.GetPaymentSettingBystoreId(1, storeId, CompanyId);
                client = new DefaultAopClient(qrcode._2.Config.serverUrl, setting.AppId, qrcode._2.Config.merchant_private_key, "", qrcode._2.Config.version,
                                              qrcode._2.Config.sign_type, qrcode._2.Config.alipay_public_key, qrcode._2.Config.charset);
                var           orderno = qrcode.wx.WxPayApi.GenerateOutTradeNo(setting.AppId);
                StringBuilder sb      = new StringBuilder();
                sb.Append("{\"out_trade_no\":\"" + orderno + "\",");
                sb.Append("\"scene\":\"bar_code\",");
                sb.Append("\"auth_code\":\"" + autoCode + "\",");
                sb.Append("\"total_amount\":\"" + totalPrice + "\",\"discountable_amount\":\"0.00\",");
                sb.Append("\"subject\":\"订单编号 " + paySN + "\",\"body\":\"\",");
                string expire_time = System.DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss");
                sb.Append("\"time_expire\":\"" + expire_time + "\"}");
                AlipayTradePayRequest payRequst = new AlipayTradePayRequest();
                payRequst.BizContent = sb.ToString();

                Dictionary <string, string> paramsDict = (Dictionary <string, string>)payRequst.GetParameters();
                payResponse = client.Execute(payRequst);
                switch (payResponse.Code)
                {
                case qrcode._2.ResultCode.SUCCESS:
                    op.Message   = payResponse.TradeNo;
                    op.Successed = true;
                    break;

                case qrcode._2.ResultCode.INRROCESS:
                    StringBuilder sb1 = new StringBuilder();
                    sb1.Append("{\"out_trade_no\":\"" + orderno + "\"}");

                    //返回支付处理中,需要进行轮询
                    AlipayTradeQueryResponse queryResponse = LoopQuery(sb1.ToString());
                    if (queryResponse != null)
                    {
                        op.Message   = queryResponse.TradeNo;
                        op.Successed = true;
                    }
                    else
                    {
                        var cancel1 = Cancel(sb1.ToString());
                        op.Message = cancel1.Code == qrcode._2.ResultCode.SUCCESS ? "订单支付失败,已撤销!" : (cancel1.SubMsg ?? cancel1.Msg);
                    }
                    break;

                case qrcode._2.ResultCode.FAIL:
                    StringBuilder sb2 = new StringBuilder();
                    sb2.Append("{\"out_trade_no\":\"" + orderno + "\"}");
                    Cancel(sb2.ToString());    //不撤销防止同订单号时产生退款
                    op.Message = payResponse.SubMsg ?? payResponse.Msg;
                    break;

                default:
                    op.Message = payResponse.SubMsg ?? payResponse.Msg;
                    break;
                }
            }
            catch (Exception ex)
            {
                op.Message = ex.Message;
                new Sys.LogEngine().WriteError("支付宝当面付失败!" + payResponse.Body, ex);
            }
            Pharos.Component.qrcode.Log.Debug(this.GetType().Name, "支付宝当面付,返回结果:" + payResponse.Body);
            return(new JsonNetResult(op));
        }
Exemple #25
0
        public void Create()
        {
            IAopClient client = GetClient();
            AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();

            request.BizContent = "{" +
                                 "    \"out_trade_no\":\"20150320010101001\"," +
                                 "    \"seller_id\":\"2088102172273210\"," +
                                 "    \"total_amount\":88.88," +
                                 "    \"discountable_amount\":8.88," +
                                 "    \"undiscountable_amount\":80.00," +
                                 "    \"buyer_logon_id\":\"15901825620\"," +
                                 "    \"subject\":\"Iphone6 16G\"," +
                                 "    \"body\":\"Iphone6 16G\"," +
                                 "    \"buyer_id\":\"2088102146225135\"," +
                                 "      \"goods_detail\":[{" +
                                 "                \"goods_id\":\"apple-01\"," +
                                 "        \"alipay_goods_id\":\"20010001\"," +
                                 "        \"goods_name\":\"ipad\"," +
                                 "        \"quantity\":1," +
                                 "        \"price\":2000," +
                                 "        \"goods_category\":\"34543238\"," +
                                 "        \"body\":\"特价手机\"," +
                                 "        \"show_url\":\"http://www.alipay.com/xxx.jpg\"" +
                                 "        }]," +
                                 "    \"operator_id\":\"Yx_001\"," +
                                 "    \"store_id\":\"NJ_001\"," +
                                 "    \"terminal_id\":\"NJ_T_001\"," +
                                 "    \"extend_params\":{" +
                                 "      \"sys_service_provider_id\":\"2088511833207846\"," +
                                 "      \"hb_fq_num\":\"3\"," +
                                 "      \"hb_fq_seller_percent\":\"100\"" +
                                 "    }," +
                                 "    \"timeout_express\":\"90m\"," +
                                 "    \"royalty_info\":{" +
                                 "      \"royalty_type\":\"ROYALTY\"," +
                                 "        \"royalty_detail_infos\":[{" +
                                 "                    \"serial_no\":1," +
                                 "          \"trans_in_type\":\"userId\"," +
                                 "          \"batch_no\":\"123\"," +
                                 "          \"out_relation_id\":\"20131124001\"," +
                                 "          \"trans_out_type\":\"userId\"," +
                                 "          \"trans_out\":\"2088101126765726\"," +
                                 "          \"trans_in\":\"2088101126708402\"," +
                                 "          \"amount\":0.1," +
                                 "          \"desc\":\"分账测试1\"," +
                                 "          \"amount_percentage\":\"100\"" +
                                 "          }]" +
                                 "    }," +
                                 "    \"alipay_store_id\":\"2016041400077000000003314986\"," +
                                 "    \"sub_merchant\":{" +
                                 "      \"merchant_id\":\"19023454\"" +
                                 "    }" +
                                 "  }";

            request.BizContent = JsonConvert.SerializeObject(new Entities.Create()
            {
                out_trade_no   = "20120320010101001",
                subject        = "Iphone 100",
                total_amount   = 8888.88,
                buyer_logon_id = "*****@*****.**",
            });


            AlipayTradeCreateResponse response = client.Execute(request);

            if (!response.IsError)
            {
                Console.WriteLine("调用成功");
            }
            else
            {
                Console.WriteLine("调用失败");
            }

            Assert.IsFalse(response.IsError);
        }
Exemple #26
0
        /// <summary>
        /// 预创建交易
        /// </summary>
        /// <param name="request"></param>
        /// <param name="sceneryDomain"></param>
        /// <returns></returns>
        public PrecreateResponse Precreate(PrecreateRequest request, SceneryDomain sceneryDomain)
        {
            AlipayQRCodeDomain qrCode = new AlipayQRCodeDomain();

            qrCode.BatchNumber = request.out_trade_no;
            qrCode.SceneryName = sceneryDomain.SceneryName;
            qrCode.Creater     = request.terminal_id;
            qrCode.Updater     = request.terminal_id;
            qrCode.Phone       = request.Phone;

            request.extend_params.sys_service_provid = sceneryDomain.Apipay.PID;
            PrecreateResponse responseAlipay = new PrecreateResponse();

            try
            {
                //创建淘宝支付信息
                client = new DefaultAopClient(serverUrl, sceneryDomain.Apipay.APP_ID, sceneryDomain.Apipay.APP_PRIVATE_KEY, "", version,
                                              sign_type, sceneryDomain.Apipay.ALIPAY_PUBLIC_KEY, charset);
                //生成商户订单号
                request.out_trade_no = GenerateSerialIdService.Get(FixedPrefix.Alipay, CustomPrefix.A, sceneryDomain.SceneryTCId.ToString()).SerialId;
                string content = JsonConvert.SerializeObject(request);
                qrCode.RequestJson = content;

                qrCode.Out_trade_no = request.out_trade_no;
                LogHelper.AlipayLog(string.Format("商户订单号:{0} 请求josn:{1}", request.out_trade_no, content));

                string QrCode = "";
                AlipayTradePrecreateResponse payResponse = Prepay(content);
                //payResponse.QrCode即二维码对于的链接
                //将链接用二维码工具生成二维码打印出来,顾客可以用支付宝钱包扫码支付。
                if (payResponse != null)
                {
                    string result = payResponse.Body;
                    if (payResponse.Code != ResultCode.SUCCESS)
                    {
                        qrCode.Remark = result;
                    }
                    else
                    {
                        qrCode.Remark = payResponse.Code;
                    }
                    switch (payResponse.Code)
                    {
                    case ResultCode.SUCCESS:
                        //预下单成功
                        QrCode        = payResponse.QrCode;
                        qrCode.QrCode = QrCode;
                        LogHelper.AlipayLog(string.Format("请求成功,二维码地址:{0}", QrCode));
                        break;

                    case ResultCode.FAIL:
                        StringBuilder sb2 = new StringBuilder();
                        sb2.Append("{\"out_trade_no\":\"" + request.out_trade_no + "\"}");
                        LogHelper.AlipayLog(string.Format("请求失败,保存信息:{0}", result));
                        Cancel(sb2.ToString());
                        break;
                    }
                }

                responseAlipay.QRCode       = QrCode;
                responseAlipay.Out_trade_no = request.out_trade_no;
                qrCode.AppId = sceneryDomain.Apipay.APP_ID;
            }
            catch (Exception ex)
            {
                LogHelper.AlipayLog(string.Format("获取支付宝URL:请求失败,保存信息:{0}", ex.Message));
            }
            finally
            {
                try
                {
                    new AlipayQRCodeDao().Add(qrCode);
                }
                catch (Exception ex)
                {
                    LogHelper.AlipayLog(string.Format("获取支付宝URL:新增操作日志失败:{0}", ex.Message));
                }
            }
            return(responseAlipay);
        }
Exemple #27
0
 public AlipayService(IOptions <AlipayOptions> alipayOptions)
 {
     Options    = alipayOptions.Value;
     _aopClient = new DefaultAopClient(Options.Gatewayurl, Options.AppId, Options.PrivateKey, "json", "1.0",
                                       Options.SignType, Options.AlipayPublicKey, Options.CharSet, Options.IsKeyFromFile);
 }
Exemple #28
0
 public AlipayMpAuthRequest(ClientConfig config, IAuthStateCache authStateCache) : base(config, new AlipayMPAuthSource(), authStateCache)
 {
     aopClient = new DefaultAopClient(source.accessToken(), config.clientId, config.clientSecret, "json", "1.0", "RSA2", config.alipayPublicKey, "GBK", false);
 }
 public AlipayMonitorImpl(string monitorUrl, string appId, string merchant_private_key, string format, string version,
                          string sign_type, string alipay_public_key, string charset)
 {
     client = new DefaultAopClient(monitorUrl, appId, merchant_private_key, format, version,
                                   sign_type, alipay_public_key, charset);
 }
Exemple #30
0
        /// <summary>
        /// 查询订单状态
        /// </summary>
        /// <param name="request"></param>
        /// <param name="sceneryDomain"></param>
        /// <returns></returns>
        public QueryResponse Query(QueryRequest request, SceneryDomain sceneryDomain)
        {
            var result = false;

            //创建淘宝支付信息
            client = new DefaultAopClient(serverUrl, sceneryDomain.Apipay.APP_ID, sceneryDomain.Apipay.APP_PRIVATE_KEY, "", version,
                                          sign_type, sceneryDomain.Apipay.ALIPAY_PUBLIC_KEY, charset);

            QueryResponse queryResponse = new QueryResponse();
            StringBuilder biz_content   = new StringBuilder();

            biz_content.Append("{\"out_trade_no\":\"" + request.Out_trade_no + "\"}");


            AlipayTradeQueryRequest payRequst = new AlipayTradeQueryRequest();

            payRequst.BizContent = biz_content.ToString();

            Dictionary <string, string> paramsDict  = (Dictionary <string, string>)payRequst.GetParameters();
            AlipayTradeQueryResponse    payResponse = null;


            LogHelper.AlipayLog(string.Format("论寻-请求josn:{0}", biz_content));
            payResponse = client.Execute(payRequst);

            LogHelper.AlipayLog(string.Format("论寻-结果:{0}-{1}-{2}", payResponse.Code, payResponse.TradeStatus, payResponse.Body));
            if (string.Compare(payResponse.Code, ResultCode.SUCCESS, false) == 0)
            {
                if (payResponse.TradeStatus == "TRADE_FINISHED" ||
                    payResponse.TradeStatus == "TRADE_SUCCESS" ||
                    payResponse.TradeStatus == "TRADE_CLOSED")
                {
                    if (payResponse.TradeStatus == "TRADE_SUCCESS")
                    {
                        var detailDao = new AlipayDetailDao();
                        var qrCodeDao = new AlipayQRCodeDao();
                        Alipay_trade_query_response alipayDetail = JsonConvert.DeserializeObject <Alipay_trade_query_response>(payResponse.Body);
                        //需要检查数据库中是否有改数据 有的话 直接返回
                        var QRCodeDetail = qrCodeDao.IsExistOut_trade_no(alipayDetail.alipay_trade_query_response.Out_trade_no, alipayDetail.alipay_trade_query_response.Total_amount
                                                                         , sceneryDomain.Apipay.APP_ID);

                        if (result == null || QRCodeDetail.SceneryName == "-1")
                        {
                            LogHelper.AlipayLog("论寻:无通知参数");
                        }
                        //论寻:数据已经存在,不需要插入
                        if (QRCodeDetail.SceneryName != "-2")
                        {
                            //保存支付宝信息
                            string body = payResponse.Body;
                            alipayDetail.alipay_trade_query_response.SceneryName    = sceneryDomain.SceneryName;
                            alipayDetail.alipay_trade_query_response.Creater        = sceneryDomain.Apipay.APP_ID;
                            alipayDetail.alipay_trade_query_response.Updater        = "";
                            alipayDetail.alipay_trade_query_response.AppId          = sceneryDomain.Apipay.APP_ID;
                            alipayDetail.alipay_trade_query_response.BatchNumber    = QRCodeDetail.BatchNumber;
                            alipayDetail.alipay_trade_query_response.SceneryRate    = sceneryDomain.Rate;
                            alipayDetail.alipay_trade_query_response.AlipayPlayDate = Convert.ToDateTime(alipayDetail.alipay_trade_query_response.Send_pay_date.ToString("yyyy-MM-dd"));
                            detailDao.Add(alipayDetail.alipay_trade_query_response);
                        }
                        else
                        {
                            LogHelper.AlipayLog("论寻:数据已经存在,不需要插入");
                        }
                        queryResponse.buyer_logon_id = alipayDetail.alipay_trade_query_response.Buyer_logon_id;
                        queryResponse.gmt_payment    = alipayDetail.alipay_trade_query_response.Send_pay_date;
                        queryResponse.trade_no       = alipayDetail.alipay_trade_query_response.Trade_no;
                        result = true;
                    }
                }
            }

            if (result == false && request.IsLastRequest == 1)
            {
                var content = new StringBuilder();
                content.Append("{\"out_trade_no\":\"" + payResponse.OutTradeNo + "\"}");
                biz_content = content;
                Cancel(content.ToString());
            }
            return(queryResponse);
        }