Esempio n. 1
0
        /// <summary>
        /// 智付快捷支付--签约查询接口
        /// 根据用户卡信息,查询该卡是否签约快捷支付
        /// </summary>
        /// <returns></returns>
        public static DinPayResultMsg IKJSign_query(View_PayMerSignWay paywayMer, string bankCode, BindCardModel bindModel)
        {
            DinPayResultMsg result = new DinPayResultMsg()
            {
                is_success = false
            };

            try
            {
                string interface_version = "V3.0";
                string input_charset     = "UTF-8";
                string service_type      = "sign_query";
                string sign_type         = "RSA-S";
                string merchant_code     = paywayMer.MerNo;    //商户号;
                string bank_code         = bankCode;           //支付通道银行编码
                string card_type         = "0";                //0-借记卡,1-信用卡
                string card_no           = bindModel.BankCard; //银行卡号
                string mobile            = bindModel.Mobile;   //开卡手机
                string merchant_sign_id  = "";                 //签约号,可选,与card_no 二选一

                ////////////////组装签名/////////////////
                //银行卡和签约号选输其一
                string signStr = "";
                signStr = "bank_code=" + bank_code + "&card_no=" + card_no + "&card_type=" + card_type + "&input_charset=" + input_charset + "&interface_version=" + interface_version + "&merchant_code=" + merchant_code;
                if (merchant_sign_id != "")
                {
                    signStr = signStr + "&merchant_sign_id=" + merchant_sign_id + "&service_type=" + service_type;
                }
                else
                {
                    signStr = signStr + "&mobile=" + mobile + "&service_type=" + service_type;
                }

                if (sign_type == "RSA-S")//RSA-S签名方法
                {
                    //商家私钥
                    string merPriKey = paywayMer.MerPrivateKey;// SettingHelper.strDinPayMerchantPrivateKey;
                    //私钥转换成C#专用私钥
                    merPriKey = RSASignUtils.RSAPrivateKeyJava2DotNet(merPriKey);
                    //签名
                    string signData = RSASignUtils.RSASign(signStr, merPriKey);
                    //将signData进行UrlEncode编码
                    signData = HttpUtility.UrlEncode(signData);

                    //组装字符串
                    string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData;
                    //将字符串发送到Dinpay网关
                    string _xml = HttpUtils.HttpPost(paywayMer.MerKJApiUrl, para);

                    //将同步返回的xml中的参数提取出来
                    var el = XElement.Load(new StringReader(_xml));
                    GetResultResp(_xml, result);
                }
            }
            catch (Exception ex)
            {
                result.error_msg = ex.Message;
            }
            return(result);
        }
Esempio n. 2
0
 /// <summary>
 /// 开联通签约查询
 /// </summary>
 /// <param name="result"></param>
 /// <param name="model"></param>
 /// <param name="order"></param>
 /// <param name="paywayMer"></param>
 public static void KJSignPay(ReturnModel result, RequestParamsM model, PayOrder order, View_PayMerSignWay paywayMer)
 {
     string        billno    = Common.GetBillNo(32);
     string        amount    = order.Account.ToString();//单位分
     string        returnUrl = order.MediaType == 1 ? paywayMer.ReturnUrl : paywayMer.ReturnUrlM;
     BindCardModel bindModel = new BindCardModel()
     {
         IDCard   = model.IDCard,
         BankCard = model.BankCard,
         Mobile   = model.Mobile,
         UserName = model.UserName
     };
     DinPayResultMsg r = IKJSign_query(paywayMer, model.BankValue, bindModel);
 }
