整合ThinkPHP功能系列之微信企业付款至用户零钱银行卡

公司开发商城项目,还是放在公众号里面的,所以一系列的支付都需要使用微信的支付功能。产品就提出了用户奖金提现要走API,不然把财务累死 ? 

企业付款到零钱以及银行卡是2个接口,功能不一样,而且付款到零钱是有付款条件的

1、商户号(或同主体其他商户号)已入驻90日 2、商户号(或同主体其他商户号)有30天连续正常交易 3、 登录微信支付商户平台-产品中心,开通企业付款。

就这样我们公司用不了零钱付款的功能,但是我也集成了,可以看看

这里还是主要说付款至用户银行卡,微信上线的企业付款至银行卡功能,商户可以将商户号余额付款至指定的收款银行账户,通过指定收款银行账户户名、卡号,以及收款银行信息就可以实现付款功能

目前企业付款到银行卡仅支持17家银行,更多银行在逐步开放中,但是看着常用的银行基本都有,这个不影响使用

使用企业付款接口是需要双向证书的,这个找你们公司负责的人吧

第一步:获取RSA加密公钥

调用获取RSA公钥API获取RSA公钥,落地成本地文件,假设为public.pem,确定public.pem文件的存放路径,同时修改代码中文件的输入路径,加载RSA公钥,用标准的RSA加密库对敏感信息进行加密,选择RSA_PKCS1_OAEP_PADDING填充模式, 得到进行rsa加密并转base64之后的密文,将密文传给微信侧相应字段,如付款接口(enc_bank_no/enc_true_name)

这个接口默认输出PKCS#1格式的公钥,我们需要这个,所以先写一个接口去请求一下,然后将证书文件保存一下

public function rsa()
{
    $config = C('WECHAT');
    vendor('Weixin.WeChatPayBank');
    $model = new WechatPayBank($config);
    $model->rsa();
}

将集成好的SDK放在/ThinkPHP/Library/Vendor/Weixin,集成好的代码有点多,这里就不发了,万一熊掌号不给我收录就GG了,最后会上传Github,自行下载吧

请求上面这个接口会返回证书信息

第二步:转换秘钥

将这个public_key保存一下,因为还要转换。PKCS#1转PKCS#8

openssl rsa -RSAPublicKey_in -in <filename> -pubout

这个命令需要在服务器执行,如果报错的话,说明你姿势不对 

Error opening Public Key pkcs8.pem
139840771336096:error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('pkcs8.pem','r')
139840771336096:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:
unable to load Public Key

类似这样~就是命令的问题了

openssl rsa -RSAPublicKey_in -in pkcs1.pem -pubout > pkcs8.pem

这样提示writing RSA key就说明成功了,当然敲这个命令的时候要进入你放证书以及上面的公钥的目录,放在一个不可直接访问的目录!这是重点,防止别人直接盗用造成资金损失

毕竟这是涉及金钱方面的东西,最好多测试几次。我也不想看到有人来找我说,因为使用了我的SDK而造成资金损失,来找我要赔偿,哈哈 ?

这样就可以把之前写的rsa控制器方法注释掉了,因为他没用了

第三步:配置信息

TP3使用C方法读取配置文件,所以你要将商户号那些配置文件放在/Application/Common/Conf/config.php中,记得补全一下信息。并且我将证书放在了/Common/Credential/

'WECHAT' => [
    'appid' => '',//公众号id
    'appKey' => '',//公众号APPKey
    'apiKey' => '',//商户API密钥
    'mchid' => '',//商户号
    'certificate_path' => dirname(dirname(__FILE__)).'/Credential',//证书路径
],

第四步:调用

然后就可以调用了,具体还是要根据你的业务逻辑来操作,做好写一个事务,防止资金损失,不然你钱怎么没的你都不知道

public function check()
{
    $config = C('WECHAT');
    vendor('Weixin.WeChatPayBank');
    $model = new WechatPayBank($config);
    $result = $model->paybank($bank_no, $true_name, $bank_code, $amount, $partner_trade_no);
}

调用的时候将用户的银行卡号,用户名,开户行ID,企业付款金额(单位为分),商户订单号传过去就行了。开户行ID微信那边有提供,然后就没然后了,具体自己看代码吧

项目地址:

Github,如果项目对你有所帮助,请给一个star ?

相关文档:

获取RSA加密公钥API

银行编号列表

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

Adobe Flash零日漏洞 (cve-2018-4878)在野攻击预警分析

概述 2月1日, Adobe官方发布了Adobe Flash Player系列产品的安全通告(APSA18-01),一个最新的Adobe Flash零日漏洞被发...

33590
来自专栏FreeBuf

革命性创新?走近“高水准”新型勒索软件Spora

勒索软件几乎每周都会增加新的“家族成员”,这类威胁的影响力不断上升。Emsisoft(奥地利的信息安全公司,主营业务有反恶意软件、互联网安全、应急响应、移动安全...

20260
来自专栏FreeBuf

国产工具:渗透测试助手PKAV HTTP Fuzzer发布

渗透测试的各位高手们,是不是还在为找不到一个好帮手而郁闷呢?别郁闷了,我来帮你!PKAV HTTP Fuzzer绝对是一你一用就会爱上的好帮手! 但是我们开发这...

1.3K100
来自专栏FreeBuf

远控木马上演白利用偷天神技:揭秘假破解工具背后的盗刷暗流

如今,不少人为了省钱,会尝试各种免费的方法获取网盘或视频播放器的会员权限,网上也流传着不少“网盘不限速神器”或者“播放器VIP破解工具”。不过,这些“神器”既不...

38150
来自专栏FreeBuf

微软竟然上传用户磁盘加密密钥到微软服务器中

如果你是用微软账号登录Windows 10,那你得知道,你的电脑会自动上传你的加密密钥。 新的Windows电脑会默认开启自带的磁盘加密功能,保障用户数据,防止...

38890
来自专栏FreeBuf

Kali 2.0中无线安全工具更新特性(浅谈pixie结合reaver的攻击原理)

0x00 背景知识 WPS(Wi-FiProtected Setup,Wi-Fi保护设置)是由Wi-Fi联盟组织实施的认证项目,主要致力于简化无线网络的安全加密...

34650
来自专栏企鹅号快讯

黑客界在平常交流的一些专业术语介绍

每天都有人问我,黑客是什么,黑客有什么术语,或者遇到黑客,我应该怎么做,我在这里也给感兴趣的朋友普及一点小知识,黑客有很多的术语,下面我会给大家介绍黑客经常用到...

216100
来自专栏信安之路

无线网络 EAP 认证

平常我们见到最多的 wifi 安全模式都是 WAP2 PSK 由于 WEP 被发现了很多漏洞。WAP2 就出来了他的安全性比 WEP 是高很多的,但是 WAP2...

22700
来自专栏FreeBuf

HTTPS劫匪木马暴力升级:破坏ARK攻击杀软

目前,越来越多的网站开始注册证书,提供对HTTPS的支持,保护自己站点不被劫持。而作为对立面的流量劫持攻击,也开始将矛头对准HTTPS,其中最常见的一种方法便是...

28180
来自专栏FreeBuf

谁蹭了我的WiFi?浅谈家用无线路由器攻防

家用无线路由器作为家庭里不可或缺的网络设备,在给普通人带来极大便利的同时,也给处于互联网时代的我们带来了很多安全隐患,本文将针对普通家用无线路由器的常见攻击过程...

38470

扫码关注云+社区

领取腾讯云代金券