/// <summary> /// 获取订单字符串后发送支付请求 /// </summary> /// <param name="order"></param> public void Send(fastCSharp.net.returnValue<string> order) { bool isCheck = false; if (order.IsReturn && order.Value != null) { try { using (PayTask alipay = new PayTask(activity)) { IDictionary<string, string> payResult = alipay.PayV2(order.Value, isShowPayLoading); if (payResult["resultStatus"] == "9000") { string result = payResult["result"]; if (checkOrderResult(result)) { isCheck = true; if (callback != null) callback(result); return; } } } } catch (System.Exception error) { fastCSharp.log.Default.Add(error, null, false); } } if (!isCheck && callback != null) callback(null); }
public void ShowActionSheet() { #region ActinSheet Items List<ActionSheetArgs> items = new List<ActionSheetArgs>(); var alipayItem = new ActionSheetArgs("支付宝"); alipayItem.OnClick += () => { if (!AlipayHelper.CheckConfig()) { Toast.MakeText(ApplicationContext, "系统异常.", ToastLength.Long); Log.Error(Tag, "Aplipay Config Exception "); return; } string payInfo = AlipayHelper.GetPayInfo(); // 完整的符合支付宝参数规范的订单信息 Runnable payRunnable = new Runnable(() => { PayTask alipay = new PayTask(this); // 调用支付接口,获取支付结果 string result = alipay.Pay(payInfo); Message msg = new Message { What = (int)MsgWhat.AlipayPayFlag, Obj = result }; _handler.SendMessage(msg); }); // 必须异步调用 Thread payThread = new Thread(payRunnable); payThread.Start(); }; items.Add(alipayItem); var weixinItem = new ActionSheetArgs("微信"); weixinItem.OnClick += () => { Runnable wxpayRunnable = new Runnable(() => { _weixinpayHelper = new WeixinpayHelper(this); _weixinpayHelper.Execute(); }); // 必须异步调用 Thread payThread = new Thread(wxpayRunnable); payThread.Start(); }; items.Add(weixinItem); #endregion var menuView = new ActionSheet(this); menuView.SetCancelButtonTitle("取消");// before add items menuView.Items = items; menuView.CancelableOnTouchOutside = true; menuView.ShowMenu(); }
/// <summary> /// 同步调用支付 /// </summary> /// <param name="activity">UI 上下文</param> /// <param name="getOrderString">获取订单字符串</param> /// <param name="checkOrderResult">验证订单结果</param> /// <param name="isShowPayLoading">用户在商户app内部点击付款,是否需要一个loading做为在钱包唤起之前的过渡,这个值设置为true,将会在调用pay接口的时候直接唤起一个loading,直到唤起H5支付页面或者唤起外部的钱包付款页面loading才消失。(建议将该值设置为true,优化点击付款到支付唤起支付页面的过渡过程。)</param> /// <returns>订单结果,null 表示失败</returns> public static string Pay(Activity activity, Func<fastCSharp.net.returnValue<string>> getOrderString, Func<string, fastCSharp.net.returnValue<bool>> checkOrderResult, bool isShowPayLoading = true) { if (activity != null && getOrderString != null && checkOrderResult != null) { try { string orderInfo = getOrderString(); if (orderInfo != null) { using (PayTask alipay = new PayTask(activity)) { IDictionary<string, string> payResult = alipay.PayV2(orderInfo, isShowPayLoading); if (payResult["resultStatus"] == "9000") { string result = payResult["result"]; if (checkOrderResult(result)) return result; } } } } catch (Exception error) { fastCSharp.log.Default.Add(error, null, false); } } return null; }
public ChinaRailwayApp(ulong id, string key, string gateway_url) { this.app_id = id; { var data_serializer = new DataSerializer(new JsonSerializerSettings() { DateFormatString = "yyyy-MM-dd HH:mm:ss.fff", NullValueHandling = NullValueHandling.Ignore, ContractResolver = new Smartunicom.Runtime.Serialization.ContractResolver.JsonSnakeCasePropertyNamesContractResolver() }); var data_signer = new RS256(); data_signer.SetPrivateKey(key); var data_signer_all = new DataSignature(data_signer, data_verifier, data_hs256); { this.order_task = new ChargeTask(this.app_id, data_serializer, data_signer_all, gateway_url); this.payment_task = new PayTask(this.app_id, data_serializer, data_signer_all, gateway_url); this.transfer_task = new TransferTask(this.app_id, data_serializer, data_signer_all, gateway_url); this.webhook_task = new WebHookTask(this.app_id, data_serializer, data_signer_all, gateway_url); this.serializer = new Serializer(data_serializer); } } }
string RSA_PRIVATE = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCcoUuOkRqYpyWbq/E8I4TLjAcabujagLT46YBFwtMhJm6/93hvk/BZwq/w2vu4UbPqFHaYmw58F89Hzm4yXmj8oogQJhyLOauZbVkK9+UlUAq13xDLExd9BCxGD0d6mBk/XulF+NPQqhgbkbg2c9s8F2fO/wDLbhdJCUEBmJwCM7MVvLnJlRTe17CwxWYjOJaaNN8YLSi/MFzDIF8NBZqFdF9QkW490seO7po7EBSg8GgglxL1Hds+/FDc7M+JcG4f3xEIh26OhxPZcJH7xnzxFWl/Yjs4Q4jRtS4AjD9aEruPJ8krFynzxJo/9JPBqP7DJ9mBV6ulEH/uYjhsoFXfAgMBAAECgf8GHkbVStW/IMhXTGAf+UM2sEGWxr5RyrVHA9f+4Z1driKlXQVXVnANEY3N2r/6czaT7jizvVrTfhqas3WaghWXyMGH3/U9ewM4+wx/YS+SRY4ljJEbXaONPpx8IByqrUZPM2XpVc7wV7SZXxfTCLOHpWJos41UZPiD4dioN03gyBSR50JbG8AKqcFJ4MyAi9R21BuKpsMo4xtCiApOylwR89ZJMuujcsHx3euBCdHezm577144P6pEfZgTQ/GOmw2W1zkveigy6ca+EskuNzmczZ6lRgxY2/avgPCX/6vDD/pWacSqX4VE/oBZaCQ5msfs+TfNlwjnfAXYEsiaEDECgYEAyIMB4FYcDxXMfozHlyiLdmvul4mNiCbxhXPjZDvGZgOCd4mm/8bNv9KJ/RYI+2UOnPzo5PxDcRizAn4h5gDD4LArZWj9yyniQ2evaHyu3FtSDKl0tlDO4J4Zu20ayZAMmVHjoxA+pGxQsuRBLrm9odL/EVf0uCTRya3t58JuYg0CgYEAx/mMBgOpgfGqAC1h+HHX0x1q165kpW4E04u1S7v660bBFN+YWQcuF0YBrT+yAfim3U1+w5xDw1WADK8w1Hqc7tjSEVpnRUk/DHWaCWVzpPtwniV1W2nTGkE+o0g3e+pzMZmn10ptW3pGkcRzoagEz1zYTeGAs6Ym+qRkP2FQ2JsCgYEAt3Icall9zFNeRz2XcXUXux1eKWggg7tVZoozNUX26ug1GhZnIkWJggEmW9UoHJBFgV1l2fHt5e/5/sLVUq/KhavH2DzpTVGhf5fCBG9mL5ahB5KVhCOEUj5zPmXAhz5yOGeSQ2KeXSH35uMru4sVspLu57g33a1Z/hFRwqLBCJUCgYAWTJF8qjPgtZ4LXwQpvCgg9orPejbm65nGLTIOO+wDCGTHexd19gMBvWC6fPvQlHWm/9k+3tH/mi0pPO/pAbM2Px9NqBMT+tL5BLQkkBeRMiigufSYOPi9WMEvXAIz4zTtNwEsVLRVGxF7d7idMis3JFdKd/buEX0PPf2fw65MOQKBgQC/QPKmyhJlWj7ryk9o8+7FCYpccRZttmN4srL0DaGX/U4AniLFy3Uh16v2xgJAZmWtZyvfgqha1SXYeRs8BRDrBa26qvQKnIE0d4aE6pMTFOCarSMBCJReKSMy4j1/UN12GPg8jXZ8yKyrPX88EnKLSWfc5LBE5GBcEEhLMDZRtg=="; //商户密钥 protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Pay); PayTask payTask = new PayTask(this); Toast.MakeText(this, payTask.Version, ToastLength.Long).Show(); var btn = FindViewById <Button>(Resource.Id.btnPay); btn.Click += btn_Click; }
private void Pay(object sign) { try { PayTask payTask = new PayTask(this); var result = payTask.PayV2(sign.ToString(), true); string Status = result["resultStatus"]; RunOnUiThread(() => { MessagingCenter.Send(new object(), "PaySuccess", Status); }); } catch (Exception ex) { throw ex; } }
private void Pay() { try { var con = getOrderInfo("test", "testbody"); var sign = SignatureUtils.Sign(con, RSA_PRIVATE); sign = Java.Net.URLEncoder.Encode(sign, "utf-8"); con += "&sign=\"" + sign + "\"&" + MySignType; PayTask pa = new PayTask(this); var result = pa.Pay(con, false); Logger_Info("支付宝result:" + result); } catch (Exception ex) { Logger_Info("2" + ex.Message + ex.StackTrace); } }
private string Pay(object sign) { try { PayTask payTask = new PayTask(this); var result = payTask.Pay(sign.ToString(), false); string status = GetPayResultStatus(result); //MessagingCenter.Send(new object(), "PaySuccess", status); return(status); } catch (Exception ex) { throw ex; } }
/* * public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) * { * Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); * * base.OnRequestPermissionsResult(requestCode, permissions, grantResults); * }*/ #region 支付宝 private void Pay(object sign) { try { PayTask payTask = new PayTask(this); var result = payTask.PayV2(sign.ToString(), true); //Status = result["resultStatus"]; Looper.Prepare(); //switch (status) //{ // case "9000": Android.Widget.Toast.MakeText(this, "订单支付成功!", Android.Widget.ToastLength.Long).Show(); break; // case "8000": Android.Widget.Toast.MakeText(this, "正在处理中!", Android.Widget.ToastLength.Long).Show(); break; // case "4000": Android.Widget.Toast.MakeText(this, "订单支付失败!", Android.Widget.ToastLength.Long).Show(); break; // case "6001": Android.Widget.Toast.MakeText(this, "用户中途取消!", Android.Widget.ToastLength.Long).Show(); break; // case "6002": Android.Widget.Toast.MakeText(this, "网络连接出错!", Android.Widget.ToastLength.Long).Show(); break; // default: break; //} switch (result["resultStatus"]) { case "9000": CrossToastPopUp.Current.ShowToastSuccess("订单支付成功!", ToastLength.Long); break; case "8000": CrossToastPopUp.Current.ShowToastWarning("正在处理中!", ToastLength.Long); break; case "4000": CrossToastPopUp.Current.ShowToastError("订单支付失败!", ToastLength.Long); break; case "6001": CrossToastPopUp.Current.ShowToastWarning("用户中途取消!", ToastLength.Long); break; case "6002": CrossToastPopUp.Current.ShowToastError("网络连接出错!", ToastLength.Long); break; default: break; } Looper.Loop(); //return result["resultStatus"]; //Thread.CurrentThread.Abort(); } catch (Exception ex) { throw ex; } }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); var button = FindViewById<Button>(Resource.Id.MyButton); var alipayHandler=new AlipayHandler(); button.Click += delegate { var payTask = new PayTask(this); var order = "partner=\"2088001152192050\"&seller_id=\"[email protected]\"&out_trade_no=\"w2413209423\"&subject=\"payw2413209423\"&body=\"payw2413209423\"&total_fee=\"0.01\"¬ify_url=\"http://221.122.53.190:6804/NewWebPay/FromPhoneAlipay.aspx\"&service=\"mobile.securitypay.pay\"&payment_type=\"1\"&_input_charset=\"utf-8\"&sign=\"E0tHnnq40wfnMn6G6T54%2fBmshvUlSUYAcWhgZjoxQu02W8gspQFHogCDDAmnfo9WFUG%2b%2f32x8IIl1hUkaK9sqP64Fvk6PnIyMgoms8en1PpIL0Z4VUSsqjtGrOVrhwfOnb5sWlPATEu7MuXWnoH1yp%2fWJdyPdHmzljEF%2fFINyZE%3d\"&sign_type=\"RSA\""; var result = payTask.Pay(order); var msg = new Message { Obj = result }; alipayHandler.SendMessage(msg); }; }
protected override void OnCreate(Bundle savedInstanceState) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); Xamarin.Forms.MessagingCenter.Subscribe <object>(this, MessagingCenterKey.Pay, obj => { /* * 这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成; * 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成; * 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险; * * orderInfo 的获取必须来自服务端; */ var appid = ""; var rsa2 = true; var para = OrderInfoUtil2_0.BuildOrderParamMap(appid, rsa2); var orderParam = OrderInfoUtil2_0.BuildOrderParam(para); var privateKey = ""; var sign = OrderInfoUtil2_0.GetSign(para, privateKey, rsa2); var orderInfo = orderParam + "&" + sign; // 必须异步调用 Task.Run(() => { var alipay = new PayTask(this); var result = alipay.PayV2(orderInfo, true); MessagingCenter.Send(new object(), MessagingCenterKey.Payed, result); }); }); LoadApplication(new App()); }
private void AlipayPay(object sender, EventArgs args) { if (!AliPayHelper.CheckConfig()) { Toast.MakeText(ApplicationContext, "系统异常.", ToastLength.Long); Log.Error(Tag, "Aplipay Config Exception "); return; } string payInfo = AliPayHelper.GetPayInfo(); // 完整的符合支付宝参数规范的订单信息 Runnable payRunnable = new Runnable(() => { PayTask alipay = new PayTask(this); // 调用支付接口,获取支付结果 string result = alipay.Pay(payInfo); Message msg = new Message { What = (int)MsgWhat.AlipayPayFlag, Obj = result }; _handler.SendMessage(msg); }); // 必须异步调用 Thread payThread = new Thread(payRunnable); payThread.Start(); }
/** * get the sdk version. 获取SDK版本号 * */ public void getSDKVersion() { PayTask payTask = new PayTask(this); string version = payTask.Version; Toast.MakeText(this, version, ToastLength.Short).Show(); }
/** * check whether the device has authentication alipay account. * 查询终端设备是否存在支付宝认证账户 * */ public void check(object o, EventArgs e) { Runnable checkRunnable = new Runnable(()=> { PayTask payTask = new PayTask(this); // 调用查询接口,获取查询结果 bool isExist = payTask.CheckAccountIfExist(); Message msg = new Message(); msg.What = SDK_CHECK_FLAG; msg.Obj = isExist; mHandler.SendMessage(msg); }); Thread checkThread = new Thread(checkRunnable); checkThread.Start(); }
public void pay(object o, EventArgs e) { if (string.IsNullOrWhiteSpace(PARTNER) || string.IsNullOrWhiteSpace(RSA_PRIVATE) || string.IsNullOrWhiteSpace(SELLER)) { new AlertDialog.Builder(this) .SetTitle("警告") .SetMessage("需要配置PARTNER | RSA_PRIVATE| SELLER") .SetPositiveButton("确定", (dialoginterface, i) => { Finish(); } ).Show(); return; } // 订单 string orderInfo = GetOrderInfo("测试的商品", "该测试商品的详细描述", "0.01"); // 对订单做RSA 签名 string sign = Sign(orderInfo); try { // 仅需对sign 做URL编码 sign = Java.Net.URLEncoder.Encode(sign, "UTF-8"); } catch (UnsupportedEncodingException ex) { ex.PrintStackTrace(); } finally { string payInfo = orderInfo + "&sign=\"" + sign + "\"&" + GetSignType(); // 完整的符合支付宝参数规范的订单信息 Runnable payRunnable = new Runnable(()=> { PayTask alipay = new PayTask(this); // 调用支付接口,获取支付结果 string result = alipay.Pay(payInfo); Message msg = new Message(); msg.What = SDK_PAY_FLAG; msg.Obj = result; mHandler.SendMessage(msg); }); // 必须异步调用 Thread payThread = new Thread(payRunnable); payThread.Start(); } }