• 扫码支付
    • 模式一:先生成产品二维码,扫码下单后支付
      • 生成产品二维码内容
      • 处理回调
    • 模式二:先下单,生成订单后创建二维码
      • 根据用户选购的商品生成订单
      • 生成二维码
      • 支付通知

    扫码支付

    模式一:先生成产品二维码,扫码下单后支付

    {warning} 请务必先熟悉流程:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4

    生成产品二维码内容

    1. $content = $app->scheme($productId); // $productId 为你的产品/商品ID,用于回调时带回,自己识别即可
    2. //结果示例:weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX

    $content 生成二维码,SDK 并不内置二维码生成库,使用你熟悉的工具创建二维码即可,比如 PHP 部分有以下工具可以选择:

    • https://github.com/endroid/qr-code
    • https://github.com/SimpleSoftwareIO/simple-qrcode
    • https://github.com/aferrandini/PHPQRCode

    处理回调

    当用户扫码时,你的回调接口会收到一个通知,调用统一下单接口创建订单后返回 prepay_id,你可以使用下面的代码处理扫码通知:

    1. // 扫码支付通知接收第三个参数 `$alert`,如果触发该函数,会返回“业务错误”到微信服务器,触发 `$fail` 则返回“通信错误”
    2. $response = $app->handleScannedNotify(function ($message, $fail, $alert) use ($app) {
    3. // 如:$alert('商品已售空');
    4. // 如业务流程正常,则要调用“统一下单”接口,并返回 prepay_id 字符串,代码如下
    5. $result = $app->order->unify([
    6. 'trade_type' => 'NATIVE',
    7. 'product_id' => $message['product_id'], // $message['product_id'] 则为生成二维码时的产品 ID
    8. // ...
    9. ]);
    10. return $result['prepay_id'];
    11. });
    12. $response->send();

    用户在手机上付完钱以后,你会再收到付款结果通知,这时候请参考:处理微信支付通知 更新您的订单状态。

    模式二:先下单,生成订单后创建二维码

    {warning} 请务必先熟悉流程:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5

    根据用户选购的商品生成订单

    调用统一下单接口创建订单:

    1. $result = $app->order->unify([
    2. 'trade_type' => 'NATIVE',
    3. 'product_id' => $message['product_id'], // $message['product_id'] 则为生成二维码时的产品 ID
    4. // ...
    5. ]);

    生成二维码

    {info} 版本 4.1.7+ 支持

    从上一步得到的 $result['code_url'] 得到二维码内容:

    $result['code_url'] 生成二维码图片向用户展示即可扫码,生成工具上面自己找一下即可。 SDK 不内置

    支付通知

    这种方式的通知就只有付款结果通知了,这时候请参考:处理微信支付通知 更新您的订单状态。