#weixin_pay_sdk 使用介绍 微信支付官方文档地址:https://pay.weixin.qq.com/wiki/doc/api/index.html 创建支付对象 ``` $parameter=array( 'appid'=>'', //微信ID 'appsecret'=>'', //微信密钥 'mch_id'=>'', //微信商户ID 'paykey'=>'', //微信商户密钥 ); $wxpay = new weixin_pay($parameter); ``` 简单的订单,必填的参数 ``` $openid='wxd678efh567hg6787'; //用户openid $orderid='2016030412030456'; //订单号 $price='0.01'; //价格 $goods_name='测试商品'; //商品名称 $notify_url='http://你的域名/notice.php' //支付状态 通知URL ``` ###统一下单接口(默认方式调用) ``` $wOpt=$wxpay->unifiedorder($openid,$orderid,$price,$goods_name,$notify_url); ``` ###统一下单接口(自定义方式调用下单) ``` //附加参数,根据需要传入需要的值。 $attach=array( 'device_info'=>'WEB', //String(32), 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB" 'detail'=>'', //String(8192),商品详情明细介绍 'attach'=>'', //String(127), 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 'fee_type'=>'CNY', //String(16), 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_2 'time_start'=>'', //String(14), 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010 'time_expire'=>'', //String(14), 订单失效时间(到这个时间用户未支付,该订单自动失效),格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010 注意:最短失效时间间隔必须大于5分钟 'goods_tag'=>'', //String(32), 商品标记,代金券或立减优惠功能的参数 'trade_type'=>'JSAPI', //String(16), 取值如下:JSAPI,NATIVE,APP 'product_id'=>'', //String(32), trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义。 'limit_pay'=>'', //String(32), no_credit--指定不能使用信用卡支付 ); //比如用户下单后1小时后用户还未付款自动把该订单关闭。 $op=array( 'time_start'=>date('YmdHis',time()), 'time_expire'=>date('YmdHis',strtotime("+1 hours")) ); $wOpt=$wxpay->unifiedorder($openid,$orderid,$price,$goods_name,$notify_url,$op); ``` 手机端调用js,用户用手机微信打开这个页面 会弹出微信支付。 ``` <script type="text/javascript"> document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { WeixinJSBridge.invoke('getBrandWCPayRequest', { 'appId' : '<?php echo $wOpt['appId'];?>', 'timeStamp': '<?php echo $wOpt['timeStamp'];?>', 'nonceStr' : '<?php echo $wOpt['nonceStr'];?>', 'package' : '<?php echo $wOpt['package'];?>', 'signType' : '<?php echo $wOpt['signType'];?>', 'paySign' : '<?php echo $wOpt['paySign'];?>' }, function(res) { if(res.err_msg == 'get_brand_wcpay_request:ok') { alert('您已成功付款!'); window.location.href=''; //支付成功后跳转的URL }else{ //付款失败的提示信息 alert(res.err_msg); } }); }, false); </script> ``` ###扫码支付 ``` $op=array( 'trade_type'=>'NATIVE', 'product_id'=>'20160506001', //String(32), trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义。 ); $code_url=$wxpay->unifiedorder($openid,$orderid,$price,$goods_name,$notify_url,$op); ``` $code_url对应链接格式:weixin://wxpay/bizpayurl?sr=XXXXX。请调用第三方库将code_url生成二维码图片。用户扫描二维码完成支付。 ###支付回调(微信支付通知) ``` $wxnotify = new weixin_pay_notify(); //返回微信通知返回支付后的数据 $notify_data = $wxnotify->getnotify(); //根据微信支付后返回的数据修改商户本地的订单状态修改成功后 通知微信 $wxnotify->return_notify(); //通知微信 我以收到通知并完成支付。 ``` ###查询订单 ``` //根据商户订单号查询订单 $order=$wxpay->orderquery(array('out_trade_no'=>'201505081213')); //根据微信订单号查询订单 $order=$wxpay->orderquery(array('transaction_id'=>'1009660380201506130728806387')); print_r($order); //返回订单数据 ``` ###关闭订单 (注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。) ``` //根据商户订单号关闭订单 $order=$wxpay->closeorder(array('out_trade_no'=>'201505081213')); //根据微信订单号关闭订单 $order=$wxpay->closeorder(array('transaction_id'=>'1009660380201506130728806387')); print_r($order); //返回关闭订单的数据 ``` ###申请退款 (默认退款) ``` $refundid="T201505081214"; //退款id (自己生成) $total=0.01; //订单总价 $refund=0.01; //退款价格 $orderid=array('out_trade_no'=>'201505081215') 或者 array('transaction_id'=>'1009660380201506130728806387') //商户订单号查询订单或者微信订单号 $order=$wxpay->refund($refundid,$total,$refund,$orderid); ``` ###申请退款 (带附加参数的退款) ``` $refundid="T201505081214"; //退款id (自己生成) $total=0.01; //订单总价 $refund=0.01; //退款价格 $orderid=array('out_trade_no'=>'201505081215') 或者 array('transaction_id'=>'1009660380201506130728806387') //商户订单号查询订单或者微信订单号 //附加参数,根据需要传入需要的值。 $attach=array( 'device_info'=>'WEB', //String(32), 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB" 'refund_fee_type'=>'CNY', //String(16), 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_2 'op_user_id'=>'', //String(32), 操作员帐号, 默认为商户号 (场景:用户申请退款,后台管理员同意 可以知道哪个管理员操作的同意) ) //添加操作员的退款 $op=array( 'op_user_id'='admin'; ); $order=$wxpay->refund($refundid,$total,$refund,$orderid,$op); ``` ###查询退款 ``` $orderid=array( //订单号 (微信的订单号,商户订单号,商户退款单号, 微信退款单号 四选一) 'transaction_id'=>'', //微信订单号 'out_trade_no'=>'' //商户订单号 'out_refund_no'=>'', //商户退款单号 'refund_id'=>'', //微信退款单号 ) //根据订单号查询退款订单 订单号=(微信的订单号,商户订单号,商户退款单号, 微信退款单号 四选一) //如 根据商户订单号查询退款订单 $order=$wxpay->refundquery(array('out_trade_no'=>'201505081213')); ``` ###下载对账单 (默认方式) ``` $date='20140603'; $bill=$wxpay->downloadbill($date); ``` ###下载对账单 (带附加参数和导出excel) ``` //附加参数,根据需要传入需要的值。 $atta=array( 'device_info'=>'WEB', //String(32), 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB" 'bill_type'=>'ALL', //String(8), 默认值:ALL,返回当日所有订单信息, SUCCESS,返回当日成功支付的订单 REFUND,返回当日退款订单 ) //只查询成功的订单并导出excel $date='20140603'; $atta=array( 'bill_type'=>'SUCCESS' ); $bill=$wxpay->downloadbill($date,$atta,true); ```