# 微信支付 - 掃碼支付 響應訂單(模式二)
掃碼支付(模式二)中,當用戶掃碼之后,微信服務器將攜帶 **訂單基本參數** 請求 Callback 地址(Callback 地址請在公眾號后臺 -> 微信支付 -> 開發配置中設置),開發者需要根據參數中的 product_id 在數據庫中查找并返回該訂單信息。
本次請求中,將攜帶以下參數:
- appid
- openid
- mch_id
- is_subscribe
- nonce_str
- product_id
- sign
請求 && 響應對象
```php
use Thenbsp\Wechat\Payment\QrcodeRequest;
use Thenbsp\Wechat\Payment\QrcodeResponse;
$request = new QrcodeRequest();
$response = new QrcodeResponse('Wechat Object', 'Order Options');
```
接收到請求后,需要先判斷本次請深求有否有效,因為是服務器對服務器之間的請求,調試請使用日志。
```php
if( !$request->isValid() ) {
QrcodeResponse::fail('Invalid Request');
}
```
根據 Request 中的 product_id 去數據庫中查找并返回訂單信息。
```php
$options = array(
'body' => 'iphone 6 plus',
'total_fee' => 1,
'out_trade_no' => date('YmdHis').mt_rand(10000, 99999),
'notify_url' => 'Your notify url',
'trade_type' => 'NATIVE'
);
$response = new QrcodeResponse($wechat, $options);
$response->send();
```
返回錯誤消息
當查找過程中,如果發生異常需要提示用戶,可以使用 fail 方法返回錯誤消息,比如訂單沒有被找到:
```php
QrcodeResponse::fail('對不起,沒有找到該訂單:'. $request['product_id']);
```