public async Task Precreate() { string orderId = Guid.NewGuid().ToString().Replace("-", string.Empty); var content = new PrecreateContent { OutTradeNo = orderId, Subject = "Preceate Test" + orderId, TotalAmount = 1 }; var arg = new PrecreateArg { AppId = config.AppId, BizContent = content }; var client = new AlipayClient(); client.PrivateKey = @"D:\Programing\Dev Repos\ZeusPay\alipayPrivateKey.txt"; client.AlipayRootCertSN = GetCertSN(@"D:\Programing\Dev Repos\ZeusPay\alipayRootCert.crt"); client.AppCertSN = GetCertSN(@"D:\Programing\Dev Repos\ZeusPay\appCertPublicKey.crt"); client.UseProductEnv(); await PrecreateRequest.Request(client, arg); }
/// <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); }