支付的签名

public function MakeSign($data)
    {
        //签名步骤一:按字典序排序参数
        ksort($data);
        $string = $this->ToUrlParams($data);
        //print_r($string);
        //签名步骤二:在string后加入KEY
        $string = $string . "&key=tianxunhuliantianxunhuliantianxu";
        //print_r($string);
        //签名步骤三:MD5加密
        $string = md5($string);
        //print_r($string);
        //签名步骤四:所有字符转为大写
        $result = strtoupper($string);
        //print_r($result);
        return $result;
    }
/**
     * 格式化参数格式化成url参数
     */
    public function ToUrlParams($data)
    {
        $buff = "";
        foreach ($data as $k => $v)
        {
            if($k != "sign" && $v != "" && !is_array($v)){
                $buff .= $k . "=" . $v . "&";
            }
        }

        $buff = trim($buff, "&");
        return $buff;
    }
/**
     *
     * 产生随机字符串,不长于32位
     * @param int $length
     * @return 产生的随机字符串
     */
    public static function getNonceStr($length = 32)
    {
        $chars = "abcdefghijklmnopqrstuvwxyz0123456789";
        $str ="";
        for ( $i = 0; $i < $length; $i++ )  {
            $str .= substr($chars, mt_rand(0, strlen($chars)-1), 1);
        }
        return $str;
    }
function arrayToXml($arr){
        $xml = "<xml>";
        foreach ($arr as $key=>$val){
        if(is_array($val)){
                $xml.="<".$key.">".arrayToXml($val)."</".$key.">";
            }else{
                $xml.="<".$key.">".$val."</".$key.">";
            }
        }
        $xml.="</xml>";
        return $xml;
    }
//  微信post数组,订单号,商品金额
    public function getWxPay($post,$order_sn){
        $client_ip = $_SERVER["REMOTE_ADDR"];  //客户端ip
        $data[‘appid‘] = "";//appid
        $data[‘mch_id‘] = "";//商户号
        $data[‘nonce_str‘] = $this->getNonceStr();  //随机32位字符串
        $data[‘body‘] = ‘xmm-‘.$order_sn;
        $data[‘out_trade_no‘] = $order_sn;
        $data[‘total_fee‘] = $post[‘goods_price‘]*100;  //注意 单位是分
        $data[‘spbill_create_ip‘] = $client_ip;
        $data[‘notify_url‘] = "http://域名/api/register/notify";
        $data[‘trade_type‘] = "APP";  //交易类型
        $data[‘attach‘]="app_flash";
        //print_r($data);
        $data[‘sign‘] = $this->MakeSign($data);
        $xml = $this->arrayToXml($data);
        //print_r($xml);
        $url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
        $request = $this->postXmlCurl($xml,$url);
        //print_r($request);
        return $this->FromXml($request);
    }
时间: 2024-08-11 07:48:51

支付的签名的相关文章

支付宝app支付服务器签名代码(C#)

1,引入支付宝的sdk(AopSdk) 支付宝接口文档网站可下载,注意下载C#版本: 2,代码写的比较简单 public static string RSASign(string OrderNo,decimal Money,string bodyp,string subjectp) { string publicKeyPem = ;//支付宝公钥  string privateKeyPem = ;//商户私钥 string out_trade_no = OrderNo;//订单号 double

微信APP支付【签名失败】

最近在做微信APP支付 遇到一个问题 请求预下单时,接口返回签名错误 由于之前没有成功的交互,刚开始检查程序的错误,经过多次修改,发现依然是签名错误,可能出现的问题如下: 1.该签名密钥不是AppSecret(由于应用不是本人设置,参数由其他人申请,我一直以为签名密钥是APPSECRET,后来在网上查询发现该密钥是API密钥),需要在商户后台手动设置, key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 2.可以使用微信的在线签

微信支付回调签名失败Tomcat编码问题解决

在IDEA环境内嵌Tomcat8正常,在Windows部署的Tomcat8不正常,返回签名错误,原因是tomcat默认的编码使用ISO-8859-1的编码解析器,只要指定HttpServletRequest的读取编码即可解决乱码问题 ServletInputStream inStream = request.getInputStream(); String resp = getStrFromInsByCode(inStream, "utf-8"); /** * * @param is

小程序支付-再次签名-商城表的设计-热销产品展示

后台的login功能实现 from rest_framework.views import APIView from rest_framework.response import Response from django.core.cache import cache from app01 import models import hashlib,time from app01.wx import wx_Login class Login(APIView): def post(self,requ

微信支付---签名

/** * 微信支付jaspi签名 * @param characterEncoding * @param parameters * @return */ public static String createSign(String characterEncoding,SortedMap<Object,Object> parameters){ String API_KEY = PropUtil.getPropertyValue("wx.sz.api.key", "

小程序服务端集成微信支付

摘要: 换取openid->统一下单->发起支付,三步走,其中二次签名比较坑人. 该demo源码已托管到码云:http://git.oschina.net/dotton/lendoo-wx,欢迎下载. 理论上集成微信支付的全部工作可以在小程序端完成,因为小程序js有访问网络的能力,但是为了安全,不暴露敏感key,而且可以使用官方提供的现成php demo更省力,于是在服务端完成签名与发起请求,小程序端只做一个wx.requestPayment(OBJECT)接口的对接. 整体集成过程与JSAP

微信支付 常见报错

支付返回签名错误 注意签名参数的大小写,支付密钥key要到商户平台设置,设置的规则是32位数字与字母大小写的组合.以下链接为签名过程.(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=3_1) 支付回调 认证后的服务号之间支持跨号支付. 支付失败 请检查商户号是否错误或支付密钥key设置错误. redirect--uri参数错误 请进入公众平台-开发者中心,找到填写商户的支付授权域名,填写的就是商户支付授权目录上的域名. pays

微信支付-b

微信支付 APP端开发步骤(传送门):https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 1.首先下载最新的微信支付的SDK包.下载地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1,拖到你的工程文件中. 简要步骤如下: 1.配置APPID APPID要在微信开放平台申请.(让公司去注册.) targets -> info -> URL T

关于微信开发与微信支付更新

1.)微信开发一般就是看文档,按部就班调用API就行,这里推荐一些SDK .NET https://github.com/JeffreySu/WeiXinMPSDK JAVA http://git.oschina.net/pyinjava/fastweixin NodeJS https://github.com/node-weixin/node-weixin-api Python http://git.oschina.net/jeffkit/wechat 2.)在之前的文章微信支付[v3]中,说