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); }
/// <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"))); }
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)); }
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)); }
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"))); }
/// <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); }
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); }
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)); }
//发起预支付请求 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(); } }
public QueryRoutesResponse QueryRoutes(PayReq payReq, int maxRoutes) { return(LndClient.QueryRoutes(payReq.Destination, payReq.NumSatoshis, maxRoutes: maxRoutes)); }
/// <summary> /// 发送支付请求 /// </summary> /// <param name="req">支付请求信息</param> /// <returns>是否发送成功,不等于支付成功</returns> public bool SendPayReq(PayReq req) { req.SignType = "MD5"; return(IsApi && Api.SendReq(req)); }