• php对接微信支付-详细教学


    登录微信商户>开通对应功能

    在这里插入图片描述

    JSAPI支付>(微信收款-网页-小程序-PC端web)

    官方文档:https://pay.weixin.qq.com/docs/merchant/products/ sapi-payment/preparation.html

    1.设置你得API网址请求支付的链接

    下载官网的api实例

    推荐使用 PHP 包管理工具 Composer 安装 SDK:

    composer require wechatpay/wechatpay
    
    • 1

    证书下载实例代码>或者使用[微信支付商户平台证书].exe程序配置

    微信支付商户平台证书>https://pay.weixin.qq.com/docs/merchant/development/development-preparation/download-configure-merchant-certificates.html

    
    
    require_once('vendor/autoload.php');
    
    use WeChatPay\Builder;
    use WeChatPay\Crypto\Rsa;
    use WeChatPay\Util\PemUtil;
    
    // 设置参数
    
    // 商户号
    $merchantId = '190000****';
    
    // 从本地文件中加载「商户API私钥」,「商户API私钥」会用来生成请求的签名
    $merchantPrivateKeyFilePath = 'file:///path/to/merchant/apiclient_key.pem';
    $merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);
    
    // 「商户API证书」的「证书序列号」
    $merchantCertificateSerial = '3775B6A45ACD588826D15E583A95F5DD********';
    
    // 从本地文件中加载「微信支付平台证书」,用来验证微信支付应答的签名
    $platformCertificateFilePath = 'file:///path/to/wechatpay/cert.pem';
    $platformPublicKeyInstance = Rsa::from($platformCertificateFilePath, Rsa::KEY_TYPE_PUBLIC);
    
    // 从「微信支付平台证书」中获取「证书序列号」
    $platformCertificateSerial = PemUtil::parseCertificateSerialNo($platformCertificateFilePath);
    
    // 构造一个 APIv3 客户端实例
    $instance = Builder::factory([
        'mchid'      => $merchantId,
        'serial'     => $merchantCertificateSerial,
        'privateKey' => $merchantPrivateKeyInstance,
        'certs'      => [
            $platformCertificateSerial => $platformPublicKeyInstance,
        ],
    ]);
    
    // 发送请求
    $resp = $instance->chain('v3/certificates')->get(
        ['debug' => true] // 调试模式,https://docs.guzzlephp.org/en/stable/request-options.html#debug
    );
    echo $resp->getBody(), PHP_EOL
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    使用>https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_1.shtml

    web二维码

    这里代码对应在设置商户的开发配置的url请求

    {
    	"mchid": "1900006XXX",
    	"out_trade_no": "native12177525012014070332333",
    	"appid": "wxdace645e0bc2cXXX",
    	"description": "Image形象店-深圳腾大-QQ公仔",
    	"notify_url": "https://weixin.qq.com/",
    	"amount": {
    		"total": 1,
    		"currency": "CNY"
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    请求URL: https://api.mch.weixin.qq.com/v3/pay/transactions/native

    请求方式: POST

    请求参数

    参数名变量类型[长度限制]必填描述
    应用IDappidstring[1,32]body由微信生成的应用ID,全局唯一。请求基础下单接口时请注意APPID的应用属性,例如公众号场景下,需使用应用属性为公众号的APPID`` 示例值:wxd678efh567hg6787
    直连商户号mchidstring[1,32]body直连商户的商户号,由微信支付生成并下发。`` 示例值:1230000109
    商品描述descriptionstring[1,127]body商品描述`` 示例值:Image形象店-深圳腾大-QQ公仔
    商户订单号out_trade_nostring[6,32]body商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一`` 示例值:1217752501201407033233368018
    交易结束时间time_expirestring[1,64]body订单失效时间,遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。`` 示例值:2018-06-08T10:34:56+08:00
    附加数据attachstring[1,128]body附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。`` 示例值:自定义数据
    通知地址notify_urlstring[1,256]body通知URL必须为直接可访问的URL,不允许携带查询串,要求必须为https地址。格式:URL 示例值:https://www.weixin.qq.com/wxpay/pay.php
    订单优惠标记goods_tagstring[1,32]body订单优惠标记`` 示例值:WXG
    电子发票入口开放标识support_fapiaobooleanbody传入true时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效。true:是false:否`` 示例值:true
    **+**订单金额amountobjectbody订单金额信息
    **+**优惠功能detailobjectbody优惠功能
    **+**场景信息scene_infoobjectbody支付场景描述
    **+**结算信息settle_infoobjectbody结算信息

    返回参数

    参数名变量类型[长度限制]必填描述
    二维码链接code_urlstring[1,512]此URL用于生成支付二维码,然后提供给用户扫码支付。**注意:code_url并非固定值,使用时按照URL格式转成二维码即可。** 示例值:weixin://wxpay/bizpayurl/up?pr=NwY5Mz9&groupid=00

    小程序

    请求URL: https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi

    请求方式: POST

    
    {
    	"mchid": "1900006XXX",
    	"out_trade_no": "1217752501201407033233368318",
    	"appid": "wxdace645e0bc2cXXX",
    	"description": "Image形象店-深圳腾大-QQ公仔",
    	"notify_url": "https://www.weixin.qq.com/wxpay/pay.php",
    	"amount": {
    		"total": 1,
    		"currency": "CNY"
    	},
    	"payer": {
    		"openid": "o4GgauInH_RCEdvrrNGrntXDuXXX"
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    请求参数

    参数名变量类型[长度限制]必填描述
    应用IDappidstring[1,32]body由微信生成的应用ID,全局唯一。请求基础下单接口时请注意APPID的应用属性,例如公众号场景下,需使用应用属性为公众号的服务号APPID`` 示例值:wxd678efh567hg6787
    直连商户号mchidstring[1,32]body直连商户的商户号,由微信支付生成并下发。`` 示例值:1230000109
    商品描述descriptionstring[1,127]body商品描述`` 示例值:Image形象店-深圳腾大-QQ公仔
    商户订单号out_trade_nostring[6,32]body商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一`` 示例值:1217752501201407033233368018
    交易结束时间time_expirestring[1,64]body订单失效时间,遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。`` 示例值:2018-06-08T10:34:56+08:00
    附加数据attachstring[1,128]body附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。`` 示例值:自定义数据
    通知地址notify_urlstring[1,256]body异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
    公网域名必须为https,如果是走专线接入,使用专线NAT IP或者私有回调域名可使用http`` 示例值:https://www.weixin.qq.com/wxpay/pay.php
    订单优惠标记goods_tagstring[1,32]body订单优惠标记`` 示例值:WXG
    电子发票入口开放标识support_fapiaobooleanbody传入true时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效。true:是false:否`` 示例值:true
    **+**订单金额amountobjectbody订单金额信息
    **+**支付者payerobjectbody支付者信息
    **+**优惠功能detailobjectbody优惠功能
    **+**场景信息scene_infoobjectbody支付场景描述
    **+**结算信息settle_infoobjectbody结算信息

    返回参数

    参数名变量类型[长度限制]必填描述
    预支付交易会话标识prepay_idstring[1,64]预支付交易会话标识。用于后续接口调用中使用,该值有效期为2小时`` 示例值:wx201410272009395522657a690389285100
  • 相关阅读:
    通讯录的实现(初版)
    Apache SeaTunnel On SparkEngine 集成CDP
    iNFTnews | 从5G到6G:创新与颠覆的竞赛
    java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
    数字孪生云渲染整体架构设计
    数据结构与算法4-链表
    MyBatis-Plus深入 —— 条件构造器与插件管理
    Android打包脚本和上传apk托管平台
    HCIA回顾笔记
    webpack打包之sourceMap
  • 原文地址:https://blog.csdn.net/qq_33131171/article/details/133969033