YII2框架使用easyWeChat进行微信 App支付

郑桐
2023-12-01

具体的引入安装不多说了,可以去官方文档上看

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存入日志
 类似资料: