### Native 扫码支付(主扫) API
* * *
扫码请求步骤:
1. 构建请求参数
2. POST 参数到请求地址
3. 根据返回内容展示二维码
4. 用户支付成功后接收异步通知
* * *
请求地址:[https://mch.xiaoweijufu.com/wxpay/native](https://mch.xiaoweijufu.com/wxpay/native)
请求参数:
| 字段名称 | 字段类型 | 必填参数 | 说明 |
| --- | --- | --- | --- |
| mchid | string(16) | Y | 商户号 |
| total\_fee | int(16) | Y | 金额。单位:分 |
| out\_trade\_no | string(32) | Y | 用户端自主生成的订单号 |
| product\_id | int(16) | Y | 购买商品编号 |
| body | string(128) | N | 订单内容 |
| title | string(32) | N | 订单标题,非必填 |
| attach | string(127) | N | 用户自定义数据,在notify的时候会原样返回 |
| notify\_url | string(255) | N | 接收微信支付异步通知的回调地址。必须为可直接访问的URL,不能带参数、session验证、csrf验证。留空则不通知 |
| access\_key | string(32) | Y | 用户对应access\_key |
| sign | string(32) | Y | 数据签名 详见[签名算法](http://help.xiaoweijufu.com/1368912) |
请求返回:
| 字段名称 | 字段类型 | 必填参数 | 说明 |
| --- | --- | --- | --- |
| order\_no | string(16) | Y | 小微聚付 平台订单号 |
| out\_trade\_no | string(16) | Y | 用户生成的订单号原样返回 |
| qrcode | string(128) | Y | 二维码图片地址 |
| code\_url | string(64) | Y | 可将该参数生成二维码展示出来进行扫码支付 |
* * *
扫码支付演示代码:
~~~
<?php
class PayapiHelper {
private $url = 'https://mch.xiaoweijufu.com/wxpay/native';
private $access_key = 'xxxxxx'; // 填写通信Key
private $secret_key = 'xxxxxx'; // 填写通信secret
public function __construct($data=null) {
$this->data = $data;
}
public function pay(){
$data = $this->data;
$data['access_key'] = $this->access_key;
$data['sign'] = $this->sign($data);
return $this->post($data, $this->url);
}
public function post($data, $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$rst = curl_exec($ch);
curl_close($ch);
return $rst;
}
// 签名方法
private function sign(array $attributes) {
ksort($attributes);
$sign = strtoupper(md5(urldecode(http_build_query($attributes)).'&key='.$this->secret_key));
return $sign;
}
}
$order = [
'mchid' => 'xxxxx', //商户号
'total_fee' => 120,
'title' => 'test', // 订单标题
'body' => 'test', // 订单说明
'product_id' => '1234567890',
'out_trade_no' => time(), // 订单号
];
$payapi = new PayapiHelper($order);
$rst = $payapi->pay();
print_r($rst);
?>
~~~