微信企业付款到银行卡

第一次做微信企业付款到银行卡,特地记录下来,因为这个功能自己用了2-3天,这中间的坑主要是再rsa加密那块。自己记录下来,供朋友参考。自己用的php开发

第一,首先你需要开通企业的微信认证公众号平台,然后开通支付功能。这些我就不说了。自己开通。

第二,看文档,

第三步,发送请求接口,发送后,腾讯会给你响应。特别要说明一点的是,腾讯这个功能真不便宜,我测试时一元钱,手续费扣了我一元。最少金额是一元。

在发送接口时有个公钥我们首先要获得,同时里面有个签名算法,公钥主要用于到时银行账号和收款人姓名加密,把这两个搞定,其他的就好整了。

先说rsa公钥。这个公钥是我们要从微信端服务器获得。获得后保存本地服务器。然后在linux服务器上进行公钥格式转换  把PKCS#1 转 PKCS#8:

接口地址是:https://fraud.mch.weixin.qq.com/risk/getpublickey ,请求时需要把证书带上,证书是在微信支付平台上下载。

这谁需要携带的参数

   public function getPuyKey(){
        $this->params = [
        ‘mch_id‘    => self::MCHID,//商户ID
        ‘nonce_str‘ => md5(time()),
        ‘sign_type‘ => ‘MD5‘
        ];
        //将数据发送到接口地址
        return $this->send(self::PKURL);
    }

  //下面是在请求时要记得携带证书,微信支付平台上下载

  public function postData($url,$postfields){
        $ch = curl_init();
        $params[CURLOPT_URL] = $url;    //请求url地址
        $params[CURLOPT_HEADER] = false; //是否返回响应头信息
        $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
        $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
        $params[CURLOPT_POST] = true;
        $params[CURLOPT_POSTFIELDS] = $postfields;
        $params[CURLOPT_SSL_VERIFYPEER] = false;
        $params[CURLOPT_SSL_VERIFYHOST] = false;
        //以下是证书相关代码
        $params[CURLOPT_SSLCERTTYPE] = ‘PEM‘;
        $params[CURLOPT_SSLCERT] = dirname(getcwd()).‘/pay/cert/apiclient_cert.pem‘;
        $params[CURLOPT_SSLKEYTYPE] = ‘PEM‘;
        $params[CURLOPT_SSLKEY] =dirname(getcwd()).‘/pay/cert/apiclient_key.pem‘;

        curl_setopt_array($ch, $params); //传入curl参数
        $content = curl_exec($ch); //执行
        curl_close($ch); //关闭连接
        return $content;
    }

  

//成功返回后,会返回xml数据,转换下,里面有pub_key 就是公钥,然后进行转换并保存

接口会返回PKCS#1格式的公钥

openssl rsa -RSAPublicKey_in -in pcs1.pem -out  pcs8.pem 

证书请求后再对接口进行请求

先读取你保存的公钥

$pubkey=file_get_contents(dirname(getcwd()).‘/pay/cert/newpubkey.pem‘);

//配置好参数
$data=array(
    ‘partner_trade_no‘    => date(‘YmdHis‘).rand(1000,9999),   //订单号
    ‘enc_bank_no‘         => $test->publicEncrypt(‘xxxxx‘,$pubkey),//收款方银行卡号RSA加密
    ‘enc_true_name‘       => $test->publicEncrypt(‘xxxxx‘,$pubkey),//收款方姓名RSA加密
    ‘bank_code‘           => ‘1003‘,//收款方开户行
    ‘amount‘              => $prices,//付款金额 默认是分,最少1元
);

 

$pay_info=$test->bankPay($data);

//重点是rsa加密,本人就是在这里被坑了1天,一直是签名说是银行卡或收款人姓名不正确。其实是rsa加密不正确。
 /**
     * 公钥加密,银行卡号和姓名需要RSA算法加密
     * @param string $data    需要加密的字符串
     * @return null|string    加密后的字符串
     */
    public function publicEncrypt($data = ‘‘,$pubkey=‘‘)
    {
        if (!is_string($data)) {
            return null;
        }
        // 进行加密
        $r = openssl_public_encrypt($data,$encrypt_data,$pubkey,OPENSSL_PKCS1_OAEP_PADDING);
        if($r){//加密成功,返回base64编码的字符串
            return base64_encode(‘‘.$encrypt_data);
        }else{
            return false;
        }
    }

  //其实如果流程熟悉了,其实也没那么难,主要是没做过,所以才会被不停的被坑,网上关于php企业微信支付这块不是很多。记录下来希望能帮到大家。



原文地址:https://www.cnblogs.com/hanyudanei/p/9003133.html

时间: 2024-11-02 23:41:43

微信企业付款到银行卡的相关文章

thinkphp 微信支付 thinkphp 微信企业付款

