zoukankan      html  css  js  c++  java
  • 微信开发企业支付到银行卡PHP

    微信开发企业支付到银行卡 功能详解 不会的朋友可以加我QQ:344902511
    先发个微信支付官方链接你查看
    https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_2
    直接上代码 
    由于这里需要RSA算法 微信官方默认输出的是PKCS#1,笔者在这里发现RAS公钥在WINDOWS系统中安装复杂,后SSH到我的linux中转换了RSA
    官方给出的RSA公钥开头 -----BEGIN RSA PUBLIC KEY-----
    我们需要转成-----BEGIN PUBLIC KEY----- 这样开头的内容才可以使用
    PKCS#1 转 PKCS#8:linux口令
    openssl rsa -RSAPublicKey_in -in <filename> -pubout 
    <filename>是文件的路径
    回车以后会
    显示一下内容
    -----BEGIN PUBLIC KEY-----
    你的加密串
    -----END PUBLIC KEY-----

    复制出来后 你保存到你的网站目录上后缀扩展为pem
    然后你就可以使用了 

    下面直接看代码
    第一步。获取官方的RSA-PKCS1#

     public function RasKey($datainfo="")
        {
            $data=[
                //商户号
                "mch_id"=>$this->mch_id,
               //随机字符串
                "nonce_str"=>$this->genRandomString(32),
                //加密方式我是MD5
                "sign_type"=>"MD5",
            ];
            //微信签名
            $data["sign"]=$this->MakeSign($data);
            //提交到的URL
            $url="https://fraud.mch.weixin.qq.com/risk/getpublickey";
            //转换成XML格式POST到服务器
            $backxml=$this->postStr($url,$this->arrayToXml($data));
             //将获取到的内容解析成对象
            $backarr=simplexml_load_string($backxml, 'SimpleXMLElement', LIBXML_NOCDATA);
             //转换成数组
            $jsonStr = json_encode($backarr);
            $jsonArray = json_decode($jsonStr,true);
             //保存成PEM文件
            file_put_contents("pub_key.pem",$backarr->pub_key);
            dump($jsonArray);
    }
    

      

    复制代码

    第二部将 pub_key.pem 传送到linux系统进行PK8转码
    使用此口令 openssl rsa -RSAPublicKey_in -in <filename> -pubout 
    <filename> 是文件名
    拿到新的PK8码我们保存到自己的服务器pk8.pem

    第三部 加密并递交打款

    $data=[
                //商户号
                "mch_id"=>$this->mch_id,
                //商户订单号
                "partner_trade_no"=>md5(time()),
                //随机字符串
                "nonce_str"=>$this->genRandomString(32),
                //收款方银行卡号
                "enc_bank_no"=>$this->rsa_encrypt("您的卡号"),
                //收款方用户名
                "enc_true_name"=>$this->rsa_encrypt("您的姓名"),
                //收款方开户行
                "bank_code"=>"银行卡编码",
                //付款金额
                "amount"=>100,
                //付款说明
                "desc"=>"账户提现",
            ];
            //微信签名
            $data["sign"]=$this->MakeSign($data);
            //POST到微信服务器的网址
            $url="https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank";
            //以XML的格式POST到服务器
            $backxml=$this->postStr($url,$this->arrayToXml($data));
             //POST获取到的内容转成对象
            $backarr=simplexml_load_string($backxml, 'SimpleXMLElement', LIBXML_NOCDATA);
            dump($backarr);
    

      

    复制代码

    最后就成功了

    因为自己没有权限 所以显示如下

    ["return_code"] => string(7) "SUCCESS"
    ["return_msg"] => string(73) "产品权限验证失败,请查看您当前是否具有该产品的权限"
    ["result_code"] => string(4) "FAIL"
    ["err_code"] => string(7) "NO_AUTH"
    ["err_code_des"] => string(73) "产品权限验证失败,请查看您当前是否具有该产品的权限"
    ["nonce_str"] => string(32) "tEmXrUFgcBfLgVqMqkKcpJKfHJ3sZtsZ"
    ["mch_id"] => string(10) "1512018791"
    ["partner_trade_no"] => string(32) "055a1afff8191338302c4a2b193ba242"
    ["amount"] => string(3) "100"
    

    如果在加密串或微信付款上卡住的朋友 可以直接联系我

  • 相关阅读:
    Asp.net弹出浏览器客户端确认对话框代码 Carlwave
    VS 2005 与SQL Server 2005整合优势在哪里?(from csdn.net) Carlwave
    如何让搜索引擎收录我的站点 Carlwave
    超强扩展性的DNNDotNetNuke模块功能分类列表(from 中国DNN) Carlwave
    DotNetNuke命名空间概述 Carlwave
    Most Popular Questions and Answers on ASP.NET Whidbey(from asp.net forums,write by ASP.NET Team) Carlwave
    火箭官方宣告麦蒂缺阵五周 季后赛前景蒙上阴影 Carlwave
    asp.net有效使用缓存(转) Carlwave
    《Business Rules Engine Overview》《业务规则引擎概述》write by Mark Kamoski Carlwave
    中国详细省市县自治区名称列表(含access数据库和sql2000备份数据库) Carlwave
  • 原文地址:https://www.cnblogs.com/bluealine/p/11015081.html
Copyright © 2011-2022 走看看