Пример #1
0
        [ValidateInput(false)] //支付宝post的notify_data的数据为xml格式
        public ActionResult Notify(string notify_data, string sign, string cbUrl)
        {
            if (!VerifySignature(notify_data, sign))
            {
                Logger.Info(">>>>>>>> sign error <<<<<<<<");
                return(Content("fail"));
            }

            //获取交易状态
            XmlDocument xmlDoc = new XmlDocument();

            try
            {
                xmlDoc.LoadXml(notify_data);
            }
            catch
            {
                Logger.Info(">>>>>>>> xml parse error <<<<<<<<");
                return(Content("fail"));
            }

            string trade_status = AlipayFunction.GetStrForXmlDoc(xmlDoc, "notify/trade_status");

            if (!trade_status.Equals(BillingConsts.ALIPAY_TRADE_FINISHED))
            {
                return(Content("fail"));
            }
            else
            {
                PaymentsService.AlipaySDKCallback(xmlDoc, cbUrl);

                //成功必须在页面上输出success,支付宝才不会再发送通知
                return(Content("success"));
            }
        }
Пример #2
0
        private bool VerifySignature(string notify_data, string sign)
        {
            if (!ConfigKeys.NEED_VERIFY_SIG.ConfigValue().ToBoolean())
            {
                return(true);
            }

            //获取notify_data数据,需要添加notify_data=
            //不需要解密,直接是明文xml格式
            string notifyData = "notify_data=" + notify_data;

            // self sign
            //sign = Alipay.Class.RSAFromPkcs8.sign(notify_data, ConfigKeys.MERCHANT_PRIVATE_KEY.ConfigValue(), "utf-8");

            //验证签名
            return(AlipayFunction.Verify(notifyData, sign, ConfigKeys.ALI_PUBLIC_KEY.ConfigValue(), "utf-8"));
        }