PHP对接微信支付的完整代码示例
在代码中,需要引入相关的SDK文件,包括WxPay.Api.php、WxPay.JsApiPay.php、WxPay.NativePay.php等。需要注意的是,在使用这些代码之前,需要先进行相关的配置和准备工作,包括在微信支付商户平台注册并获取到相关的配置信息,以及引入相关的SDK文件等。在使用这些函数之前,需要先进行配置信息的设置,包括AppID、商户ID、商户密钥等必要的参数。这是对接微信支
·
以下是一个使用PHP对接微信支付的完整代码示例:
<?php
// 引入SDK文件
require_once 'wechatpay/lib/WxPay.Api.php';
require_once 'wechatpay/example/WxPay.JsApiPay.php';
require_once 'wechatpay/example/WxPay.NativePay.php';
// 配置信息
$appId = '你的AppID';
$appSecret = '你的AppSecret';
$merchantId = '你的商户ID';
$merchantKey = '你的商户密钥';
// 统一下单
function unifiedOrder($params)
{
$config = new WxPayConfig($params['appid'], $params['mch_id'], $params['key']);
$order = new WxPayUnifiedOrder($config);
$order->setBody($params['body']);
$order->setOutTradeNo($params['out_trade_no']);
$order->setTotalFee($params['total_fee']);
$order->setNotifyUrl($params['notify_url']);
$order->setTradeType('JSAPI'); // 支付类型,这里选择JSAPI支付
$order->setOpenId($params['open_id']); // 用户的openid,用于标记该笔订单是用户在哪个微信公众号下的订单
$order->setTradeName($params['trade_name']); // 公众号的名称,用于显示在微信支付订单的备注中
$order->setSellerPhone($params['seller_phone']); // 卖家的手机号,用于接收微信支付结果通知的手机号,若没有,可以不填。
$order->setReceiverInfo($params['receiver_info']); // 接收方信息,包括账号、户名、开户行等,如果不需要,可以不填。
$order->setFeeType('CNY'); // 支付货币类型,这里选择人民币
$order->setTransactionId($params['transaction_id']); // 微信支付订单号,如果为空,则会自动生成订单号
$order->setUseClientConfig(false); // 是否使用客户端配置文件,默认使用,如果不需要,可以设置为false
$result = $order->统一下单();
return $result;
}
// 查询订单
function queryOrder($params)
{
$config = new WxPayConfig($params['appid'], $params['mch_id'], $params['key']);
$order = new WxPayOrderQuery($config);
$order->setOutTradeNo($params['out_trade_no']); // 商户订单号,需保持唯一性。是商户网站唯一的一笔订单的编号。最大长度为50个字符。如普通的订单号(out_trade_no)或微信支付订单号(transaction_id)均满足该字段。如果同时存在,优先使用微信支付订单号(transaction_id)。如果都不存在,需要重新生成。该字段的重复利用率较高,因此请谨慎使用相同的out_trade_no进行重复提交。该字段主要是为了解决同一单被重复提交的问题。如果同一单被重复提交多次,微信支付平台对于重复的请求返回的状态码是200,但是返回的数据内容是最后一次提交的数据。即商户是看不到多次提交的订单状态的。只有一次能看到。因此商户需要自己实现out_trade_no的生成规则以满足唯一性约束。保证生成的out_trade_no不会重复。
$result = $order->query();
return $result;
}
// 关闭订单
function closeOrder($params)
{
$config = new WxPayConfig($params['appid'], $params['mch_id'], $params['key']);
$order = new WxPayOrderClose($config);
$order->setOutTradeNo($params['out_trade_no']); // 商户订单号,需保持唯一性。是商户网站唯一的一笔订单的编号。最大长度为50个字符。如普通的订单号(out_trade_no)或微信支付订单号(transaction_id)均满足该字段。如果同时存在,优先使用微信支付订单号(transaction_id)。如果都不存在,需要重新生成。该字段的重复利用率较高,因此请谨慎使用相同的out_trade_no进行重复提交。该字段主要是为了解决同一单被重复提交的问题。如果同一单被重复提交多次,微信支付平台对于重复的请求返回的状态码是200,但是返回的数据内容是最后一次提交的数据。即商户是看不到多次提交的订单
$order->setTradeType('JSAPI'); // 支付类型,这里选择JSAPI支付
$order->setOpenId($params['open_id']); // 用户的openid,用于标记该笔订单是用户在哪个微信公众号下的订单
$order->setTradeName($params['trade_name']); // 公众号的名称,用于显示在微信支付订单的备注中
$order->setSellerPhone($params['seller_phone']); // 卖家的手机号,用于接收微信支付结果通知的手机号,若没有,可以不填。
$order->setReceiverInfo($params['receiver_info']); // 接收方信息,包括账号、户名、开户行等,如果不需要,可以不填。
$order->setFeeType('CNY'); // 支付货币类型,这里选择人民币
$order->setTransactionId($params['transaction_id']); // 微信支付订单号,如果为空,则会自动生成订单号
$order->setUseClientConfig(false); // 是否使用客户端配置文件,默认使用,如果不需要,可以设置为false
$result = $order->查询订单();
return $result;
}
// 关闭订单
function closeOrder($params)
{
$config = new WxPayConfig($params['appid'], $params['mch_id'], $params['key']);
$order = new WxPayCloseOrder($config);
$order->setOutTradeNo($params['out_trade_no']); // 商户订单号,需保持唯一性。是商户网站唯一的一笔订单的编号。最大长度为50个字符。如普通的订单号(out_trade_no)或微信支付订单号(transaction_id)均满足该字段。如果同时存在,优先使用微信支付订单号(transaction_id)。如果都不存在,需要重新生成。该字段的重复利用率较高,因此请谨慎使用相同的订单号进行多次关闭。
$result = $order->关闭订单();
return $result;
}
// 下载对账单
function downloadBill($params)
{
$config = new WxPayConfig($params['appid'], $params['mch_id'], $params['key']);
$bill = new WxPayDownloadBill($config);
$result = $bill->下载对账单();
return $result;
}
// 支付结果通知验证
function verifyNotification($params)
{
$config = new WxPayConfig($params['appid'], $params['mch_id'], $params['key']);
$notify = new WxPayNotify($config);
$result = $notify->验证通知();
return $result;
}
这是对接微信支付的完整代码示例,包括统一下单、查询订单、关闭订单、下载对账单和支付结果通知验证等功能。
在代码中,需要引入相关的SDK文件,包括WxPay.Api.php、WxPay.JsApiPay.php、WxPay.NativePay.php等。然后,根据不同的业务需求,调用相应的API接口进行操作。
以下是对上述代码的进一步解释:
unifiedOrder函数用于统一下单,需要传入订单的必要参数,包括订单号、订单金额、订单描述、订单接收方信息等。统一下单会返回预支付链接,用户点击后会自动跳转到微信支付页面进行支付。queryOrder函数用于查询订单状态,通过传入订单号或微信支付订单号来获取订单的详细信息。closeOrder函数用于关闭订单,当订单需要关闭时,可以调用该函数进行操作。downloadBill函数用于下载对账单,可以获取指定时间段内的交易记录和详细信息。verifyNotification函数用于验证支付结果通知是否合法,接收到微信支付结果通知后,使用该函数进行验证,确保通知的合法性和安全性。
在使用这些函数之前,需要先进行配置信息的设置,包括AppID、商户ID、商户密钥等必要的参数。同时,还需要根据具体的业务需求传入相应的订单信息和接收方信息等参数。
需要注意的是,在使用这些代码之前,需要先进行相关的配置和准备工作,包括在微信支付商户平台注册并获取到相关的配置信息,以及引入相关的SDK文件等。同时,还需要根据具体的业务需求进行相应的参数设置和数据交互。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)