微信公众号开发(六)微信支付(发红包、企业支付到零钱)需要证书请求示例

简介: 这里最主要的就是curlpost请求的时候需要带上证书。否则请求会失败。

微信支付,发现金红包及企业支付到零钱这两个操作请求是需要携带证书的。

image.png

证书如何下载,如何配置,我这里就不赘述了。官方文档给的说明还算是清楚。

我这里直接给出我现在正在使用的微信生成支付签名的代码:

php

复制代码

class WxPayController extends CommonController
{
    /**
     * @name: 公众号appid
     * @author: camellia
     * @date: 2021-02-19 
     */
    private $appid = 'xxx';
    /**
     * @name: 微信支付商户秘钥
     * @author: camellia
     * @date: 2021-02-19 
     */
    private $mch_id = 'xxx';
    /**
     * @name: 自定义秘钥key
     * @author: camellia
     * @date: 2021-02-19 
     */
    private $wxpay_key = 'xxx';
    /**
     * @name curl_post公共请求方法
     * @author camellia
     * @date 20200630
     * @param $url 请求连接
     * @param $data 请求参数
     */
    public function curlPost($url, $data)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        // 请求的时候需要带上证书信息(证书路径需要是绝对路径)
        curl_setopt($ch, CURLOPT_SSLCERT, '/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxxx/xxx/xxx/xxx/apiclient_cert.pem');
        curl_setopt($ch, CURLOPT_SSLKEY, '/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/apiclient_key.pem');
        // curl_setopt($ch, CURLOPT_CAINFO, '/xxx/xxx/xxx/xxx/rootca.pem'); // CA根证书(用来验证的网站证书是否是CA颁布)
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        // POST数据
        curl_setopt($ch, CURLOPT_POST, 1);
        // 把post的变量加上
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }
    /**
     * @name: 微信签名加密算法
     * @author: camellia
     * @date: 2021-02-19 
     * @param:  $data   array   微信支付请求数据数组
     * @return: $sign   string  微信支付签名字符串
     */
    public function Cryptage($data)
    {
        ksort($data);
        $stringA = '';
        foreach ($data as $k => $v) 
        {
            $stringA .= $k . '=' . $v . '&';
        }
        $stringA .= 'key=' . $this->wxpay_key;
        $sign = strtoupper(md5($stringA));
        return $sign;
    }
    /**
     * @name: 给用户发钱(红包)
     * @author: camellia
     * @date: 2021-02-19 
     * @param:  wx_exchange  微信支付订单表
     * @return: data    type    description
     * 官方文档:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3
     */
    public function sendMoneyToUser()
    {
        // 用户openid
        $openid = 'xxxx';
        // 发放现金额度
        $total_amount = 101;
        $mch_billno = 'hb'.time(). rand(10000, 99999);
        // 商户订单号
        $data['mch_billno'] = $mch_billno;
        // 微信商户号
        $data['mch_id'] = $this->mch_id;
        // 公众号appid
        $data['wxappid'] = $this->appid;
        // 商户名称
        $data['send_name'] = 'xxx';
        // 用户openid
        $data['re_openid'] = $openid;
        // 付款金额
        $data['total_amount'] = $total_amount;
        // 红包总数
        $data['total_num'] = 1;
        // 红包祝福语
        $data['wishing'] = 'xxx';
        // client_ip
        $data['client_ip'] = 'xxx';
        // 活动名称
        $data['act_name'] = 'xxx';
        // 备注
        $data['remark'] = 'xxx';
        // 场景id
        // $data['scene_id'] = 'PRODUCT_2';
        // 随机字符串
        $data['nonce_str'] = 'xxxxx';
        $sign = $this->Cryptage($data);
        $str = "<xml> 
                <sign>$sign</sign> 
                <mch_billno>".$data['mch_billno']."</mch_billno> 
                <mch_id>".$data['mch_id']."</mch_id> 
                <wxappid>".$data['wxappid']."</wxappid> 
                <send_name>".$data['send_name']."</send_name> 
                <re_openid>".$data['re_openid']."</re_openid> 
                <total_amount>".$data['total_amount']."</total_amount> 
                <total_num>".$data['total_num']."</total_num> 
                <wishing>".$data['wishing']."</wishing> 
                <client_ip>".$data['client_ip']."</client_ip> 
                <act_name>".$data['act_name']."</act_name> 
                <remark>".$data['remark']."</remark> 
                <nonce_str>".$data['nonce_str']."</nonce_str>  
                </xml>";
        $url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
        $result = $this->curlPost($url, $str);
        var_dump($result);die;
    }
}

这里最主要的就是curlpost请求的时候需要带上证书。否则请求会失败。

我这里指的是需要证书的微信支付的功能,正常用户扫码支付功能,则不需要携带这些证书等。

有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”

目录
相关文章
|
10月前
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
5月前
|
移动开发 算法 安全
快应用如何去申请微信支付商户?-快应用申请微信支付-优雅草卓伊凡
快应用如何去申请微信支付商户?-快应用申请微信支付-优雅草卓伊凡
134 0
快应用如何去申请微信支付商户?-快应用申请微信支付-优雅草卓伊凡
|
9月前
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
601 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
9月前
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
630 1
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
10月前
|
小程序
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
320 2
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
|
10月前
|
小程序 数据安全/隐私保护 开发者
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
697 3
|
小程序 开发者
微信小程序之网络数据请求 wx:request的简单使用
这篇文章介绍了微信小程序中如何使用wx.request进行网络数据请求,包括请求的配置、请求的格式以及如何在开发阶段关闭请求的合法检验。
微信小程序之网络数据请求 wx:request的简单使用
|
小程序 前端开发 JavaScript
微信小程序实现微信支付(代码和注释很详细)
微信小程序实现微信支付(代码和注释很详细)
|
小程序 PHP
微信小程序给 thinkphp后端发送请求出现错误 Wrong number of segments 问题的解决 【踩坑记录】
本文记录了微信小程序向ThinkPHP后端发送请求时出现"Wrong number of segments"错误的解决方法。问题原因是小程序请求header中的token变量名写错,导致token未正确传递至后端。作者提供了详细的检查步骤和建议,包括验证URL路径、参数规范和路由配置的匹配,以确保请求能正确发送和处理。
|
开发框架 移动开发 JSON
利用微信公众号实现商品的展示和支付(1)
利用微信公众号实现商品的展示和支付(1)