微信php支付接口demo下载
https://pay.weixin.qq.com/wik...php
官方文档参考
https://pay.weixin.qq.com/wik...html
1. 配置公众号信息
咱们先进行测试,因此先把测试受权目录和 测试白名单添加上。测试受权目录是你要发起微信请求的哪一个文件所在的目录。
例如jsapi 发起请求通常是jsapi.php所在目录 为测试目录,测试白名单即开发人员的微信号。
正式的支付受权目录不能和测试的同样不然会报错。不填写或者填错受权目录以及测试白名单都会报错。
报错样例:
NaNsystem:access_denied前端
2. 配置 lib/WxPay.Config.php文件api
最主要配置一下四项:
const APPID = '';
const MCHID = '';
const KEY = '';
const APPSECRET = '';
APPID 和 APPSECRET均可以在微信后台中找到。
MCHID 在申请微信支付后发来的邮件中能够找到,KEY 则根据邮件提示微信
3. 拜访官方demo函数
咱们首先须要的是 JSAPI支付。可是看代码 index.php 最下面的连接。他默认是个demo的连接,改成咱们自定义的便可
固然你也能够直接写死为本身的访问连接。测试
<ul> <li style="background-color:#FF7F24"><a href="<?php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'example/jsapi.php';?>">JSAPI支付</a></li> <li style="background-color:#698B22"><a href="<?php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'example/micropay.php';?>">刷卡支付</a></li> <li style="background-color:#8B6914"><a href="<?php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'example/native.php';?>">扫码支付</a></li> <li style="background-color:#CDCD00"><a href="<?php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'example/orderquery.php';?>">订单查询</a></li> <li style="background-color:#CD3278"><a href="<?php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'example/refund.php';?>">订单退款</a></li> <li style="background-color:#848484"><a href="<?php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'example/refundquery.php';?>">退款查询</a></li> <li style="background-color:#8EE5EE"><a href="<?php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'example/download.php';?>">下载订单</a></li> </ul>
官方给的demo整个思路就很明朗了
若是说要设计成api接口
能够参考一下我的的微信支付
api开发思路:
引入:
这三个文件网站
require __DIR__ . '/wechat_pay/example/WxPay.JsApiPay.php'; require __DIR__ . '/wechat_pay/example/log.php'; require __DIR__ . '/wechat_pay/lib/WxPay.Api.php';
api接口设置:ui
//请求支付参数
case 10098: $openid= isset($_REQUEST['openid'])?$_REQUEST['openid']:error(); $SetTotal_fee= isset($_REQUEST['SetTotal_fee'])?$_REQUEST['SetTotal_fee']:error(); wx_pay($openid,$SetTotal_fee);
break;
这里SetTotal_fee是支付的金额 openid是密钥
//发起支付的函数
function wx_pay($openid,$SetTotal_fee){ //初始化日志 $logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log'); $log = Log::Init($logHandler, 15); //①、获取用户openid $tools = new JsApiPay(); $openId =$openid; //②、统一下单 $input = new WxPayUnifiedOrder(); $input->SetBody("这里写产品名字"); $input->SetAttach("test"); $input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis")); $input->SetTotal_fee($SetTotal_fee*100); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag("test"); $input->SetNotify_url("xxxx/jsapi.php");//这里写发起支付的页面 $input->SetTrade_type("JSAPI"); $input->SetOpenid($openId); $order = WxPayApi::unifiedOrder($input); $jsApiParameters = $tools->GetJsApiParameters($order); echo $jsApiParameters; }
前端调用:
function jsApiCall() { WeixinJSBridge.invoke( 'getBrandWCPayRequest', , function(res){ WeixinJSBridge.log(res.err_msg);//存储异常 alert(res.err_code+res.err_desc+res.err_msg); //后面能够写上执行失败的东西 } ); } function callpay() { if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', jsApiCall, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', jsApiCall); document.attachEvent('onWeixinJSBridgeReady', jsApiCall); } }else{ jsApiCall(); } }
若是这篇文章对你有用,能够点个赞或者是收藏,算是对做者的鼓励~
另附上小弟网站。。。www.entercode.cn 推广一波...