public PaymentDetailModel ChargeAccount(int userId, int chargeValue, string userNameFamilyString)
        {
            var    paymentDetailModel = new PaymentDetailModel();
            var    desc = string.Format(getResource.getMessage("PaymentDesc"), userNameFamilyString, chargeValue);
            string authority;
            int    status = _zarinPalService.RequestAuthoruty(chargeValue, desc, out authority);

            using (var dataModel = new MibarimEntities())
            {
                var pr = new PayReq();
                pr.PayReqCreateTime = DateTime.Now;
                pr.PayReqUserId     = userId;
                pr.PayReqValue      = chargeValue;
                pr.PayReqStatus     = status.ToString();
                if (status == 100)
                {
                    pr.PayReqAuthority = authority;
                }
                dataModel.PayReqs.Add(pr);
                dataModel.SaveChanges();
                paymentDetailModel.ReqId = pr.PayReqId;
            }
            paymentDetailModel.BankLink  = "https://www.zarinpal.com/pg/StartPay/" + authority;
            paymentDetailModel.Authority = authority;
            paymentDetailModel.State     = status;
            return(paymentDetailModel);
        }
Exemple #2
0
        /// <summary>
        /// 3 调起微信支付,(前提:微信已安装,且没有被应用回收,即正常人工可以使用)
        ///   新建一个包wxapi,建一个类名为WXPayEntryActivity作为接受微信的支付结果(回调名必须是:
        ///     你的包名+.wxapi.WXPayEntryActivity),添加如下代码到Mainfast里面就行了 exported = true
        ///      activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" 实现onResp函数
        ///   不过,最终结果以服务器的返回为准notify_url,App等待并轮询结果,接下来就是要为了做安全性设计,
        ///      把一些重要的东西放到服务器生生成,这样是为防止客户端被反编译,建议GenPackageSign/genProductArgs方法在服务端生成
        /// </summary>
        public bool SendPayReq(PayReq pReq)
        {
            bool isOk = false;

            try {
                if (!msgApi.IsWXAppInstalled)
                {
                    Toast.MakeText(this.Context, "您还没有安装微信,暂不支持此功能!", ToastLength.Short).Show();
                }
                else if (!msgApi.IsWXAppSupportAPI)
                {
                    Toast.MakeText(this.Context, "你安装的微信版本不支持当前开放API!", ToastLength.Short).Show();
                }
                else
                {
                    msgApi.RegisterApp(Constants.APPID);
                    msgApi.OpenWXApp();
                    isOk = msgApi.SendReq(pReq);
                }
            }
            catch (Exception ex) {
                Toast.MakeText(this.Context, ex.GetAllMsg(), ToastLength.Short).Show();
                //throw;
            }

            return(isOk);
        }
        public PasargadPayModel ChargePasargad(int userId, long chargeValue, string userNameFamilyString, long tripId,
                                               DateTime tripTime)
        {
            var pasargadPayModel = new CoreExternalService.Models.PasargadPayModel();
            var passPayModel     = new PasargadPayModel();
            var desc             = string.Format(getResource.getMessage("PaymentDesc"), userNameFamilyString, chargeValue);

            //(decimal chargeValue, string desc, long tripId, DateTime tripTime)
            pasargadPayModel = _pasargadService.RequestPayment((long)chargeValue, tripId, tripTime);

            using (var dataModel = new MibarimEntities())
            {
                var pr = new PayReq();
                pr.PayReqCreateTime = DateTime.Now;
                pr.PayReqUserId     = userId;
                pr.PayReqValue      = (int)chargeValue;
                pr.PayReqAuthority  = pasargadPayModel.MerchantCode;
                pr.PayReqStatus     = desc;
                dataModel.PayReqs.Add(pr);
                dataModel.SaveChanges();
                passPayModel.ReqId = pr.PayReqId;
            }
            passPayModel.Amount          = pasargadPayModel.Amount;
            passPayModel.MerchantCode    = pasargadPayModel.MerchantCode;
            passPayModel.TerminalCode    = pasargadPayModel.TerminalCode;
            passPayModel.Amount          = pasargadPayModel.Amount;
            passPayModel.RedirectAddress = pasargadPayModel.RedirectAddress;
            passPayModel.InvoiceNumber   = pasargadPayModel.InvoiceNumber;
            passPayModel.InvoiceDate     = pasargadPayModel.InvoiceDate;
            passPayModel.TimeStamp       = pasargadPayModel.TimeStamp;
            passPayModel.Sign            = pasargadPayModel.Sign;
            passPayModel.BankLink        = pasargadPayModel.BankLink;
            return(passPayModel);
        }
        public async Task <ClientResponse> CallReverseAsync(string payId)
        {
            var request = new PayReq()
            {
                PayId = payId
            };

            FillAndSign(request);

            return(await CreatePutRequestAsync("payment/reverse", request));
        }
        public async Task <ClientResponse> CallOneClickStartAsync(string payId)
        {
            var request = new PayReq()
            {
                PayId = payId
            };

            FillAndSign(request);

            return(await CreatePostRequestAsync("payment/oneclick/start", request));
        }
        private async Task <ClientResponse> CallPaymenProcessAsync(string payId, string method)
        {
            var request = new PayReq()
            {
                PayId = payId
            };

            FillAndSign(request);

            return(await CreateGetRequestAsync(method, request, true, (method != "payment/process")));
        }
