public async Task <IActionResult> ScanCodeGen(string orderName, string orderAmount, string outTradeNo) { AlipayTradePrecreateContentBuilder builder = BuildPrecreateContent(orderName, orderAmount, outTradeNo); //如果需要接收扫码支付异步通知,那么请把下面两行注释代替本行。 //推荐使用轮询撤销机制,不推荐使用异步通知,避免单边账问题发生。 AlipayF2FPrecreateResult precreateResult = _alipayF2FService.TradePrecreate(builder); //string notify_url = "http://10.5.21.14/Pay/Notify"; //商户接收异步通知的地址 //AlipayF2FPrecreateResult precreateResult = serviceClient.tradePrecreate(builder, notify_url); //以下返回结果的处理供参考。 //payResponse.QrCode即二维码对于的链接 //将链接用二维码工具生成二维码打印出来,顾客可以用支付宝钱包扫码支付。 var bitmap = new Bitmap(Path.Combine(_hostingEnvironment.WebRootPath, "FTFPay/images/error.png")); switch (precreateResult.Status) { case ResultEnum.SUCCESS: bitmap.Dispose(); bitmap = RenderQrCode(precreateResult.response.QrCode); //轮询订单结果 //根据业务需要,选择是否新起线程进行轮询 ParameterizedThreadStart parStart = new ParameterizedThreadStart(LoopQuery); Thread myThread = new Thread(parStart); object o = precreateResult.response.OutTradeNo; myThread.Start(o); break; case ResultEnum.FAILED: Console.WriteLine("生成二维码失败:" + precreateResult.response.Body); break; case ResultEnum.UNKNOWN: Console.WriteLine("生成二维码失败:" + (precreateResult.response == null ? "配置或网络异常,请检查后重试" : "系统异常,请更新外部订单后重新发起请求")); break; } MemoryStream ms = new MemoryStream(); bitmap.Save(ms, ImageFormat.Png); byte[] bytes = ms.GetBuffer(); ms.Close(); return(File(bytes, "image/png")); }
public async Task <CreatePaymentResponse> CreatePaymentAsync(CreatePaymentRequest request) { var result = new CreatePaymentResponse(); AlipayTradePrecreateContentBuilder builder = BuildPrecreateContent(request.PaymentId, request.Description, request.Amount); //支付回调 string tenPayNotify = string.Concat(_configuration.ServerAddress, _configuration.NotifyUrl); AlipayF2FPrecreateResult precreateResult = _alipayF2FService.TradePrecreate(builder, tenPayNotify); //AlipayF2FPrecreateResult precreateResult = _alipayF2FService.TradePrecreate(builder); switch (precreateResult.Status) { case ResultEnum.SUCCESS: result.AdditionalData.Add("CodeUrl", precreateResult.response.QrCode); break; default: _logger.Error(L("Payments.Alipay.PayFail", precreateResult.response.SubCode, precreateResult.response.SubMsg)); break; } return(await Task.FromResult(result)); }