返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP 实现微信支付 “商家转账到零钱”
  • 576
分享到

PHP 实现微信支付 “商家转账到零钱”

php微信http 2023-09-01 16:09:12 576人浏览 薄情痞子
摘要

目录 一、日常填坑:注意事项 二、代码示例 1.微信服务层 2.请求层 总结 一、日常填坑:注意事项 转账低于5毛会失败 转账金额需要自己取整一下,不然运气来了会出现以下问题 { "code":"PARAM_ERROR",

目录

一、日常填坑:注意事项

二、代码示例

1.微信服务层

2.请求层

总结


一、日常填坑:注意事项

转账低于5毛会失败

转账金额需要自己取整一下,不然运气来了会出现以下问题

  {       "code":"PARAM_ERROR",    "detail":{        "location":"body",        "value":7.000000000000001   // 微信金额除不尽出现的问题             },        "message":" 无法将 JSON 输入源“\/body\/                    total_amount”映射到目标字段“转账总金额”中,                    此字段需要一个合法的 64 位有符号整数"   }

二、代码示例

1.服务层

    const SSLCERT_PATH = '证书路径';    const SSLKEY_PATH  = '证书key路径';    const MCHID        = '商户号';    const APPID        = 'app_id';    const KEY          = 'key值';        public function transfer_batches($sOpenid, $nMoney)    {        // 付款到零钱方法url        $url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';        // 订单号        $sOrderId = '测试付款' . time();        // 转账备注 (微信用户会收到该备注)    $tRemark  = '测试付款' . $sOrderId;         // 转账金额:微信是分为单位 *100 转换                         $transfer_amount = $nMoney * 100;        // 转账接收列表设置        $transfer_detail_list = array([                'out_detail_no'   => $sOrderId,                  // 明细单号                'transfer_amount' => intval($transfer_amount),   // 转账总金额                 'transfer_remark' => $tRemark,                   // 单条转账备注                'openid'          => $sOpenid,                   // 收款方openid                // 'user_name'       => '张三',                // 转账金额 >= 2,000元,收款用户姓名必填   ],        );        // 请求参数设置        $params = [                    // 请求参数设置            'appid'                => self::APPID,                 // 文档顶部定义            'out_batch_no'         => $sOrderId,                   // 商家批次单号            'batch_name'           => 'x年x月转账',                 // 转账的名称             'batch_remark'         => 'x年x月转账',                 // 转账的备注            'total_amount'         => intval($transfer_amount),    // 转账总金额            'total_num'            => 1,                           // 转账总笔数            'transfer_detail_list' => $transfer_detail_list,       // 转账接收列表        ];        // 获取token        $token        = $this->getToken($params);        // 发送请求                $res          = $this->https_request($url, json_encode($params), $token);        // 反馈数组化          $resArr       = json_decode($res, true);               dump($resArr);        // 存储转账成功信息或别的操作        // 成功实例返回值        {          "out_batch_no": "plfk2020042013",                        // wx唯一识别号          "batch_id": "1030000071100999991182020050700019480001",  // 商家批次单号          "create_time": "2015-05-20T13:29:35.120+08:00"           // 创建时间         }    }        function https_request($url, $data = null, $token)    {        $curl = curl_init();        curl_setopt($curl, CURLOPT_URL, (string)$url);        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);        if (!empty($data)) {            curl_setopt($curl, CURLOPT_POST, 1);            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);        }        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);        // 添加请求头        $headers =     [            'Authorization:WECHATPAY2-SHA256-RSA2048 ' . $token,            'Accept: application/json',            'Content-Type: application/json; charset=utf-8',            'User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',        ];        if (!empty($headers)) {            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);        }        $output = curl_exec($curl);        curl_close($curl);        return $output;    }        public function getToken($pars)    {        $url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';        $http_method = 'POST';      // 请求方法(GET,POST,PUT)        $timestamp   = time();      // 请求时间戳        $url_parts   = parse_url($url);                         // 获取请求的绝对URL        $nonce       = $timestamp . rand('10000', '99999');     // 请求随机串        $body        = json_encode((object)$pars);              // 请求报文主体        $stream_opts = [            "ssl" => [                "verify_peer"          => false,                "verify_peer_name"     => false,            ]        ];        // 证书路径信息:文档顶部定义        $apiclient_cert_path = self::SSLCERT_PATH;        $apiclient_key_path  = self::SSLKEY_PATH;        $apiclient_cert_arr = openssl_x509_parse(file_get_contents($apiclient_cert_path, false, stream_context_create($stream_opts)));        // 证书序列号        $serial_no          = $apiclient_cert_arr['serialNumberHex'];        // 密钥                   $mch_private_key    = file_get_contents($apiclient_key_path, false, stream_context_create($stream_opts));        // 商户id:文档顶部定义   $merchant_id        = self::MCHID;                  $canonical_url      = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : ""));        $message            = $Http_method . "\n" .            $canonical_url . "\n" .            $timestamp . "\n" .            $nonce . "\n" .            $body . "\n";        openssl_sign($message, $raw_sign, $mch_private_key, 'sha256WithRSAEncryption');        // 签名        $sign   = base64_encode($raw_sign);        $schema = 'WECHATPAY2-SHA256-RSA2048';        $token  = sprintf('mchid="%s",nonce_str="%s",timestamp="%d",serial_no="%s",signature="%s"', $merchant_id, $nonce, $timestamp, $serial_no, $sign);         // 微信返回token        return $token;    }

2.控制层

    public function onTransferBatches($openid, $nMoney)    {        // 实例化服务层        $serviceTransfer = new serviceTransfer();        // 带参请求:sOpenid(收款方openid)   nMoney(转账金额)        $result          = $serviceTransfer->transfer_batches($openid, $nMoney);        return $result;    }

来源地址:https://blog.csdn.net/arlene12345/article/details/127906415

--结束END--

本文标题: PHP 实现微信支付 “商家转账到零钱”

本文链接: https://lsjlt.com/news/389004.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP 实现微信支付 “商家转账到零钱”
    目录 一、日常填坑:注意事项 二、代码示例 1.微信服务层 2.请求层 总结 一、日常填坑:注意事项 转账低于5毛会失败 转账金额需要自己取整一下,不然运气来了会出现以下问题 { "code":"PARAM_ERROR",...
    99+
    2023-09-01
    php 微信 http
  • 微信支付 商家转账到零钱 Api 过程
    企业付款到零钱,已经限额500以内,完全不够用 商家转账到零钱,限额20000单笔,需要申请要按不通过原因修改多试几次 准备前提: 1,平台证书,商家证书,一共2个; 2,设置APIv3密钥; 正文: 商家证书可直接申请下载: https:...
    99+
    2023-09-03
    微信 php
  • PHP微信支付 “商家转账到零钱”一文概述
    PHP微信支付 商家转账到零钱 这里有个坑 转账低于5毛会失败 转账金额需要自己取整一下,微信官方金额是 分 为单位,换算成 元 时可能会除不尽 { "code":"PARAM_ERROR...
    99+
    2023-09-12
    php 微信 开发语言
  • 最新PHP对接微信支付,发起商家转账API,商家转账到零钱
    ...
    99+
    2023-09-26
    ThinkPHP5.0 php 微信
  • php 商户转账到微信零钱
    首先在微信商户开通此功能(开通可能不易) 拿到  商户号   证书 还有证书序列号   关联商户的appid(如果是app在开放平台申请appid小程序的话那就是小程序的appid)   注意一定要关联appid    在微信商户号里   ...
    99+
    2023-09-01
    微信 php 小程序
  • PHP开发微信商家转账到零钱接口
    仔细阅读了微信接口文档并且参考网上的案例,完成了商家转账到零钱的接口开发,目前已在使用中 下面是完整代码: public static function transfer($withdrawApply,$userAuth,$c...
    99+
    2023-09-01
    php 微信
  • PHP实现微信提现V3版本2022-5更新接口:商家转账到零钱
    微信官方又更新了接口。。。 V3版本的微信商家转账到零钱的接口---俗称提现接口 注意事项 一:开通条件:需满足入驻满90天,连续正常交易30天,保持正常健康交易。 二:分为页面发起和api接口操作,均需要手动开启才可。 三:需要...
    99+
    2023-09-04
    php
  • PHP 实现支付宝 “(单笔转账)转账到支付宝账号”
    目录 前言 一、服务层 二、控制层 1.控制层 2.接口返回参数实例 前言 单笔转账接口 | 网页&移动应用 准备: 应用的证书(证书申请和配置可以参考我另一篇分享“支付宝 ‘应用证书配置’ ”) 配置证书后注意公共参数中 私钥值 是c...
    99+
    2023-09-01
    php mysql
  • PHP实现微信支付流程(Native支付)
    最近项目需要做微信支付的功能,想着把流程以及遇到的坑记录下来 1.到微信商户平台中去开通Native支付(产品中心-Native支付-申请开通) 2.微信商户平台中下载证书以及设置api密钥(账户中心-api安全),查看指引中很详细的说...
    99+
    2023-08-31
    php 微信 Powered by 金山文档
  • PHP 实现微信支付 JSAPI
    目录 一、首先我们来填个坑 1:支付验签失败 二、代码示例 1.请求参数配置 2.统一下单API 3.MakeSign 签名 4.ToXml 数组参数转xml 5.postXmlCurl 发送请求 6.FromXml 结果xml参数转数组 ...
    99+
    2023-09-12
    php 微信 微信公众平台
  • PHP 实现微信支付 “请求单次分账”
    目录 一、小总结 二、服务层 一、小总结 分账 调用分账的订单必须是请求下单中以下参数等于  Y 的订单并且在下单接口中该参数也等于 Y 才能使用分账(可以参考一下PHP JSAPI调起微信支付API_一本曾经的博客-CSDN博客) "p...
    99+
    2023-09-01
    python 开发语言
  • php实现微信支付功能
    一、生成预支付订单并获取预支付ID(prepay_id): ...
    99+
    2023-09-11
    php
  • PHP 单笔转账到支付宝账户,支付宝公钥证书实现版本
    支付宝某些业务只能使用公钥证书方式来验签 如:即使转账      红包等 笔者就要实现这样一个功能,【单笔转账到支付宝账户】,采用支付宝公钥证书签名来实现。 话不多说,流程先走起 第一步:下载支付宝秘钥生成器 由于我们使用的是php鱼...
    99+
    2023-09-03
    服务器 java 运维
  • 如何用PHP实现微信支付对账单查询
    随着移动支付的流行,微信支付成为了一个不可忽视的支付方式。作为开发人员,在使用微信支付时,对账单查询是必不可少的环节。本文将介绍如何利用PHP语言实现微信支付对账单的查询。获取微信支付账号信息在使用微信支付前,首先需要配置微信支付账号信息。...
    99+
    2023-05-14
    PHP 微信支付 对账单查询
  • PHP 实现微信Native扫码支付
    目录 一、安装微信SDK 二、准备请求资料 三、引入和定义 四、Native下单 五、Native调起支付 六、Native异步通知 一、安装微信SDK composer require wechatpay/wech...
    99+
    2023-09-25
    开发语言 php 微信 thinkphp
  • php实现微信jsapi支付(v2版本)
    统一下单 public function unifiedOrder($product_type = 1, $openid = '', $phone = '') { ...
    99+
    2023-10-09
    php 微信 开发语言
  • PHP实现 APP端微信支付功能
    一丶 PHP后台生成预支付交易单,返回正确的预支付交易回话标识后 调起支付,根据文档拼接微信需要的参数,这里将需要的几个方法进行示例; 传输给微信的参数要组装成xml格式发送,传如参数数组! publ...
    99+
    2023-10-18
    php 微信 android
  • PHP 实现汇聚adapay调用微信支付
    目录 前言 一、下载SDK 二、配置 三、实际操作 1.引入SDK 2.代码参考 四、回调 总结 前言 先整理一下调起微信支付的流程: Adapay成功发起支付请求 -> 将请求成功中的 pay_info 返回给前端-> 前端使用 pay...
    99+
    2023-09-04
    php thinkphp 微信
  • PHP微信开发:如何实现JSAPI支付
    随着移动互联网的发展,微信已经成为了人们生活中不可或缺的一部分,越来越多的商家选择在微信平台上开展业务。实现微信支付功能对于商家来说是非常必要的。本文将介绍如何使用PHP实现JSAPI支付。首先,我们需要了解什么是JSAPI支付。JSAPI...
    99+
    2023-05-14
    实现 PHP微信开发 JSAPI支付
  • PHP实现小程序微信支付(v3版本)
    PS:本篇文章是PHP对小程序进行微信支付v3版本的实现,仅用于对支付流程的了解,具体使用方面需要大家自行调整 小程序端JS代码: getPrepayID(){ var that = th...
    99+
    2023-09-17
    php 小程序 微信
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作