Exemple #7
0
        private static async Task <ClientResponse> CreateGetRequest(string method, PayReq request, bool actLikeBrowser = false, bool autoRedirectHeader = true)
        {
            var url =
                $"{Constants.GatewayUrl}/" +
                $"{method}/" +
                $"{HttpUtility.UrlEncode(request.MerchantId)}/" +
                $"{request.PayId}/" +
                $"{request.DateTime}/" +
                $"{HttpUtility.UrlEncode(request.Signature, Encoding.UTF8)}";

            return(await GetRequestResponse(url, actLikeBrowser, autoRedirectHeader));
        }
Exemple #8
0
        public static async Task <ClientResponse> CallClose(string payId)
        {
            var request = new PayReq()
            {
                MerchantId = MerchantId,
                DateTime   = $"{DateTime.Now:yyyyMMddHHmmss}",
                PayId      = payId
            };

            request.Signature = Crypto.Sign(request.ToSign(), Constants.PrivateKeyFilePath);

            return(await CreatePutRequest("payment/close", request));
        }
Exemple #9
0
        private static async Task <ClientResponse> CallPaymenProcess(string payId, string method)
        {
            var request = new PayReq()
            {
                MerchantId = MerchantId,
                DateTime   = $"{DateTime.Now:yyyyMMddHHmmss}",
                PayId      = payId
            };

            request.Signature = Crypto.Sign(request.ToSign(), Constants.PrivateKeyFilePath);

            return(await CreateGetRequest(method, request, true, (method != "payment/process")));
        }
Exemple #10
0
        /// <summary>
        /// 2 (根据预支付得到的prepay_id) 生成APP微信支付参数 以发起微信支付
        /// </summary>
        public PayReq GenPayReq(string prepay_id = "")
        {
            var mReq = new PayReq();

            mReq.AppId        = Constants.APPID;
            mReq.PartnerId    = Constants.MCHID;
            mReq.PrepayId     = prepay_id;
            mReq.PackageValue = "Sign=WXPay";
            mReq.NonceStr     = GenNoceStr();
            mReq.TimeStamp    = GenTimeStamp();

            mReq.Sign = GenPayReqSign(mReq);
            return(mReq);
        }
Exemple #11
0
        private string GenPayReqSign(PayReq mReq)
        {
            Dictionary <string, string> packageParams = new Dictionary <string, string>();

            packageParams.Add("appid", mReq.AppId);
            packageParams.Add("partnerid", mReq.PartnerId);  //商品或支付单简要描述:如 Ipad mini  16G  白色   detail 可选字段 商品详情
            packageParams.Add("prepayid", mReq.PrepayId);
            packageParams.Add("package", mReq.PackageValue);
            packageParams.Add("noncestr", mReq.NonceStr);  //接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数
            packageParams.Add("timestamp", mReq.TimeStamp);
            string sign = GenPackageSign(packageParams);

            packageParams.Add("sign", sign);

            return(sign);
        }
