【统一下单+查询订单+支付结果通知】
商品信息(金额+订单号….)+商户信息(appid+mch_id…)
返回字符串(phpqrcode转成二维码)
用户支付(微信端验证链接有效性+返回支付授权|用户支付/取消)
商户后台系统先调用微信支付的统一下单接口,微信后台系统返回链接参数code_url,商户后台系统将code_url值生成二维码图片,用户使用微信客户端扫码后发起支付。注意:code_url有效期为2小时,过期后扫码不能再发起支付。
tip:支付宝二维码是支付宝自己生成的|微信单位是分、支付宝单位是元;字符串前加CDATA
tip:$key:商户支付密钥,https://pay.weixin.qq.com/index.php/account/api_cert
tip:$mch_id:商户号:商户平台 -》账户中心 -》 个人信息 -》登录账号
tip:证书文件:商户平台 -》 账户中心 -》API安全
【模式一】
二维码永久有效,针对某一个商品生成固定二维码,多个人可以同时扫一个码。生成二维码时不包含订单信息,扫码后生成订单信息。
ksort($data);
$data['key']=$key;
$str = http_build_query($data);
$res = strtoupper(md5(urldecode($str)));
$code_url= "weixin://wxpay/bizpayurl?".http_build_query($res);
QRcode::png($code_url);
【模式二】
二维码有效2小时,二维码已经包含商品信息。只能一个人扫码。
请求二维码
URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
ksort($data);
$sign=md5(http_build_query($data)."&key=".key);
$data["sign"]=$sign;
$code_url = http_request( \url, toXml(data));
QRcode::png($code_url);
异步查询订单状态(js轮询查订单状态)
获取回调
//获取信息
$info = file_get_contents("php://input");
//$log = file_put_contents($log_name,$info,FIlE_APPEND);
$order_info = xmlToArray($info);
//处理信息
$sign = get_sign($order,$key);
if($sign = $order_info['sign']){
//查看状态&&更改状态
//返回给微信成功信息
echo "<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>";
} else {
}
请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 公众账号ID | appid | 是 | String(32) | wxd678efh567hg6787 | 微信支付分配的公众账号ID(企业号corpid即为此appId) |
| 商户号 | mch_id | 是 | String(32) | 1230000109 | 微信支付分配的商户号 |
| 随机字符串 | nonce_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,长度要求在32位以内。推荐随机数生成算法 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 通过签名算法计算得出的签名值,详见签名生成算法 |
| 商品描述 | body | 是 | String(128) | 腾讯充值中心-QQ会员充值 | 商品简单描述,该字段请按照规范传递,具体请见参数规定 |
| 商户订单号 | out_trade_no | 是 | String(32) | 20150806125346 | 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|* 且在同一个商户号下唯一。详见商户订单号 |
| 标价金额 | total_fee | 是 | Int | 88 | 订单总金额,单位为分,详见支付金额 |
| 终端IP | spbill_create_ip | 是 | String(64) | 123.12.12.123 | 支持IPV4和IPV6两种格式的IP地址。用户的客户端IP |
| 通知地址 | notify_url | 是 | String(256) | http://www.weixin.qq.com/wxpay/pay.php | 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。 |
| 交易类型 | trade_type | 是 | String(16) | JSAPI | JSAPI -JSAPI支付NATIVE -Native支付APP -APP支付说明详见参数规定 |