具体的引入安装不多说了,可以去官方文档上看
easyWeChat微信支付要比调用微信原生的支付方便很多,省了很多关于随机字符串,生成签名,二次验证签名等步骤
首先在控制器开始引入方式
use EasyWeChat\Factory;
下单调用
// 配置信息
$config = [
// 这些信息去微信支付上申请
'app_id' => $appId,
'mch_id' => $mchId,
'key' => $key,
// 回调通知地址
'notify_url' => $notifyUrl,
];
$app = Factory::payment($config);
// 调用的方法
$result = $app->order->unify([
// 商品名称
'body' => $body,
// 订单编号(自己生成的)
'out_trade_no' => $outTradeNo,
// 金额,微信的金额是分为单位。所以如果是0.01,要乘100,处理为1
'total_fee' => $totalFee,
// 自定义的回调通知处理地址,本地地址不可用,必须为线上地址
'notify_url' => $notifyUrl,
// 支付方式(比如:APP,JAPI)
'trade_type' => $tradeType,
// 自己的openid
'openid' => $openid,
]);
$result返回支付的信息,可以通过返回的支付信息去处理相关业务
也可以根据自己的订单号去查询支付的信息
$app->order->queryByOutTradeNumber($outTradeNo);
回调处理
在支付成功之后,微信会以post方式通知自定义的地址,并下发xml格式的信息
// 首先获取返回的xml
$xml= file_get_contents("php://input");
// 并将xml转化为数组
$result = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
// 处理自己的业务
if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') {
// 根据这两种状态处理自己的业务信息
}else{
// 返回相关报错信息
}
// 也可以将返回的xml格式处理为json存入日志