Exemple #12
0
        public PaymentDetailModel FanapBookTrip(int userId, long tripId)
        {
            var res          = new PaymentDetailModel();
            var fanapService = new FanapService();
            var pr           = new PayReq();

            using (var dataModel = new MibarimEntities())
            {
                var trip = dataModel.vwDriverTrips.FirstOrDefault(x => x.TripId == tripId && !x.DrIsDeleted);
                if (trip != null)
                {
                    pr.PayReqCreateTime = DateTime.Now;
                    pr.PayReqUserId     = userId;
                    pr.PayReqValue      = (double)trip.PassPrice;
                    dataModel.PayReqs.Add(pr);
                    dataModel.SaveChanges();
                    var bookreq = new BookRequest();
                    bookreq.TripId       = tripId;
                    bookreq.BrCreateTime = DateTime.Now;
                    bookreq.BookingType  = (int)BookingTypes.Fanap;
                    bookreq.UserId       = userId;
                    bookreq.IsBooked     = false;
                    bookreq.PayReqId     = pr.PayReqId;
                    dataModel.BookRequests.Add(bookreq);
                    dataModel.SaveChanges();

                    var fanapUser = dataModel.Fanaps.Where(x => x.userId == userId).OrderByDescending(y => y.FanapId).FirstOrDefault();
                    var user      = dataModel.vwUserInfoes.FirstOrDefault(x => x.UserId == userId);
                    var ott       = fanapService.GetOneTimeToken();
                    var desc      = string.Format(getResource.getMessage("PaymentDesc"), user.Name + " " + user.Family, trip.PassPrice);
                    var factorId  = fanapService.IssueInvoice(trip.PassPrice, fanapUser.fuserId, ott, desc);

                    /*res.BankLink = "http://sandbox.fanapium.com:1031/v1/pbc/payinvoice/?invoiceId=" + factorId
                     + "&redirectUri=" + "http://ifanap.mibarim.ir/fanap/PayReturn/?payreqId=" + pr.PayReqId +
                     +         "&callUri=" + "http://ifanap.mibarim.ir/fanap/PayReturn/?payreqId=" + pr.PayReqId;*/
                    res.BankLink = "https://gw.fanapium.com/v1/pbc/payinvoice/?invoiceId=" + factorId
                                   + "&redirectUri=" + "http://ifanap.mibarim.ir/fanap/PayReturn/?payreqId=" + pr.PayReqId +
                                   "&callUri=" + "http://ifanap.mibarim.ir/fanap/PayReturn/?payreqId=" + pr.PayReqId;
                    pr.PayReqRefID = factorId;
                    dataModel.SaveChanges();
                }
                return(res);
            }
        }
        /// <summary>
        /// 调起支付
        /// </summary>
        /// <param name="context"></param>
        /// <param name="AppId">微信开放平台审核通过的应用APPID</param>
        /// <param name="partnerId">微信支付分配的商户号</param>
        /// <param name="prepayId">调用接口提交的终端设备号</param>
        /// <param name="nonceStr">随机字符串,不长于32位</param>
        /// <param name="timeStamp">时间戳</param>
        /// <param name="sign">签名</param>
        /// <returns></returns>
        public bool Pay(Context context, string AppId, string partnerId, string prepayId, string nonceStr, string timeStamp, string sign)
        {
            var api = WXAPIFactory.CreateWXAPI(context, AppId);

            api.RegisterApp("APP_ID");

            PayReq payRequest = new PayReq();

            payRequest.AppId = AppId;

            payRequest.PartnerId = partnerId;

            payRequest.PrepayId = prepayId;

            payRequest.PackageValue = "Sign=WXPay";

            payRequest.NonceStr = nonceStr;

            payRequest.TimeStamp = timeStamp;

            payRequest.Sign = sign;

            return(api.SendReq(payRequest));
        }
