支付接口小记

支付系统网关地址:http://xxx.com/api/core.php 

请求方式:POST提交(或者GET) 

编码格式 :统一使用UTF-8 

返回数据格式:JSON格式 

签名方法:(各类支付签名方法都大同小异) 

1、所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA

2、在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算得到sign值。

例如微信主扫签名:

MD5(“account_no=账户编号&body=测试&interface_no=12&money=金额&nonce_str=123456&notify=www:baidu.com&order_sn=订单号”+密钥)

Md5 结果32位小写

 

验签方法:

验证调用返回或主动通知签名时,传送的signature参数不参与签名,将生成的签名与该signature值作校验

key :生成商户账号时自动生成

 

后端拼凑隐藏的form用ajax return前台自动提交:

<script>document.forms['paysubmit'].submit();</script>这个就是自动提交js代码

        /// <summary>
        /// 建立请求,以表单HTML形式构造(默认)
        /// </summary>
        /// <param name="sParaTemp">请求参数数组</param>
        /// <param name="key">加密密钥</param>
        /// <returns>提交表单HTML文本</returns>
        public static string buildQueryHtml(SortedDictionary<string, string> sParaTemp, string key)
        {
            //签名结果
            string mysign = qeurySign(sParaTemp, key);

            //签名结果与签名方式加入请求提交参数组中
            sParaTemp.Add("sign", mysign);

            StringBuilder sbHtml = new StringBuilder();

            sbHtml.Append("<form id='paysubmit' name='paysubmit' action='https://api.xxx.com/api/query.htm' method='post'>");

            foreach (KeyValuePair<string, string> temp in sParaTemp)
            {
                sbHtml.Append("<input type='hidden' name='" + temp.Key + "' value='" + temp.Value + "'/>");
            }

            //submit按钮控件请不要含有name属性
            sbHtml.Append("<input type='submit' value='pay' style='display:none;'></form>");

            sbHtml.Append("<script>document.forms['paysubmit'].submit();</script>");

            return sbHtml.ToString();
        }

 

转载于:https://www.cnblogs.com/AlbertSmith/p/7417929.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值