[ EasyWechat 4.1 文档 ] 微信支付——扫码支付
模式一:先生成产品二维码,扫码下单后支付
{warning} 请务必先熟悉流程:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
生成产品二维码内容
$content = $app->scheme($productId); // $productId 为你的产品/商品ID,用于回调时带回,自己识别即可
//结果示例:weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
将 $content
生成二维码,SDK 并不内置二维码生成库,使用你熟悉的工具创建二维码即可,比如 PHP 部分有以下工具可以选择:
处理回调
当用户扫码时,你的回调接口会收到一个通知,调用统一下单接口创建订单后返回 prepay_id
,你可以使用下面的代码处理扫码通知:
// 扫码支付通知接收第三个参数 `$alert`,如果触发该函数,会返回“业务错误”到微信服务器,触发 `$fail` 则返回“通信错误”
$response = $app->handleScannedNotify(function ($message, $fail, $alert) use ($app) {
// 如:$alert('商品已售空');
// 如业务流程正常,则要调用“统一下单”接口,并返回 prepay_id 字符串,代码如下
$result = $app->order->unify([
'trade_type' => 'NATIVE',
'product_id' => $message['product_id'], // $message['product_id'] 则为生成二维码时的产品 ID
// ...
]);
return $result['prepay_id'];
});
$response->send();
用户在手机上付完钱以后,你会再收到付款结果通知,这时候请参考:处理微信支付通知 更新您的订单状态。
模式二:先下单,生成订单后创建二维码
{warning} 请务必先熟悉流程:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5
根据用户选购的商品生成订单
调用统一下单接口创建订单:
$result = $app->order->unify([
'trade_type' => 'NATIVE',
'product_id' => $message['product_id'], // $message['product_id'] 则为生成二维码时的产品 ID
// ...
]);
生成二维码
{info} 版本 4.1.7+ 支持
从上一步得到的 $result['code_url']
得到二维码内容:
将 $result['code_url']
生成二维码图片向用户展示即可扫码,生成工具上面自己找一下即可。 SDK 不内置
支付通知
这种方式的通知就只有付款结果通知了,这时候请参考:处理微信支付通知 更新您的订单状态。