Beispiel #1
0
        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);
        }
Beispiel #2
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);
        }