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

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

php对接微信支付-详细教学_第1张图片php对接微信支付-详细教学_第2张图片

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

证书下载实例代码>或者使用[微信支付商户平台证书].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

使用>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"
	}
}

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

请求方式: POST

请求参数

参数名 变量 类型[长度限制] 必填 描述
应用ID appid string[1,32] body由微信生成的应用ID,全局唯一。请求基础下单接口时请注意APPID的应用属性,例如公众号场景下,需使用应用属性为公众号的APPID`` 示例值:wxd678efh567hg6787
直连商户号 mchid string[1,32] body直连商户的商户号,由微信支付生成并下发。`` 示例值:1230000109
商品描述 description string[1,127] body商品描述`` 示例值:Image形象店-深圳腾大-QQ公仔
商户订单号 out_trade_no string[6,32] body商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一`` 示例值:1217752501201407033233368018
交易结束时间 time_expire string[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
附加数据 attach string[1,128] body附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。`` 示例值:自定义数据
通知地址 notify_url string[1,256] body通知URL必须为直接可访问的URL,不允许携带查询串,要求必须为https地址。格式:URL 示例值:https://www.weixin.qq.com/wxpay/pay.php
订单优惠标记 goods_tag string[1,32] body订单优惠标记`` 示例值:WXG
电子发票入口开放标识 support_fapiao boolean body传入true时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效。true:是false:否`` 示例值:true
**+**订单金额 amount object body订单金额信息
**+**优惠功能 detail object body优惠功能
**+**场景信息 scene_info object body支付场景描述
**+**结算信息 settle_info object body结算信息

返回参数

参数名 变量 类型[长度限制] 必填 描述
二维码链接 code_url string[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"
	}
}

请求参数

参数名 变量 类型[长度限制] 必填 描述
应用ID appid string[1,32] body由微信生成的应用ID,全局唯一。请求基础下单接口时请注意APPID的应用属性,例如公众号场景下,需使用应用属性为公众号的服务号APPID`` 示例值:wxd678efh567hg6787
直连商户号 mchid string[1,32] body直连商户的商户号,由微信支付生成并下发。`` 示例值:1230000109
商品描述 description string[1,127] body商品描述`` 示例值:Image形象店-深圳腾大-QQ公仔
商户订单号 out_trade_no string[6,32] body商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一`` 示例值:1217752501201407033233368018
交易结束时间 time_expire string[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
附加数据 attach string[1,128] body附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。`` 示例值:自定义数据
通知地址 notify_url string[1,256] body异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
公网域名必须为https,如果是走专线接入,使用专线NAT IP或者私有回调域名可使用http`` 示例值:https://www.weixin.qq.com/wxpay/pay.php
订单优惠标记 goods_tag string[1,32] body订单优惠标记`` 示例值:WXG
电子发票入口开放标识 support_fapiao boolean body传入true时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效。true:是false:否`` 示例值:true
**+**订单金额 amount object body订单金额信息
**+**支付者 payer object body支付者信息
**+**优惠功能 detail object body优惠功能
**+**场景信息 scene_info object body支付场景描述
**+**结算信息 settle_info object body结算信息

返回参数

参数名 变量 类型[长度限制] 必填 描述
预支付交易会话标识 prepay_id string[1,64] 预支付交易会话标识。用于后续接口调用中使用,该值有效期为2小时`` 示例值:wx201410272009395522657a690389285100

你可能感兴趣的:(PHP,php,微信,android)