1. 配置公众号信息
我们先进行测试,所以先把测试授权目录和 测试白名单添加上。测试授权目录是你要发起微信请求的哪个文件所在的目录。
例如jsapi 发起请求一般是jsapi.php所在目录 为测试目录,测试白名单即开发人员的微信号。
正式的支付授权目录不能和测试的一样否则会报错。不填写或者填错授权目录以及测试白名单都会报错。
报错样例:
NaNsystem:access_denied
2. 配置 lib/WxPay.Config.php文件
最主要配置一下四项:
const APPID = '';
const MCHID = '';
const KEY = '';
const APPSECRET = '';
APPID 和 APPSECRET都可以在微信后台中找到。
MCHID 在申请微信支付后发来的邮件中可以找到,KEY 则根据邮件提示
3. 拜访官方demo
我们首先需要的是 JSAPI支付。但是看代码 index.php 最下面的链接。他默认是个demo的链接,改为我们自定义的即可
当然你也可以直接写死为自己的访问链接。
官方给的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接口设置:
//请求支付参数
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 推广一波...