Esempio n. 3
0
        /// <summary>
        /// 快捷支付实名认证消息返回
        /// </summary>
        /// <param name="xml"></param>
        /// <param name="result"></param>
        public static void GetResultResp(string xml, DinPayResultMsg result)
        {
            XElement dinpay  = XElement.Load(new StringReader(xml));
            XElement respose = dinpay.Element("response");

            foreach (string item in RespArr)
            {
                XElement itemElement = respose.Element(item);
                if (itemElement != null)
                {
                    switch (item)
                    {
                    case "is_success":
                        result.is_success = itemElement.Value == "T";
                        break;

                    case "error_code":
                        result.error_code = itemElement.Value;
                        break;

                    case "error_msg":
                        result.error_msg = itemElement.Value;
                        break;

                    case "sign_type":
                        result.sign_type = itemElement.Value;
                        break;

                    case "sign":
                        result.sign = itemElement.Value;
                        break;

                    case "merchant_code":
                        result.merchant_code = itemElement.Value;
                        break;

                    case "merchant_sign_id":
                        result.merchant_sign_id = itemElement.Value;
                        break;

                    case "sign_status":
                        result.sign_status = itemElement.Value;
                        break;

                    case "pay_model":
                        result.pay_model = itemElement.Value;
                        break;

                    case "order_no":
                        result.order_no = itemElement.Value;
                        break;

                    case "sms_trade_no":
                        result.sms_trade_no = itemElement.Value;
                        break;

                    case "sms_code":
                        result.sms_code = itemElement.Value;
                        break;

                    case "order_amount":
                        result.order_amount = itemElement.Value;
                        break;

                    case "trade_time":
                        result.trade_time = itemElement.Value;
                        break;

                    case "trade_status":
                        result.trade_status = itemElement.Value;
                        break;
                    }
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 智付快捷支付-输入短信验证码确认支付
        /// </summary>
        /// <param name="order_money"></param>
        /// <param name="order_num"></param>
        /// <param name="ordertime"></param>
        /// <param name="bankCode"></param>
        /// <param name="strNotifyUrl"></param>
        /// <param name="sms_tradeno"></param>
        /// <param name="smscode"></param>
        /// <param name="userinfo"></param>
        /// <returns></returns>
        public static DinPayResultMsg GetKJPayConfirm(string signno, string order_money, string order_num, string ordertime, string bankCode, string strNotifyUrl, string sms_tradeno, string smscode, BindCardModel bindModel, View_PayMerSignWay paywayMer)
        {
            DinPayResultMsg result = new DinPayResultMsg()
            {
                is_success = false
            };

            try
            {
                string interface_version = "V3.0";
                string input_charset     = "UTF-8";
                string service_type      = "express_sign_pay";
                string sign_type         = "RSA-S";
                string merchant_code     = paywayMer.MerNo;//商户号;
                string order_no          = order_num;
                string order_amount      = order_money;
                string order_time        = ordertime;
                string notify_url        = strNotifyUrl;
                string merchant_sign_id  = signno;
                string mobile            = bindModel.Mobile;
                string sms_trade_no      = sms_tradeno;
                string sms_code          = smscode;
                string product_name      = "hk00a";

                string card_no       = bindModel.BankCard;
                string card_name     = bindModel.UserName;
                string id_no         = bindModel.IDCard;
                string card_cvv2     = "";
                string card_exp_date = "";
                string encrypt_info  = card_no + "|" + card_name + "|" + id_no; //组装敏感数据,信用卡用户需加入信用卡信息
                ////使用智付公钥对卡号和卡密加密【智付公钥需从商家后台-公钥管理中取出】//////////
                string dinpayPubKey = paywayMer.MerVerifyPublicKey;
                //////////将公钥转换成C#专用格式///////////
                dinpayPubKey = RSASignUtils.RSAPublicKeyJava2DotNet(dinpayPubKey);
                //加密后的卡号密码
                string encrypt_info_result = RSASignUtils.RSAEncrypt(encrypt_info, dinpayPubKey);
                ////////////////组装签名/////////////////
                string signStr = "";

                signStr = "encrypt_info=" + encrypt_info_result + "&input_charset=" + input_charset + "&interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&merchant_sign_id=" + merchant_sign_id + "&mobile=" + mobile + "&notify_url=" + notify_url + "&order_amount=" + order_amount + "&order_no=" + order_no + "&order_time=" + order_time + "&product_name=" + product_name + "&service_type=" + service_type + "&sms_code=" + sms_code + "&sms_trade_no=" + sms_trade_no;

                if (sign_type == "RSA-S")//RSA-S签名方法
                {
                    //商家私钥
                    string merPriKey = paywayMer.MerPrivateKey;
                    //私钥转换成C#专用私钥
                    merPriKey = RSASignUtils.RSAPrivateKeyJava2DotNet(merPriKey);
                    //签名
                    string signData = RSASignUtils.RSASign(signStr, merPriKey);
                    //将signData进行UrlEncode编码
                    signData = HttpUtility.UrlEncode(signData);
                    //将加密后的卡号卡密进行UrlEncode编码
                    encrypt_info_result = HttpUtility.UrlEncode(encrypt_info_result);

                    //组装字符串
                    string para = "encrypt_info=" + encrypt_info_result + "&input_charset=" + input_charset + "&interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&merchant_sign_id=" + merchant_sign_id + "&mobile=" + mobile + "&notify_url=" + notify_url + "&order_amount=" + order_amount + "&order_no=" + order_no + "&order_time=" + order_time + "&product_name=" + product_name + "&service_type=" + service_type + "&sms_code=" + sms_code + "&sms_trade_no=" + sms_trade_no + "&sign_type=" + sign_type + "&sign=" + signData;
                    //将字符串发送到Dinpay网关
                    string _xml = HttpUtils.HttpPost(paywayMer.MerKJApiUrl, para);
                    GetResultResp(_xml, result);

                    if (result.is_success)
                    {
                        ////组装验签字符串
                        //string signsrc = "is_success=" + (result.is_success?"T":"F") + "&merchant_code=" + result.merchant_code + "&merchant_sign_id=" + result.merchant_sign_id + "&order_no=" + result.order_no + "&trade_no=" + result.trade_no + "&trade_status=" + result.trade_status + "&trade_time=" + result.trade_time;
                        ////使用智付公钥对返回的数据验签
                        //bool validateResult = HttpHelp.ValidateRsaSign(signsrc, dinpayPubKey, result.sign);

                        //if (validateResult == false)
                        //{
                        //    result.is_success = false;
                        //    result.error_msg = "验签失败";
                        //}
                    }
                }
            }
            catch (Exception ex)
            {
                result.error_msg = ex.Message;
            }
            return(result);
        }
Esempio n. 5
0
        /// <summary>
        /// 智付快捷下单获取短信验证码
        /// </summary>
        /// <param name="order_money"></param>
        /// <param name="order_num"></param>
        /// <param name="bankCode"></param>
        /// <param name="strNotifyUrl"></param>
        /// <param name="userinfo"></param>
        /// <returns></returns>
        public static DinPayResultMsg GetKJSignPaySmsCode(string signid, string order_money, string order_num, string bankCode, string strNotifyUrl, BindCardModel bindModel, View_PayMerSignWay paywayMer)
        {
            DinPayResultMsg result = new DinPayResultMsg()
            {
                is_success = false
            };

            try
            {
                string interface_version = "V3.0";
                string input_charset     = "UTF-8";
                string service_type      = "sign_pay_sms_code";
                string sign_type         = "RSA-S";
                string merchant_code     = paywayMer.MerNo;
                string order_no          = order_num;
                string order_amount      = order_money;
                string sms_type          = "1";              //0-签约+支付验证码 1-支付验证码
                string send_type         = "0";              //0-平台下发
                string merchant_sign_id  = signid;           //快捷支付签约号 已签约用户必输
                string card_type         = "0";              //0-借记卡 1-信用卡 未签约用户必输
                string mobile            = bindModel.Mobile; //待签约的手机号
                string bank_code         = bankCode;         //未签约用户必输

                string card_no      = bindModel.BankCard;
                string card_name    = bindModel.UserName;
                string id_no        = bindModel.IDCard;
                string encrypt_info = card_no + "|" + card_name + "|" + id_no; //组装敏感数据
                ////使用智付公钥对卡号和卡密加密【智付公钥需从商家后台-公钥管理中取出】//////////
                string dinpayPubKey = paywayMer.MerVerifyPublicKey;
                //////////将加密密钥转换成C#专用格式///////////
                dinpayPubKey = RSASignUtils.RSAPublicKeyJava2DotNet(dinpayPubKey);
                //加密后的卡号密码
                string encrypt_info_result = RSASignUtils.RSAEncrypt(encrypt_info, dinpayPubKey);
                ////////////////组装签名/////////////////

                string signStr = "bank_code=" + bank_code + "&card_type=" + card_type + "&encrypt_info=" + encrypt_info_result + "&input_charset=" + input_charset + "&interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&merchant_sign_id=" + merchant_sign_id + "&mobile=" + mobile + "&order_amount=" + order_amount + "&order_no=" + order_no + "&send_type=" + send_type + "&service_type=" + service_type + "&sms_type=" + sms_type;

                if (sign_type == "RSA-S")//RSA-S签名方法
                {
                    //商家私钥
                    string merPriKey = paywayMer.MerPrivateKey;
                    //私钥转换成C#专用私钥
                    merPriKey = RSASignUtils.RSAPrivateKeyJava2DotNet(merPriKey);
                    //签名
                    string signData = RSASignUtils.RSASign(signStr, merPriKey);
                    //将signData进行UrlEncode编码
                    signData = HttpUtility.UrlEncode(signData);
                    //将加密后的卡号卡密进行UrlEncode编码
                    encrypt_info_result = HttpUtility.UrlEncode(encrypt_info_result);

                    //组装字符串
                    //string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData;
                    string para = "bank_code=" + bank_code + "&card_type=" + card_type + "&encrypt_info=" + encrypt_info_result + "&input_charset=" + input_charset + "&interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&merchant_sign_id=" + merchant_sign_id + "&mobile=" + mobile + "&order_amount=" + order_amount + "&order_no=" + order_no + "&send_type=" + send_type + "&service_type=" + service_type + "&sms_type=" + sms_type + "&sign_type=" + sign_type + "&sign=" + signData;
                    //将字符串发送到Dinpay网关
                    string _xml = HttpUtils.HttpPost(paywayMer.MerKJApiUrl, para);
                    GetResultResp(_xml, result);
                    if (result.is_success)
                    {
                        ////组装验签字符串
                        //string signsrc = "is_success=" + (result.is_success ? "T" : "F") + "&merchant_code=" + result.merchant_code + "&order_no=" + result.order_no + "&sms_trade_no=" + result.sms_trade_no;
                        ////使用智付公钥对返回的数据验签
                        //bool validateResult = HttpHelp.ValidateRsaSign(signsrc, dinpayPubKey, result.sign);

                        //if (validateResult == false)
                        //{
                        //    result.error_msg = "验签失败";
                        //}
                    }
                }
            }
            catch (Exception ex)
            {
                result.error_msg = ex.Message;
            }
            return(result);
        }