开发微信企业付款到零钱步骤详解

版权声明:转载时请标注http://blog.csdn.net/zhihua_w https://blog.csdn.net/Zhihua_W/article/details/81481181

简述

上篇博文《开发微信企业付款到零钱步骤详解》已经进行对这些功能进行过的描述和一些步骤的描写。这个和开发企业付款到银行卡的开发步骤基本一致,不过这个有开通微信企业付款到零钱有点要求:1、商户号(或同主体其他非服务商商户号)已入驻90日;2、商户号(或同主体其他非服务商商户号)有30天连续正常交易;3、 登录微信支付商户平台-产品中心,开通企业付款。。关于其他的一些说明可以查看开发文档。

步骤

开发步骤基本也是先开通产品、然后下载API安全证书、获取RSA加密公钥、进行RSA公钥转码、开发代码。

代码

上篇博文中的部分代码可以复用,只有进行调用付款API的时候有所不同。微信企业付款到零钱需要用户的openId才能进行调用功能接口。

    /**
     * 企业付款到微信零钱
     * @param  string $openid 用户openid
     * @param  float $amount 企业付款金额,单位为分
     * @param  string $partner_trade_no 商户订单号,需保持唯一性(只能是字母或者数字,不能包含有符号)
     * @return array
     */
    public function WxPayToPersonal($openid, $amount, $partner_trade_no)
    {
        $transfer = [
            'mch_appid' => $this->mch_appid,
            'mchid' => $this->mch_id,
            'nonce_str' => self::CreateNonceStr(),
            'partner_trade_no' => $partner_trade_no,
            'openid' => $openid,
            'check_name' => 'NO_CHECK',
            'amount' => $amount,
            'desc' => "提现处理!",
            'spbill_create_ip' => self::GetClientIP(),
        ];
        $transfer['sign'] = self::MakeSign($transfer, $this->api_key);

        $xml = self::ArrayToXml($transfer);
        $url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
        $data = self::CurlPostSsl($url, $xml, $this->certificate_path);
        return self::XmlToArray(strstr($data, '<xml>'));
    }

    /**
     * 获取终端真实IP
     * @return string IP地址
     */
    public function GetClientIP()
    {
        if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
            $ip = getenv('HTTP_CLIENT_IP');
        } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
            $ip = getenv('HTTP_X_FORWARDED_FOR');
        } elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
            $ip = getenv('REMOTE_ADDR');
        } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
        return preg_match('/[\d\.]{7,15}/', $ip, $matches) ? $matches [0] : '';
    }

猜你喜欢

转载自blog.csdn.net/Zhihua_W/article/details/81481181