微信二维码支付

准备工作:1.申请微信公众号进行认证;2.申请微信商户打款认证

【统一下单+查询订单+支付结果通知】

商品信息(金额+订单号….)+商户信息(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支付说明详见参数规定
Licensed under 京ICP备17003353号-3