public void GetSignTest() { BeeCloud.registerApp("afae2a33-c9cb-4139-88c9-af5c1df472e1", "fc8865bb-9dca-454e-ba8e-0d8ed6cc83a2", "506371c7-b095-45da-bfce-9ae857c41a85", null); string sign = "e204d63775d3d29dafe6788a0a978755"; string actual = BCUtil.GetSign("5f0c1466d8bd11e6b66d00163e005bb3", "PAY", "BC", 1); Assert.IsTrue(actual.Equals(sign)); }
public void handleWXQrcodePayResultTest() { BCBill bill = new BCBill(BCPay.PayChannel.WX_NATIVE.ToString(), 1, BCUtil.GetUUID(), "dotNet自来水"); string respString = "{\"result_msg\":\"OK\",\"code_url\":\"weixin://wxpay/bizpayurl?pr=TtAYx12\",\"resultCode\":0,\"errMsg\":\"OK:\",\"err_detail\":\"\",\"result_code\":0,\"id\":\"99f2c898-56e7-451a-8984-f077e0688033\"}"; BCBill actual = BCPay.handlePayResult(respString, bill); Assert.IsNotNull(actual.id); Assert.IsNotNull(actual.codeURL); }
private static String BeforeCall(String data) { if (SystemContext.SysConfig.IsCompressRequest) { return(string.Format("1{0}", BCUtil.Compress(data))); } else { return(string.Format("0{0}", data)); } }
public void handleYeePayResultTest() { BCBill bill = new BCBill(BCPay.PayChannel.YEE_WEB.ToString(), 1, BCUtil.GetUUID(), "dotNet自来水"); bill.returnUrl = "http://localhost:50003/return_yee_url.aspx"; string respString = "{\"result_msg\":\"OK\",\"resultCode\":0,\"errMsg\":\"OK:\",\"err_detail\":\"\",\"result_code\":0,\"html\":\"<form name=\\\"yeepay\\\" action=\\\"https://www.yeepay.com/app-merchant-proxy/node\\\" method=\\\"POST\\\"><input type=\\\"hidden\\\" name=\\\"p4_Cur\\\" value=\\\"CNY\\\"/><input type=\\\"hidden\\\" name=\\\"p0_Cmd\\\" value=\\\"Buy\\\"/><input type=\\\"hidden\\\" name=\\\"p3_Amt\\\" value=\\\"0.01\\\"/><input type=\\\"hidden\\\" name=\\\"pa_MP\\\" value=\\\"c37d661d-7e61-49ea-96a5-68c34e83db3b%3A41695744-f7f7-4926-8eee-2d5dfb745af0\\\"/><input type=\\\"hidden\\\" name=\\\"p2_Order\\\" value=\\\"9572742753bf43298eef21a1579dc9c1\\\"/><input type=\\\"hidden\\\" name=\\\"p5_Pid\\\" value=\\\"dotNet%D7%D4%C0%B4%CB%AE\\\"/><input type=\\\"hidden\\\" name=\\\"hmac\\\" value=\\\"972dd9930d6e34d959886339b6a7f349\\\"/><input type=\\\"hidden\\\" name=\\\"p8_Url\\\" value=\\\"http%3A%2F%2Flocalhost%3A50003%2Freturn_yee_url.aspx\\\"/><input type=\\\"hidden\\\" name=\\\"p1_MerId\\\" value=\\\"10012506312\\\"/></form><script>document.yeepay.submit();</script>\",\"id\":\"41695744-f7f7-4926-8eee-2d5dfb745af0\",\"url\":\"https://www.yeepay.com/app-merchant-proxy/node?p4_Cur=CNY&p0_Cmd=Buy&p3_Amt=0.01&pa_MP=c37d661d-7e61-49ea-96a5-68c34e83db3b%3A41695744-f7f7-4926-8eee-2d5dfb745af0&p2_Order=9572742753bf43298eef21a1579dc9c1&p5_Pid=dotNet%D7%D4%C0%B4%CB%AE&hmac=972dd9930d6e34d959886339b6a7f349&p8_Url=http%3A%2F%2Flocalhost%3A50003%2Freturn_yee_url.aspx&p1_MerId=10012506312\"}"; BCBill actual = BCPay.handlePayResult(respString, bill); Assert.IsNotNull(actual.id); Assert.IsNotNull(actual.url); }
public void handleUNWebPayResultTest() { BCBill bill = new BCBill(BCPay.PayChannel.UN_WEB.ToString(), 1, BCUtil.GetUUID(), "dotNet自来水"); bill.returnUrl = "http://localhost:50003/return_un_url.aspx"; string respString = "{\"result_msg\":\"OK\",\"resultCode\":0,\"errMsg\":\"OK:\",\"err_detail\":\"\",\"result_code\":0,\"html\":\"<html><head><meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html; charset=UTF-8\\\"/></head><body><form id = \\\"pay_form\\\" action=\\\"https://gateway.95516.com/gateway/api/frontTransReq.do\\\" method=\\\"post\\\"><input type=\\\"hidden\\\" name=\\\"bizType\\\" id=\\\"bizType\\\" value=\\\"000201\\\"/><input type=\\\"hidden\\\" name=\\\"orderId\\\" id=\\\"orderId\\\" value=\\\"4c8ae26558b0415491fbf97e6023671c\\\"/><input type=\\\"hidden\\\" name=\\\"backUrl\\\" id=\\\"backUrl\\\" value=\\\"http://123.57.71.81:8080/1/pay/callback/UNWeb/c37d661d-7e61-49ea-96a5-68c34e83db3b/d020f6b8-b35f-41a3-b4a8-780846c03725\\\"/><input type=\\\"hidden\\\" name=\\\"txnSubType\\\" id=\\\"txnSubType\\\" value=\\\"01\\\"/><input type=\\\"hidden\\\" name=\\\"signature\\\" id=\\\"signature\\\" value=\\\"Qtc3jybIFV+SYRN2cXPvMx2qZN5hMP+5xr+6IafLID7PNUQamCRrpQ3quygRrm8kiRmpF5/ddwdiNmoLuCb91zkCs24pYZfAUB2TDPnWlgI8QQTyUfa0W8USybwSj1WTfvLpeOL4A2Eawgl35xPaxB4MslQGl2dilOc/MnT8RCn7+bo84XGeCcj+n4OXJvvZK+M7k5sBn1slEm+WqAuy95C8esrjnIRSjq0vc62z/zzhjrPXXE0MXVrUHBQTiKRUn9RwnAq24PzFVaalNQgFCJetXw2MZPQCIWedzQ6TwlyPE34aCOBf0ivtHGxhRhC7b2AG00xoFyHzkB5ArHlMVw==\\\"/><input type=\\\"hidden\\\" name=\\\"frontUrl\\\" id=\\\"frontUrl\\\" value=\\\"http://localhost:50003/return_un_url.aspx\\\"/><input type=\\\"hidden\\\" name=\\\"txnType\\\" id=\\\"txnType\\\" value=\\\"01\\\"/><input type=\\\"hidden\\\" name=\\\"channelType\\\" id=\\\"channelType\\\" value=\\\"08\\\"/><input type=\\\"hidden\\\" name=\\\"certId\\\" id=\\\"certId\\\" value=\\\"69363599447\\\"/><input type=\\\"hidden\\\" name=\\\"encoding\\\" id=\\\"encoding\\\" value=\\\"UTF-8\\\"/><input type=\\\"hidden\\\" name=\\\"version\\\" id=\\\"version\\\" value=\\\"5.0.0\\\"/><input type=\\\"hidden\\\" name=\\\"accessType\\\" id=\\\"accessType\\\" value=\\\"0\\\"/><input type=\\\"hidden\\\" name=\\\"txnTime\\\" id=\\\"txnTime\\\" value=\\\"20151222155314\\\"/><input type=\\\"hidden\\\" name=\\\"merId\\\" id=\\\"merId\\\" value=\\\"898320548160217\\\"/><input type=\\\"hidden\\\" name=\\\"currencyCode\\\" id=\\\"currencyCode\\\" value=\\\"156\\\"/><input type=\\\"hidden\\\" name=\\\"orderDesc\\\" id=\\\"orderDesc\\\" value=\\\"dotNet自来水\\\"/><input type=\\\"hidden\\\" name=\\\"txnAmt\\\" id=\\\"txnAmt\\\" value=\\\"1\\\"/><input type=\\\"hidden\\\" name=\\\"signMethod\\\" id=\\\"signMethod\\\" value=\\\"01\\\"/></form></body><script type=\\\"text/javascript\\\">document.all.pay_form.submit();</script></html>\",\"id\":\"d020f6b8-b35f-41a3-b4a8-780846c03725\"}"; BCBill actual = BCPay.handlePayResult(respString, bill); Assert.IsNotNull(actual.id); Assert.IsNotNull(actual.html); }
protected void Page_Load(object sender, EventArgs e) { BeeCloud.BeeCloud.registerApp("c5d1cba1-5e3f-4ba0-941d-9b0a371fe719", "39a7a518-9ac8-4a9e-87bc-7885f33cf18c"); byte[] byts = new byte[Request.InputStream.Length]; Request.InputStream.Read(byts, 0, byts.Length); string req = System.Text.Encoding.Default.GetString(byts); req = Server.UrlDecode(req); JsonData requestData = JsonMapper.ToObject(req); string sign = requestData["sign"].ToString(); long timestamp = long.Parse(requestData["timestamp"].ToString()); string channelType = requestData["channelType"].ToString(); string transactionType = requestData["transactionType"].ToString(); string tradeSuccess = requestData["tradeSuccess"].ToString(); //检查timestamp是否在可信时间段内,阻止重发 TimeSpan ts = DateTime.Now - BCUtil.GetDateTime(timestamp); //验签, 确保来自BeeCloud string mySign = BCUtil.GetSign(requestData["timestamp"].ToString()); if (ts.TotalSeconds < 300 && mySign == sign) { // 此处需要验证购买的产品与订单金额是否匹配: // 验证购买的产品与订单金额是否匹配的目的在于防止黑客反编译了iOS或者Android app的代码, // 将本来比如100元的订单金额改成了1分钱,开发者应该识别这种情况,避免误以为用户已经足额支付。 // Webhook传入的消息里面应该以某种形式包含此次购买的商品信息,比如title或者optional里面的某个参数说明此次购买的产品是一部iPhone手机, // 开发者需要在客户服务端去查询自己内部的数据库看看iPhone的金额是否与该Webhook的订单金额一致,仅有一致的情况下,才继续走正常的业务逻辑。 // 如果发现不一致的情况,排除程序bug外,需要去查明原因,防止不法分子对你的app进行二次打包,对你的客户的利益构成潜在威胁。 // 如果发现这样的情况,请及时与我们联系,我们会与客户一起与这些不法分子做斗争。而且即使有这样极端的情况发生, // 只要按照前述要求做了购买的产品与订单金额的匹配性验证,在你的后端服务器不被入侵的前提下,你就不会有任何经济损失。 JsonData messageDetail = requestData["messageDetail"]; if (channelType == "ALI") { string bc_appid = messageDetail["bc_appid"].ToString(); //...... } if (channelType == "UN") { // } if (channelType == "WX") { // } //当验签成功后务必返回success字样,通知server获取成功。 Response.Write("success"); } }
public void handleAliWapPayResultTest() { BCBill bill = new BCBill(BCPay.PayChannel.ALI_WAP.ToString(), 1, BCUtil.GetUUID(), "dotNet自来水"); bill.returnUrl = "http://localhost:50003/return_ali_url.aspx"; string respString = "{\"result_msg\":\"OK\",\"resultCode\":0,\"errMsg\":\"OK:\",\"err_detail\":\"\",\"result_code\":0,\"html\":\"<form id=\\\"alipaysubmit\\\" name=\\\"alipaysubmit\\\" action=\\\"https://mapi.alipay.com/gateway.do?_input_charset=utf-8\\\" method=\\\"get\\\"><input type=\\\"hidden\\\" name=\\\"payment_type\\\" value=\\\"1\\\"/><input type=\\\"hidden\\\" name=\\\"out_trade_no\\\" value=\\\"370e678e72d04d139d1e623453f9aa1a\\\"/><input type=\\\"hidden\\\" name=\\\"partner\\\" value=\\\"2088711322600312\\\"/><input type=\\\"hidden\\\" name=\\\"subject\\\" value=\\\"dotNet自来水\\\"/><input type=\\\"hidden\\\" name=\\\"_input_charset\\\" value=\\\"utf-8\\\"/><input type=\\\"hidden\\\" name=\\\"service\\\" value=\\\"alipay.wap.create.direct.pay.by.user\\\"/><input type=\\\"hidden\\\" name=\\\"total_fee\\\" value=\\\"0.01\\\"/><input type=\\\"hidden\\\" name=\\\"sign\\\" value=\\\"045d7ede0af92f78fd334b726f171465\\\"/><input type=\\\"hidden\\\" name=\\\"return_url\\\" value=\\\"http://localhost:50003/return_ali_url.aspx\\\"/><input type=\\\"hidden\\\" name=\\\"notify_url\\\" value=\\\"http://payservice.beecloud.cn/bcpay/aliPayDynamic/c37d661d-7e61-49ea-96a5-68c34e83db3b_d136a0ca-2be9-4ba7-b5e4-d8293e53bea1.php\\\"/><input type=\\\"hidden\\\" name=\\\"sign_type\\\" value=\\\"MD5\\\"/><input type=\\\"hidden\\\" name=\\\"seller_id\\\" value=\\\"2088711322600312\\\"/><input type=\\\"submit\\\" value=\\\"确认\\\" style=\\\"display:none;\\\"></form><script>document.forms['alipaysubmit'].submit();</script>\",\"id\":\"d136a0ca-2be9-4ba7-b5e4-d8293e53bea1\",\"url\":\"https://mapi.alipay.com/gateway.do?_input_charset=utf-8&payment_type=1&out_trade_no=370e678e72d04d139d1e623453f9aa1a&partner=2088711322600312&subject=dotNet自来水&_input_charset=utf-8&service=alipay.wap.create.direct.pay.by.user&total_fee=0.01&sign=045d7ede0af92f78fd334b726f171465&return_url=http://localhost:50003/return_ali_url.aspx¬ify_url=http://payservice.beecloud.cn/bcpay/aliPayDynamic/c37d661d-7e61-49ea-96a5-68c34e83db3b_d136a0ca-2be9-4ba7-b5e4-d8293e53bea1.php&sign_type=MD5&seller_id=2088711322600312\"}"; BCBill actual = BCPay.handlePayResult(respString, bill); Assert.IsNotNull(actual.id); Assert.IsNotNull(actual.url); Assert.IsNotNull(actual.html); }
public void handleAliWebPayResultTest() { BCBill bill = new BCBill(BCPay.PayChannel.ALI_WEB.ToString(), 1, BCUtil.GetUUID(), "dotNet自来水"); bill.returnUrl = "http://*****:*****@beecloud.cn\\\"/><input type=\\\"hidden\\\" name=\\\"subject\\\" value=\\\"dotNet自来水\\\"/><input type=\\\"hidden\\\" name=\\\"_input_charset\\\" value=\\\"utf-8\\\"/><input type=\\\"hidden\\\" name=\\\"sign\\\" value=\\\"6b69e7e8b890b0f2e5ba282028d583a3\\\"/><input type=\\\"hidden\\\" name=\\\"notify_url\\\" value=\\\"http://payservice.beecloud.cn/bcpay/aliPayDynamic/c37d661d-7e61-49ea-96a5-68c34e83db3b_06e5647b-f5f2-4697-aba9-e2bb05608aa8.php\\\"/><input type=\\\"hidden\\\" name=\\\"payment_type\\\" value=\\\"1\\\"/><input type=\\\"hidden\\\" name=\\\"out_trade_no\\\" value=\\\"64a054f5ae0841188f077172b54dedf9\\\"/><input type=\\\"hidden\\\" name=\\\"partner\\\" value=\\\"2088711322600312\\\"/><input type=\\\"hidden\\\" name=\\\"service\\\" value=\\\"create_direct_pay_by_user\\\"/><input type=\\\"hidden\\\" name=\\\"total_fee\\\" value=\\\"0.01\\\"/><input type=\\\"hidden\\\" name=\\\"return_url\\\" value=\\\"http://*****:*****@beecloud.cn&subject=dotNet自来水&_input_charset=utf-8&sign=6b69e7e8b890b0f2e5ba282028d583a3¬ify_url=http://payservice.beecloud.cn/bcpay/aliPayDynamic/c37d661d-7e61-49ea-96a5-68c34e83db3b_06e5647b-f5f2-4697-aba9-e2bb05608aa8.php&payment_type=1&out_trade_no=64a054f5ae0841188f077172b54dedf9&partner=2088711322600312&service=create_direct_pay_by_user&total_fee=0.01&return_url=http://localhost:50003/return_ali_url.aspx&exter_invoke_ip=112.86.54.108&sign_type=MD5\"}"; BCBill actual = BCPay.handlePayResult(respString, bill); Assert.IsNotNull(actual.id); Assert.IsNotNull(actual.url); Assert.IsNotNull(actual.html); }
private static String AfterCall(String data) { string result = data.Remove(0, 1); if (data.StartsWith("1")) { return(BCUtil.Uncompress(result)); } else { return(result); } }
public void handleAliQrcodePayResultTest() { BCBill bill = new BCBill(BCPay.PayChannel.ALI_QRCODE.ToString(), 1, BCUtil.GetUUID(), "dotNet自来水"); bill.qrPayMode = "0"; bill.returnUrl = "http://*****:*****@beecloud.cn\\\"/><input type=\\\"hidden\\\" name=\\\"subject\\\" value=\\\"dotNet自来水\\\"/><input type=\\\"hidden\\\" name=\\\"_input_charset\\\" value=\\\"utf-8\\\"/><input type=\\\"hidden\\\" name=\\\"sign\\\" value=\\\"8216a45e51f576cfd6a38f8c8576663a\\\"/><input type=\\\"hidden\\\" name=\\\"notify_url\\\" value=\\\"http://payservice.beecloud.cn/bcpay/aliPayDynamic/c37d661d-7e61-49ea-96a5-68c34e83db3b_c4dee3ef-69a1-4cfc-8faa-32c0b0b7c4fc.php\\\"/><input type=\\\"hidden\\\" name=\\\"qr_pay_mode\\\" value=\\\"0\\\"/><input type=\\\"hidden\\\" name=\\\"payment_type\\\" value=\\\"1\\\"/><input type=\\\"hidden\\\" name=\\\"out_trade_no\\\" value=\\\"0548650a2b8e4a5bb2ee4bba56c6fb0c\\\"/><input type=\\\"hidden\\\" name=\\\"partner\\\" value=\\\"2088711322600312\\\"/><input type=\\\"hidden\\\" name=\\\"service\\\" value=\\\"create_direct_pay_by_user\\\"/><input type=\\\"hidden\\\" name=\\\"total_fee\\\" value=\\\"0.01\\\"/><input type=\\\"hidden\\\" name=\\\"return_url\\\" value=\\\"http://*****:*****@beecloud.cn&subject=dotNet自来水&_input_charset=utf-8&sign=8216a45e51f576cfd6a38f8c8576663a¬ify_url=http://payservice.beecloud.cn/bcpay/aliPayDynamic/c37d661d-7e61-49ea-96a5-68c34e83db3b_c4dee3ef-69a1-4cfc-8faa-32c0b0b7c4fc.php&qr_pay_mode=0&payment_type=1&out_trade_no=0548650a2b8e4a5bb2ee4bba56c6fb0c&partner=2088711322600312&service=create_direct_pay_by_user&total_fee=0.01&return_url=http://localhost:50003/return_ali_url.aspx&exter_invoke_ip=112.86.54.108&sign_type=MD5\"}"; BCBill actual = BCPay.handlePayResult(respString, bill); Assert.IsNotNull(actual.id); Assert.IsNotNull(actual.url); Assert.IsNotNull(actual.html); }
public void handleJSAPIPayResultTest() { BCBill bill = new BCBill(BCPay.PayChannel.WX_JSAPI.ToString(), 1, BCUtil.GetUUID(), "dotNet自来水"); string respString = "{\"result_msg\":\"OK\",\"resultCode\":0,\"errMsg\":\"OK:\",\"err_detail\":\"\",\"result_code\":0,\"id\":\"41695744-f7f7-4926-8eee-2d5dfb745af0\",\"app_id\": \"wxa4ca6ed13385\",\"timestamp\": \"1450771041\", \"nonce_str\": \"znjsj7mw98q1drn251arrr30gq5gz0b1\", \"package\": \"prepay_id=wx20151222155721c70baa1e680187231678\", \"sign_type\": \"MD5\", \"pay_sign\": \"1E58DA3043C3D80AEC7A51B99E32\"}"; BCBill actual = BCPay.handlePayResult(respString, bill); Assert.IsNotNull(actual.id); Assert.IsNotNull(actual.timestamp); Assert.IsNotNull(actual.noncestr); Assert.IsNotNull(actual.package); Assert.IsNotNull(actual.paySign); Assert.IsNotNull(actual.signType); }
public DataMap FromMapInfo(string mapinfo) { string name = BCUtil.GetMD5(mapinfo); if (mDataMaps.ContainsKey(name)) { return(mDataMaps[name]); } else { DataMap map = new DataMap(name, mapinfo); AppendDataMap(map); return(map); } }
public DataList FromListInfo(string listinfo) { string name = BCUtil.GetMD5(listinfo); if (mDataLists.ContainsKey(name)) { return(mDataLists[name]); } else { DataList list = new DataList(name, listinfo); AppendDataList(list); return(list); } }
public void Parse(string reqContent) { try { string content = reqContent.Remove(0, 1); if (reqContent.StartsWith("1")) { content = BCUtil.Uncompress(content); } Builder(content); } catch (Exception e) { //throw new ExceptionBase("解析请求出错:" + e.getMessage(), e); throw e; } }
protected void Page_Load(object sender, EventArgs e) { byte[] byts = new byte[Request.InputStream.Length]; Request.InputStream.Read(byts, 0, byts.Length); string req = System.Text.Encoding.Default.GetString(byts); req = Server.UrlDecode(req); JsonData requestData = JsonMapper.ToObject(req); string sign = requestData["sign"].ToString(); long timestamp = long.Parse(requestData["timestamp"].ToString()); string channelType = requestData["channelType"].ToString(); string transactionType = requestData["transactionType"].ToString(); string tradeSuccess = requestData["tradeSuccess"].ToString(); //检查timestamp是否在可信时间段内,阻止重放 TimeSpan ts = DateTime.Now - BCUtil.GetDateTime(timestamp); //验签, 确保来自BeeCloud string mySign = BCUtil.GetSign(); if (ts.TotalSeconds < 300 && mySign == sign) { //webhook中的各个字段含义和使用请参考 https://beecloud.cn/doc/java.php#webhook JsonData messageDetail = requestData["messageDetail"]; if (channelType == "AlI") { string bc_appid = messageDetail["bc_appid"].ToString(); //...... } if (channelType == "UN") { // } if (channelType == "WX") { // } //当验签成功后务必返回success字样,通知server获取成功。 Response.Write("success"); } }
static void Main(string[] args) { var data = Encoding.ASCII.GetBytes("Hi!"); var hash = HashAlgorithm.Create("SHA256").ComputeHash(data); var certificate = new X509Certificate2(Convert.FromBase64String(cert), pwd); // So since I've no idea how you got p7s, i improvised here: var cms = new SignedCms(new ContentInfo(hash), true); // true -> Detached var signer = new CmsSigner(SubjectIdentifierType.SubjectKeyIdentifier, certificate); cms.ComputeSignature(signer); var data2 = cms.Encode(); // assuming this was in p7s file var xx = Convert.ToBase64String(data2); // this passes, this is the .Net validation from OP var cms2 = new SignedCms(new ContentInfo(hash), true); cms2.Decode(Convert.FromBase64String(xx)); cms2.CheckSignature(true); // Same in bouncy castle: BCUtil.Validate(certificate, hash, xx); }
protected void Page_Load(object sender, EventArgs e) { BCPayResult result = BCPay.BCInternationalPay(BCPay.InternationalPay.PAYPAL_PAYPAL.ToString(), 1, BCUtil.GetUUID(), "dotnet paypal", "USD", null, null, "http://localhost:50003/paypal/return_paypal_url.aspx"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultCode + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultMsg + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.errDetail + "</span><br/>"); if (result.resultCode == 0) { BCPayPalResult payResult = result as BCPayPalResult; Response.Write("<a href=" + payResult.url + ">付款地址</a><br/>"); } }
protected void QueryGridView_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "refund") { int rowIndex = Convert.ToInt32(e.CommandArgument); string billNo = bills[rowIndex].billNo; int totalFee = bills[rowIndex].totalFee; if (typeChannel == "Ali") { BCRefundResult refundResult = BCPay.BCRefundByChannel(BCPay.RefundChannel.ALI.ToString(), DateTime.Today.ToString("yyyyMMdd") + BCUtil.GetUUID().Substring(0, 8), billNo, totalFee, null); if (refundResult.resultCode == 0) { Response.Redirect(refundResult.url); } else { Response.Write("<span style='color:#00CD00;font-size:20px'>" + refundResult.resultCode + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + refundResult.resultMsg + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + refundResult.errDetail + "</span><br/>"); } } if (typeChannel == "WX") { BCRefundResult refundResult = BCPay.BCRefundByChannel(BCPay.RefundChannel.WX.ToString(), DateTime.Today.ToString("yyyyMMdd") + BCUtil.GetUUID().Substring(0, 8), billNo, totalFee, null); if (refundResult.resultCode == 0) { Response.Write("<script>alert('退款成功!')</script>"); } else { Response.Write("<span style='color:#00CD00;font-size:20px'>" + refundResult.resultCode + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + refundResult.resultMsg + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + refundResult.errDetail + "</span><br/>"); } } if (typeChannel == "UN") { BCRefundResult refundResult = BCPay.BCRefundByChannel(BCPay.RefundChannel.UN.ToString(), DateTime.Today.ToString("yyyyMMdd") + BCUtil.GetUUID().Substring(0, 8), billNo, totalFee, null); if (refundResult.resultCode == 0) { Response.Write("<script>alert('退款成功!')</script>"); } else { Response.Write("<span style='color:#00CD00;font-size:20px'>" + refundResult.resultCode + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + refundResult.resultMsg + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + refundResult.errDetail + "</span><br/>"); } } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { JsApiPay jsApiPay = new JsApiPay(this); try { //调用【网页授权获取用户信息】接口获取用户的openid和access_token jsApiPay.appid = appid; jsApiPay.appsecret = "53e3943476118a3dff21fb95848de6d7"; jsApiPay.GetOpenidAndAccessToken(); //ViewState["openid"] = jsApiPay.openid; Response.Write(jsApiPay.openid); BCWxJSAPIPayResult result = BCPay.BCPayByChannel(BCPay.PayChannel.WX_JSAPI.ToString(), 1, BCUtil.GetUUID(), "dotnet", null, null, jsApiPay.openid, null, null) as BCWxJSAPIPayResult; //Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultCode + "</span><br/>"); //Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultMsg + "</span><br/>"); if (result.resultCode == 0) { timeStamp = result.timestamp; noncestr = result.noncestr; package = result.package; paySign = result.paySign; signType = result.signType; } else { Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.errDetail + "</span><br/>"); } } catch (Exception ex) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面加载出错,请重试" + ex.Message + "</span>"); } } }
protected void Page_Load(object sender, EventArgs e) { //这里填入你在信用卡付款后获得的信用卡id。 BCInternationlBill bill = new BCInternationlBill(BCPay.InternationalPay.PAYPAL_SAVED_CREDITCARD.ToString(), 1, BCUtil.GetUUID(), "dotnet paypal", "USD"); bill.creditCardId = "CARD-1K997489XXXXXXXXXXXXXXX"; try { bill = BCPay.BCInternationalPay(bill); Response.Write("<span style='color:#00CD00;font-size:20px'>" + "成功" + "</span><br/>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } }
protected void Page_Load(object sender, EventArgs e) { //这里填入你在信用卡付款后获得的信用卡id。 BCPayResult result = BCPay.BCInternationalPay(BCPay.InternationalPay.PAYPAL_SAVED_CREDITCARD.ToString(), 1, BCUtil.GetUUID(), "dotnet paypal", "USD", null, "CARD-1K997489XXXXXXXXXXXXXXX", null); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultCode + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultMsg + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.errDetail + "</span><br/>"); }
protected void Page_Load(object sender, EventArgs e) { string cardNo = Request.Form["cardNo"]; string expire = Request.Form["expire"]; string cvv = Request.Form["cvv"]; string firstName = Request.Form["firstName"]; string lastName = Request.Form["lastName"]; string cardType = Request.Form["cardType"]; BCCreditCardInfo info = new BCCreditCardInfo(); info.card_number = cardNo; info.expire_month = int.Parse(expire.Split('-')[1]); info.expire_year = int.Parse(expire.Split('-')[0]); info.cvv = int.Parse(cvv); info.first_name = firstName; info.last_name = lastName; info.card_type = cardType; BCPayResult result = BCPay.BCInternationalPay(BCPay.InternationalPay.PAYPAL_CREDITCARD.ToString(), 1, BCUtil.GetUUID(), "dotnet paypal", "USD", info, null, null); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultCode + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultMsg + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.errDetail + "</span><br/>"); if (result.resultCode == 0) { BCPayPalResult payResult = result as BCPayPalResult; Response.Write("<span style='color:#00CD00;font-size:20px'>" + payResult.creditCardId + "</span><br/>"); } }
protected void Page_Load(object sender, EventArgs e) { BCInternationlBill bill = new BCInternationlBill(BCPay.InternationalPay.PAYPAL_PAYPAL.ToString(), 1, BCUtil.GetUUID(), "dotnet paypal", "USD"); bill.returnUrl = "http://localhost:50003/paypal/return_paypal_url.aspx"; try { bill = BCPay.BCInternationalPay(bill); Response.Write("<a href=" + bill.url + ">付款地址</a><br/>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } }
public void GetUUIDTest() { string uuid = BCUtil.GetUUID(); Assert.IsFalse(uuid.Contains("-")); }
protected void Page_Load(object sender, EventArgs e) { string type = Request.Form["paytype"]; if (type == "alipay") { BCPayResult result = BCPay.BCPayByChannel(BCPay.PayChannel.ALI_WEB.ToString(), 1, BCUtil.GetUUID(), "dotNet自来水", null, "http://*****:*****@xx.com"; data.receiverName = "某某某"; data.transferFee = 100; data.transferNote = "note"; BCTransferData data2 = new BCTransferData(); data2.transferId = BCUtil.GetUUID(); data2.receiverAccount = "*****@*****.**"; data2.receiverName = "某某"; data2.transferFee = 100; data2.transferNote = "note"; List <BCTransferData> list = new List <BCTransferData>(); list.Add(data); list.Add(data2); BCTransferResult result = BCPay.BCTransfer(BCPay.TransferChannel.ALI.ToString(), BCUtil.GetUUID(), "毛毛", list); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultCode + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultMsg + "</span><br/>"); if (result.resultCode == 0) { Response.Write("<a href=" + result.url + ">付款地址</a><br/>"); } } else if (type == "wxtransfer") { Response.Write("<span style='color:#00CD00;font-size:20px'>即将支持</span><br/>"); } else { BCWxJSAPIPayResult result = BCPay.BCPayByChannel(BCPay.PayChannel.WX_JSAPI.ToString(), 1, BCUtil.GetUUID(), "dotNet自制自来水", null, null, "o3kKrjlUsMnv__cK5DYZMl0JoAkY", null, null) as BCWxJSAPIPayResult; Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultCode + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.resultMsg + "</span><br/>"); if (result.resultCode == 0) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.appId + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.noncestr + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.package + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.paySign + "</span><br/>"); Response.Write("<span style='color:#00CD00;font-size:20px'>" + result.signType + "</span><br/>"); } } Response.Write("<span style='color:#00CD00;font-size:20px'>" + type + "</span>"); }
protected void Page_Load(object sender, EventArgs e) { BeeCloud.BeeCloud.registerApp("c5d1cba1-5e3f-4ba0-941d-9b0a371fe719", "39a7a518-9ac8-4a9e-87bc-7885f33cf18c", "e14ae2db-608c-4f8b-b863-c8c18953eef2", "4bfdd244-574d-4bf3-b034-0c751ed34fee"); BeeCloud.BeeCloud.setTestMode(false); byte[] byts = new byte[Request.InputStream.Length]; Request.InputStream.Read(byts, 0, byts.Length); string req = System.Text.Encoding.UTF8.GetString(byts); req = Server.UrlDecode(req); JsonData requestData = JsonMapper.ToObject(req); string signature = requestData["signature"].ToString(); //签名 long timestamp = long.Parse(requestData["timestamp"].ToString()); //时间戳 string transactionID = requestData["transaction_id"].ToString(); //交易单号 string channelType = requestData["channel_type"].ToString(); //渠道 string subChannelType = requestData["sub_channel_type"].ToString(); //子渠道 string transactionType = requestData["transaction_type"].ToString(); //支付还是退款还是打款或者订阅 string tradeSuccess = requestData["trade_success"].ToString(); //是否成功 int transactionFee = int.Parse(requestData["transaction_fee"].ToString()); //金额 //如需取用message_detail的内容 //JsonData messageDetail = requestData["message_detail"]; //检查timestamp是否在可信时间段内,阻止在该时间段外重复发送请求 TimeSpan ts = DateTime.Now - BCUtil.GetDateTime(timestamp); //验签, 确保来自BeeCloud //根据当前模式使用验签方法 //生产环境: string mySign = BCUtil.GetSign(transactionID, transactionType, channelType, transactionFee); //测试环境: string mySign = BCUtil.GetSignByTestMode(requestData["timestamp"].ToString()); if (ts.TotalSeconds < 300 && mySign == signature) { //在处理自己的业务逻辑前,要做以下几步 // 1. 过滤重复的webhook,如果该webhook的订单之前已经处理过,则忽略新的webhook(渠道有一定几率重复发送相同的webhook) // 2. 验证订单金额,客户需要验证Webhook中的 transaction_fee (实际的交易金额)与客户内部系统中的相应订单的金额匹配。 if (transactionType == "PAY")//收款成功的webhook { if (channelType == "ALI") { //...... } if (channelType == "UN") { // } if (channelType == "WX") { // } if (channelType == "BC") { //subChannelType是BC_SUBSCRIPTION时候,说明是比可订阅支付 if (subChannelType == "BC_SUBSCRIPTION") { //订阅扣款成功的webhook样例 //{ // "sign": "b366eda3e40aa396c1445ede5f418223", // "timestamp": 1469674005187, // "transaction_id": "238b156b-563b-495e-b649-3b2c671595e8", // "retryCounter": 0, // "notifyUrl": "https://notify.beecloud.cn/2/pay/callback/subscription/webhook", // "transaction_fee": 150, // "sub_channel_type": "BC_SUBSCRIPTION", // "transaction_type": "PAY", // "channel_type": "BC", // "notify_url": "https://notify.beecloud.cn/2/pay/callback/subscription/webhook", // "toSign": "95d87fff-989c-4426-812c-21408644cf888aaad136-b899-4793-9564-0ebc72ae86f2", // "message_detail": { // "subscription_id": "e0ecd9cc-0fe4-4a1d-bd2f-c36e7d430c50", // "id_no": "230826198601240832", // "card_no": "***************0486", // "err_msg": "", // "mobile": "15555511114", // "bank_name": "中国银行", // "buyer_id": "this_is_a_buyer_id", // "card_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", // "id_name": "xxx", // "plan_id": "1a73bf15-e227-4d75-8b0f-894629149945" // }, // "trade_success": true //} } } } else if (transactionType == "SUBSCRIPTION")//订阅成功的webhook { if (channelType == "SUBSCRIPTION") { //subChannelType是BC_SUBSCRIPTION时候,说明是比可订阅支付 if (subChannelType == "BC_SUBSCRIPTION") { //订阅成功的webhook样例 //{ // "transaction_id": "78500a22-2da1-4302-b55e-7cf2cc01791c", // "sign": "b366eda3e40aa396c1445ede5f418223", // "timestamp": 1469674005187, // "retryCounter": 0, // "notifyUrl": "https://notify.beecloud.cn/2/pay/callback/subscription/webhook", // "transaction_fee": 0, // "sub_channel_type": "BC_SUBSCRIPTION", // "transaction_type": "SUBSCRIPTION", // "channel_type": "BC", // "notify_url": "https://notify.beecloud.cn/2/pay/callback/subscription/webhook", // "toSign": "95d87fff-989c-4426-812c-21408644cf888aaad136-b899-4793-9564-0ebc72ae86f2", // "message_detail": { // "subscription_id": "78500a22-2da1-4302-b55e-7cf2cc01791c", // "id_no": "230826198601240832", // "card_no": ****************0486", // "err_msg": "", // "mobile": "15555511114", // "bank_name": "中国银行", // "buyer_id": "this_is_a_buyer_id", // "card_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", // "id_name": "高健峰", // "plan_id": "1a73bf15-e227-4d75-8b0f-894629149945" // }, // "trade_success": true //} //收到订阅成功的webhook,说明用户的卡已经完成订阅,这时可以去把本地的subscription记录中的status改成success,然后发短信告诉用户他订阅成功了巴拉巴拉 } } } //当验签成功后务必返回success字样,通知server获取成功。 Response.Write("success"); } }
protected void Page_Load(object sender, EventArgs e) { string cardNo = Request.Form["cardNo"]; string expire = Request.Form["expire"]; string cvv = Request.Form["cvv"]; string firstName = Request.Form["firstName"]; string lastName = Request.Form["lastName"]; string cardType = Request.Form["cardType"]; BCCreditCardInfo info = new BCCreditCardInfo(); info.card_number = cardNo; info.expire_month = int.Parse(expire.Split('-')[1]); info.expire_year = int.Parse(expire.Split('-')[0]); info.cvv = int.Parse(cvv); info.first_name = firstName; info.last_name = lastName; info.card_type = cardType; BCInternationlBill bill = new BCInternationlBill(BCPay.InternationalPay.PAYPAL_CREDITCARD.ToString(), 1, BCUtil.GetUUID(), "dotnet paypal", "USD"); bill.info = info; try { bill = BCPay.BCInternationalPay(bill); Response.Write("<span style='color:#00CD00;font-size:20px'>" + bill.creditCardId + "</span><br/>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } }
protected void Page_Load(object sender, EventArgs e) { string type = Request.Form["paytype"]; if (type == "alipay") { BCBill bill = new BCBill(BCPay.PayChannel.ALI_WEB.ToString(), 300, BCUtil.GetUUID(), "dotNet自来水"); bill.returnUrl = "http://*****:*****@xx.com"; data.receiverName = "某某某"; data.transferFee = 100; data.transferNote = "note"; BCTransferData data2 = new BCTransferData(); data2.transferId = BCUtil.GetUUID(); data2.receiverAccount = "*****@*****.**"; data2.receiverName = "某某"; data2.transferFee = 100; data2.transferNote = "note"; List <BCTransferData> list = new List <BCTransferData>(); list.Add(data); list.Add(data2); try { BCTransfersParameter para = new BCTransfersParameter(); para.channel = BCPay.TransferChannel.ALI.ToString(); para.batchNo = BCUtil.GetUUID(); para.accountName = "毛毛"; para.transfersData = list; string transfersURL = BCPay.BCTransfers(para); Response.Write("<a href=" + transfersURL + ">付款地址</a><br/>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } else if (type == "alitransfer") { try { BCTransferParameter para = new BCTransferParameter(); para.channel = BCPay.TransferChannel.ALI_TRANSFER.ToString(); para.transferNo = BCUtil.GetUUID(); para.totalFee = 100; para.desc = "C# 单笔打款"; para.channelUserId = "*****@*****.**"; para.channelUserName = "******"; para.accountName = "XXX有限公司"; string aliURL = BCPay.BCTransfer(para); Response.Write("<a href=" + aliURL + ">付款地址</a><br/>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } else if (type == "wxtransfer") { try { BCTransferParameter para = new BCTransferParameter(); para.channel = BCPay.TransferChannel.WX_TRANSFER.ToString(); para.transferNo = "1000000000"; para.totalFee = 100; para.desc = "C# 单笔打款"; para.channelUserId = "XXXXXXXXXXXXXXXXXX"; BCPay.BCTransfer(para); Response.Write("完成"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } else if (type == "wxredpack") { BCRedPackInfo info = new BCRedPackInfo(); info.actName = "C# 红包"; info.sendName = "BeeCloud"; info.wishing = "啦啦啦"; try { BCTransferParameter para = new BCTransferParameter(); para.channel = BCPay.TransferChannel.WX_REDPACK.ToString(); para.transferNo = "1000000001"; para.totalFee = 100; para.desc = "C# 红包"; para.channelUserId = "XXXXXXXXXXXXXXXX"; para.info = info; BCPay.BCTransfer(para); Response.Write("完成"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } else if (type == "bctransfer") { //getBankFullNames方法可以获取所有支持的银行全称,将全称填写到BCTransferWithBackCard里的bank_fullname字段 BankList banks = BCPay.getBankFullNames("P_CR"); foreach (var bank in banks.bankList) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + bank.ToString() + "</span><br/>"); } BCTransferWithBackCard transfer = new BCTransferWithBackCard(1, BCUtil.GetUUID(), ".net测试代付", "OUT_PC", "中国银行", "DE", "P", "xxxxxxxxxxxx", "xxx"); transfer.mobile = "xxxxxxxxxxxxxx"; try { transfer = BCPay.BCBankCardTransfer(transfer); Response.Write("<span style='color:#00CD00;font-size:20px'>已代付</span><br/>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } else if (type == "bccjtransfer") { BCCJTransferWithBackCard transfer = new BCCJTransferWithBackCard(BCUtil.GetUUID(), ".net测试代付", 100, "姓名", "银行名", "卡号", "支行名", "省", "市", "DEBIT", "C"); try { transfer = BCPay.BCCJBankCardTransfer(transfer); Response.Write("<span style='color:#00CD00;font-size:20px'>已代付</span><br/>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } Response.Write("<span style='color:#00CD00;font-size:20px'>" + type + "</span>"); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { JsApiPay jsApiPay = new JsApiPay(this); try { //调用【网页授权获取用户信息】接口获取用户的openid和access_token jsApiPay.appid = appid; jsApiPay.appsecret = "53e3943476118a3dff21fb95848de6d7"; jsApiPay.GetOpenidAndAccessToken(); //ViewState["openid"] = jsApiPay.openid; Response.Write(jsApiPay.openid); BCBill bill = new BCBill(BCPay.PayChannel.WX_JSAPI.ToString(), 1, BCUtil.GetUUID(), "dotNet自来水"); bill.openId = jsApiPay.openid; try { BCBill resultBill = BCPay.BCPayByChannel(bill); timeStamp = resultBill.timestamp; noncestr = resultBill.noncestr; package = resultBill.package; paySign = resultBill.paySign; signType = resultBill.signType; } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } catch (Exception ex) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面加载出错,请重试" + ex.Message + "</span>"); } } }
protected void Page_Load(object sender, EventArgs e) { BeeCloud.BeeCloud.registerApp(ConfigurationManager.AppSettings["beecloud_appid"].ToString(), ConfigurationManager.AppSettings["beecloud_secret"].ToString()); int test = 0; string req = ""; Dictionary <string, object> log = new Dictionary <string, object>(); log["time"] = DateTime.Now; byte[] byts = new byte[Request.InputStream.Length]; Request.InputStream.Read(byts, 0, byts.Length); req = System.Text.Encoding.Default.GetString(byts); req = Server.UrlDecode(req); log["info"] = req; var requestData = JsonHelper.ParseFromStr <Dictionary <string, object> >(req); string orderid = requestData["transaction_id"].ToString(); try { MongodbPayment.Instance.ExecuteUpdate("beecloud_infos", "orderid", orderid, log); string sign = requestData["sign"].ToString(); long timestamp = long.Parse(requestData["timestamp"].ToString()); string channelType = requestData["channel_type"].ToString(); //string transactionType = requestData["transaction_type"].ToString(); //检查timestamp是否在可信时间段内,阻止重发 TimeSpan ts = DateTime.Now - BCUtil.GetDateTime(timestamp); //验签, 确保来自BeeCloud string mySign = BCUtil.GetSign(requestData["timestamp"].ToString()); if (ts.TotalSeconds < 300 && mySign == sign) { // 此处需要验证购买的产品与订单金额是否匹配: // 验证购买的产品与订单金额是否匹配的目的在于防止黑客反编译了iOS或者Android app的代码, // 将本来比如100元的订单金额改成了1分钱,开发者应该识别这种情况,避免误以为用户已经足额支付。 // Webhook传入的消息里面应该以某种形式包含此次购买的商品信息,比如title或者optional里面的某个参数说明此次购买的产品是一部iPhone手机, // 开发者需要在客户服务端去查询自己内部的数据库看看iPhone的金额是否与该Webhook的订单金额一致,仅有一致的情况下,才继续走正常的业务逻辑。 // 如果发现不一致的情况,排除程序bug外,需要去查明原因,防止不法分子对你的app进行二次打包,对你的客户的利益构成潜在威胁。 // 如果发现这样的情况,请及时与我们联系,我们会与客户一起与这些不法分子做斗争。而且即使有这样极端的情况发生, // 只要按照前述要求做了购买的产品与订单金额的匹配性验证,在你的后端服务器不被入侵的前提下,你就不会有任何经济损失。 int amont = int.Parse(requestData["transaction_fee"].ToString()) / 100; if (requestData["transaction_type"].ToString() == "PAY" && amont > 0) { test++; Dictionary <string, object> message_detail = JsonHelper.ParseFromStr <Dictionary <string, object> >(requestData["messageDetail"].ToString()); requestData["messageDetail"] = message_detail; if (requestData.ContainsKey("message_detail")) { requestData.Remove("message_detail"); } test++; bool is_scuess = false; switch (channelType) { case "ALI": { if (message_detail["trade_status"].ToString() == "TRADE_SUCCESS") { is_scuess = true; } } break; case "WX": { if (message_detail["result_code"].ToString() == "SUCCESS") { is_scuess = true; } } break; case "UN": { if (message_detail["respCode"].ToString() == "00") { is_scuess = true; } } break; } test++; if (is_scuess && !MongodbPayment.Instance.KeyExistsBykey("beecloud_pay", "OrderID", orderid)) { test++; requestData["OrderID"] = orderid; requestData["PayTime"] = DateTime.Now; requestData["Process"] = false; requestData["RMB"] = amont; test++; Dictionary <string, object> optional = JsonHelper.ParseFromStr <Dictionary <string, object> >(requestData["optional"].ToString()); requestData["optional"] = optional; requestData["PlayerId"] = Convert.ToInt32(optional["playerid"]); requestData["private_data"] = optional["shoppage"]; requestData["shoppage"] = optional["shoppage"]; requestData["Account"] = optional["account"]; requestData["PayCode"] = optional["paycode"]; requestData["channel"] = optional["channel"]; test++; if (MongodbPayment.Instance.ExecuteInsert("beecloud_pay", requestData)) { test++; save_payinfo(requestData["private_data"].ToString(), amont); save_paychannel(requestData["channel"].ToString(), amont); test++; } } } //当验签成功后务必返回success字样,通知server获取成功。 Response.Write("success"); } else { Response.Write("fail"); } } catch (Exception ex) { Response.Write(req + test.ToString() + ex.ToString()); log["error"] = ex.ToString(); } log["tag"] = test; MongodbPayment.Instance.ExecuteUpdate("beecloud_infos", "orderid", orderid, log); }