前面已经跑通了微信支付的流程,接下来吧微信支付和微信企业付款接入到thinkphp中,版本是3.2 把微信支付类.企业付款类整合到一起放到第三方类库,这里我把微信支付帮助类和企业付款类放到同一个文件了: 把Payment整个文件夹放到\ThinkPHP\Library\Vendor文件夹下面,打开WxPay.pub.config.php,配置四个参数即可,然后把微信提供的证书放到caccert文件夹:这样就完成了支付和 企业付款的所有代码配置! 待续...

11. PHP接入微信企业付款功能

payment 项目2.0版本 这个功能与支付宝的批量付款到支付宝帐号功能类似.但是当前支付宝这个接口已经停止审核了. 当前很多提问平台就用到了这两个平台.比如[来问医生],你提的问题如果被人看了.医生得0.5元,你得0.5元.然后累积够1元后,[来问医生]就会通过微信的企业付款功能给你的微信余额增加1元. 代码调用 use Payment\TransferContext; use Payment\Common\PayException; use Payment\Config; // 生成转款单

微信企业付款到个人钱包引发的坑之反思~

企业付款到个人钱包也就是用户在微信公众平台提现可以直接打入提现者微信的钱包!但要满足: 1)企业开通微信支付90天 2)连续30天有交易才能开通此功能 今天有幸能开发此功能,我只能说我又涨知识了!!!在我编程的这条道路上我又多见到了一些坑!下面就给大家讲一下今天遇到的两个坑! 1)CA证书引入问题,开发过程中遇到了CA证书验证失败的问题,百度之后网上有的说要用绝对路径,有的人说要用相对路径! curl_setopt($curl,CURLOPT_SSLCERT,getcwd()."/cert/ap

微信企业付款到个人钱包引发的坑之反思~!

企业付款到个人钱包也就是用户在微信公众平台提现可以直接打入提现者微信的钱包!但要满足: 1)企业开通微信支付90天 2)连续30天有交易才能开通此功能 今天有幸能开发此功能,我只能说我又涨知识了!!!在我编程的这条道路上我又多见到了一些坑!下面就给大家讲一下今天遇到的两个坑! 1)CA证书引入问题,开发过程中遇到了CA证书验证失败的问题,百度之后网上有的说要用绝对路径,有的人说要用相对路径! 小梦使用的是Thinkphp3.2框架开发的这个功能,最终我结果告诉我用绝对路径,还要用到PHP的一个函

微信企业付款

<?php header('content-type:text/html;charset=utf-8'); $data['mch_appid']='##################';//商户的应用appid $data['mchid']='################';//商户ID $data['nonce_str']='123456';//unicode();//这个据说是唯一的字符串下面有方法 $data['partner_trade_no']='LB123456';//.tim

浅析微信支付:(余额提现)企业付款到微信用户零钱或银行卡账户

本文是[浅析微信支付]系列文章的第十二篇,主要讲解在商户存在的提现.商户付款到微信用户零钱或者银行卡需求. 浅析微信支付系列已经更新十二篇了哟-,没有看过的朋友们可以看一下哦. 浅析微信支付:支付验收示例和验收指引 浅析微信支付:如何使用沙箱环境测试 浅析微信支付:下载对账单和资金账单 浅析微信支付:申请退款.退款回调接口.查询退款 如果你是做电商或者某些有福利返利的系统,基本上会遇到诸如 余额提现 这类需求,主要就是平台向用户返利现金,积累到某一个门槛,可以领取到自己的余额账号.银行卡:或者是

微信开发 -- 企业付款 PHP代码实现

写这篇文章的目的主要是由于在微信公众平台提供的SDK中并没有提供此功能的SDK实现, 其实最后实现还是借助 微信公众平台开发文档 和 SDK. 企业付款的应用场景: 公众号向已关注用户付款,比如处理退款.财务结算等 先说一下实现思路: 在SDK中自带类库的基础上扩展WxMchPay组件, 实现企业付款功能的扩展. 话不多说,上代码, 下面是继承SDK,实现企业付款的组件: $parameters参数参考: 企业付款API的文档 <?php // 引入SDK import('Common.Util

微信:企业付款给用户

微信企业付款给个人零钱 使用盛派开发的sdk :nuget地址 senparc.weixin.mp.dll 盛派sdk地址:https://weixin.senparc.com/ 盛派SDK github 地址:https://github.com/JeffreySu/WeiXinMPSDK 企业付款API 使用接口: TenPayV3.Transfers(TenPayV3TransfersRequestData dataInfo, string cert, string certPasswor

解决问题:CA_ERROR证书出错,请登录微信支付商户平台下载证书-企业付款到零钱接口(原创)

这几天用到了微信企业付款到零钱这个接口,结果出现了报错:CA_ERROR, 该接口的API说明和报错提示说明:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2 通过看提示知道原因大概在:请求没带商户API证书或带了错误的商户API证书. 然后我自己查看了我发post请求的地方,汗,果不其然,有个控制是否携带API证书的地方我设置了不携带false. 修改为ture,然后检查下证书路径,测试OK. 原文地址: