php对接微信支付"/>
php对接微信支付
登录微信商户>开通对应功能
JSAPI支付>(微信收款-网页-小程序-PC端web)
官方文档:/ sapi-payment/preparation.html
1.设置你得API网址请求支付的链接
下载官网的api实例
推荐使用 PHP 包管理工具 Composer 安装 SDK:
composer require wechatpay/wechatpay
证书下载实例代码>或者使用[微信支付商户平台证书].exe程序配置
微信支付商户平台证书>.html
<?phprequire_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] // 调试模式,.html#debug
);
echo $resp->getBody(), PHP_EOL
使用>.shtml
web二维码
这里代码对应在设置商户的开发配置的url请求
{"mchid": "1900006XXX","out_trade_no": "native12177525012014070332333","appid": "wxdace645e0bc2cXXX","description": "Image形象店-深圳腾大-QQ公仔","notify_url": "/","amount": {"total": 1,"currency": "CNY"}
}
请求URL:
请求方式: 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 示例值:.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:
请求方式: POST
{"mchid": "1900006XXX","out_trade_no": "1217752501201407033233368318","appid": "wxdace645e0bc2cXXX","description": "Image形象店-深圳腾大-QQ公仔","notify_url": ".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`` 示例值:.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对接微信支付
发布评论