Beispiel #1
0
        public async Task <IActionResult> LiteAppPay(WeChatPayLiteAppPayViewModel viewModel)
        {
            var request = new WeChatPayUnifiedOrderRequest
            {
                Body           = viewModel.Body,
                OutTradeNo     = viewModel.OutTradeNo,
                TotalFee       = viewModel.TotalFee,
                SpBillCreateIp = viewModel.SpBillCreateIp,
                NotifyUrl      = viewModel.NotifyUrl,
                TradeType      = viewModel.TradeType,
                OpenId         = viewModel.OpenId
            };
            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);

            if (response.ReturnCode == "SUCCESS" && response.ResultCode == "SUCCESS")
            {
                var req = new WeChatPayLiteAppSdkRequest
                {
                    Package = "prepay_id=" + response.PrepayId
                };
                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value);

                // 将参数(parameter)给 小程序前端 让他调起支付API(https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5)
                ViewData["parameter"] = JsonConvert.SerializeObject(parameter);
                ViewData["response"]  = response.ResponseBody;
                return(View());
            }
            ViewData["response"] = response.ResponseBody;
            return(View());
        }
Beispiel #2
0
        // 小程序支付
        public async Task <WeChatPayDictionary> LiteAppPay(PayRequest request)
        {
            var order = orderService.GetByRef(request.Id);
            var req   = new WeChatPayUnifiedOrderRequest
            {
                OutTradeNo     = order.Order_SN,
                Body           = order.Name,
                TotalFee       = (int)(order.Pay_Money * 100),
                SpBillCreateIp = App.Context.GetClientIp(),
                NotifyUrl      = request.NotifyUrl,
                TradeType      = WepayTypes.JSAPI,
                OpenId         = request.OpenId
            };

            var res = await client.ExecuteAsync(req, options.Value);

            if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS")
            {
                var jsapiReq = new WeChatPayLiteAppSdkRequest
                {
                    Package = "prepay_id=" + res.PrepayId
                };

                // 将参数[res.parameter]给小程序前端让他调起支付API
                // https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5
                return(await client.ExecuteAsync(jsapiReq, options.Value));
            }

            throw new AceException($"APP支付错误:{res.ErrCode}:{res.ErrCodeDes}");
        }
        public async Task <PaymentOrderBaseResponse> GeneratePaymentOrder(PaymentOrderRequest request)
        {
            var ip = Dns.GetHostEntry(Dns.GetHostName())
                     .AddressList.FirstOrDefault(address => address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)?.ToString()
                     ?? "127.0.0.1";

            var apiHost = await _appSettingService.Get(ShopKeys.ApiHost);

            var wxRequest = new WeChatPayUnifiedOrderRequest
            {
                Body       = request.Subject,
                OutTradeNo = request.OrderNo,
                TotalFee   = Convert.ToInt32(request.TotalAmount * 100),
                OpenId     = request.OpenId,
                TradeType  = "JSAPI",
                //SpbillCreateIp = "127.0.0.1",
                SpBillCreateIp = ip,
                NotifyUrl      = $"{apiHost.Trim('/')}/api/mp/pay/notify/{request.OrderNo}",
            };

            var config = await _appSettingService.Get <MiniProgramOptions>();

            var opt = new WeChatPayOptions()
            {
                AppId  = config.AppId,
                MchId  = config.MchId,
                Secret = config.AppSecret,
                Key    = config.Key
            };
            var response = await _client.ExecuteAsync(wxRequest, opt);

            if (response?.ReturnCode == WeChatPayCode.Success && response?.ResultCode == WeChatPayCode.Success)
            {
                var req = new WeChatPayLiteAppSdkRequest
                {
                    Package = $"prepay_id={response.PrepayId}"
                };

                // https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5
                // 将参数(parameter)给 小程序前端 让他调起支付API
                var parameter = await _client.ExecuteAsync(req, opt);

                var json = JsonConvert.SerializeObject(parameter);
                return(JsonConvert.DeserializeObject <PaymentOrderResponse>(json));
            }
            throw new Exception(response?.ReturnMsg);
        }
Beispiel #4
0
        // 小程序支付
        public async Task <PayResult> LiteAppPay(PayRequest request)
        {
            var order = OrderService.Get(request.Id);
            var req   = new WeChatPayUnifiedOrderRequest
            {
                OutTradeNo     = order.Order_SN,
                Body           = order.Name,
                TotalFee       = (int)(order.Order_Money * 100),
                SpBillCreateIp = App.Context.GetClientIp(),
                NotifyUrl      = request.NotifyUrl,
                TradeType      = WepayTypes.JSAPI,
                OpenId         = request.OpenId
            };

            logger.LogDebug($"Wepay LiteAppPay begin with: {request.Id}");
            var res = await client.ExecuteAsync(req, options.Value);

            if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS")
            {
                var jsapiReq = new WeChatPayLiteAppSdkRequest
                {
                    Package = "prepay_id=" + res.PrepayId
                };

                logger.LogDebug($"Wepay LiteAppPay end with: {request.Id} SUCCESS");

                // 将参数[res.parameter]给小程序前端让他调起支付API
                // https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5
                return(new PayResult
                {
                    Success = true,
                    Params = await client.ExecuteAsync(jsapiReq, options.Value)
                });
            }

            logger.LogDebug($"Wepay LiteAppPay end with: {request.Id} Fail: {res.ErrCode}:{res.ErrCodeDes}");
            return(new PayResult
            {
                Success = false,
                Error = $"{res.ErrCode}:{res.ErrCodeDes}"
            });
        }