Exemple #14
0
        //发起预支付请求
        public void sendpayorder()
        {
            string TimeStamp = getTimestamp();
            //随机字符串
            string NonceStr = getNoncestr();
            //创建支付应答对象
            var packageReqHandler = new RequestHandler();

            //初始化
            packageReqHandler.init();

            packageReqHandler.setParameter("body", "会员公司费用"); //商品信息 127字符
            packageReqHandler.setParameter("appid", appid);
            packageReqHandler.setParameter("mch_id", mchid);
            packageReqHandler.setParameter("nonce_str", NonceStr.ToLower());
            packageReqHandler.setParameter("notify_url", "http://XXX/pay.aspx");

            packageReqHandler.setParameter("out_trade_no", orderid);           //商家订单号
            packageReqHandler.setParameter("spbill_create_ip", "192.168.1.1"); //用户的公网ip,不是商户服务器IP
            //  packageReqHandler.setParameter("total_fee", (am.Aconfiginfo.Vipmoney*100).ToString()); //商品金额,以分为单位(money * 100).ToString()
            packageReqHandler.setParameter("total_fee", "1");
            packageReqHandler.setParameter("trade_type", "APP");

            packageReqHandler.setParameter("attach", "");//自定义参数 127字符

            string Sign = packageReqHandler.CreateMd5Sign("key", AppKey);

            packageReqHandler.setParameter("sign", Sign);
            string data      = packageReqHandler.parseXML();
            string prepayXml = HttpUtil.Send(data, "https://api.mch.weixin.qq.com/pay/unifiedorder");


            var xdoc = new XmlDocument();

            xdoc.LoadXml(prepayXml);
            XmlNode     xn  = xdoc.SelectSingleNode("xml");
            XmlNodeList xnl = xn.ChildNodes;

            if (xnl.Count > 7)
            {
                string PrepayId = xnl[7].InnerText;
                TimeStamp = getTimestamp();
                //随机字符串
                NonceStr = getNoncestr();



                PayReq payRequest = new PayReq();
                payRequest.AppId        = appid;
                payRequest.PrepayId     = PrepayId;
                payRequest.PartnerId    = mchid;
                payRequest.PackageValue = "Sign=WXPay";
                payRequest.NonceStr     = NonceStr;
                payRequest.TimeStamp    = TimeStamp;

                var paySignReqHandler = new RequestHandler();
                paySignReqHandler.setParameter("appid", payRequest.AppId);
                paySignReqHandler.setParameter("noncestr", payRequest.NonceStr);
                paySignReqHandler.setParameter("package", "Sign=WXPay");
                paySignReqHandler.setParameter("partnerid", payRequest.PartnerId);
                paySignReqHandler.setParameter("prepayid", payRequest.PrepayId);
                paySignReqHandler.setParameter("timestamp", payRequest.TimeStamp);
                // paySignReqHandler.setParameter("signType", "MD5");
                string PaySign = paySignReqHandler.CreateMd5Sign("key", AppKey);
                payRequest.Sign = PaySign;
                Toast.MakeText(this, "正在调起支付", ToastLength.Short).Show();
                wxApi.RegisterApp(appid);

                //这个返回 一直都是true 哪怕你参数都是错的 我也是醉了 我被这个状态迷惑了好久在找其他问题
                bool issceuss = wxApi.SendReq(payRequest);
                //  Toast.MakeText(this, "状态"+ issceuss, ToastLength.Short).Show();
            }
        }
Exemple #15
0
 public QueryRoutesResponse QueryRoutes(PayReq payReq, int maxRoutes)
 {
     return(LndClient.QueryRoutes(payReq.Destination, payReq.NumSatoshis, maxRoutes: maxRoutes));
 }
Exemple #16
0
 /// <summary>
 /// 发送支付请求
 /// </summary>
 /// <param name="req">支付请求信息</param>
 /// <returns>是否发送成功,不等于支付成功</returns>
 public bool SendPayReq(PayReq req)
 {
     req.SignType = "MD5";
     return(IsApi && Api.SendReq(req));
 }