Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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));
     }
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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");
            }
        }
Exemplo n.º 7
0
        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&notify_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);
        }
Exemplo n.º 8
0
        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&notify_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);
        }
Exemplo n.º 9
0
        private static String AfterCall(String data)
        {
            string result = data.Remove(0, 1);

            if (data.StartsWith("1"))
            {
                return(BCUtil.Uncompress(result));
            }
            else
            {
                return(result);
            }
        }
Exemplo n.º 10
0
        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&notify_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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
            }
        }
Exemplo n.º 13
0
        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);
            }
        }
Exemplo n.º 14
0
        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;
            }
        }
Exemplo n.º 15
0
        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");
            }
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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/>");
            }
        }
Exemplo n.º 18
0
 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/>");
             }
         }
     }
 }
Exemplo n.º 19
0
        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/>");
            }
        }
Exemplo n.º 21
0
        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/>");
        }
Exemplo n.º 22
0
        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/>");
            }
        }
Exemplo n.º 23
0
        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/>");
            }
        }
Exemplo n.º 24
0
        public void GetUUIDTest()
        {
            string uuid = BCUtil.GetUUID();

            Assert.IsFalse(uuid.Contains("-"));
        }
Exemplo n.º 25
0
        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>");
        }
Exemplo n.º 26
0
        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/>");
            }
        }
Exemplo n.º 28
0
        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>");
        }
Exemplo n.º 29
0
        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>");
                }
            }
        }
Exemplo n.º 30
0
        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);
        }