• 微信开发企业支付到银行卡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"
    

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

  • 相关阅读:
    hdoj_2553N皇后问题
    poj_2676
    poj_1836Alignment
    PKU ACM 搜索总结
    POJ_1426Find The Multiple
    jQuery Ajax之$.get()方法和$.post()方法
    jQuery Ajax之$.get()方法和$.post()方法
    使用jquery简化ajax开发
    jquery ajax全解析
    jQuery的一些特性和用法:
  • 原文地址:https://www.cnblogs.com/bluealine/p/11015081.html
Copyright © 2020-2023  润新知