站点要开通微信在线支付接口,微信、支付宝两大支付巨头都需要具备营业执照才可申请。对于个人站长而言,意味着麻烦和需要养执照的问题,运营初期为了节约成本,将站点和Payjs对接是不错的解决方案。
本实例属于二开,但改动的不多,记录好修改的文件,升级的时候替换就可以。
一、前提,去payjs官网注册并获得商户号、通信密钥。
二、处理cms微信支付判断:
application/admin/template/member/pay_set.htm
注释后台配置页面不需要的字段及js提交判断,然后剩下的两个字段填入你的商户号(wechat[mchid])和密钥(wechat[key])
htdocs/application/admin/controller/Member.php
注释后端方法的判断,这样只有两个字段的情况下才能显示支付按钮
三、处理控制器
当用户点击支付按钮,会调用控制器(controller/Pay.php)中二维码的请求方法pay_wechat_png,把订单数据传到支付方法(model/Pay.php)中打包后发给payjs。
所以我们需要更改application/user/controller/Pay.php中的pay_wechat_png把打包方法替换掉
这样我们已经成功显示了一个二维码,走到了下面的方法四。
四、处理model
application/user/model/Pay.php
这里只是把原来的payForQrcode二维码请求复制出来做个修改,变成适合psyjs的请求。
public function payjs($out_trade_no,$total_fee){
// 获取微信配置信息
$pay_wechat_config = getUsersConfigData('pay.pay_wechat_config');
if (empty($pay_wechat_config)) {
return false;
}
$globalConfig = tpCache('web.web_name');
$web_name = !empty($globalConfig) ? $globalConfig : '支付';
$data['body'] = $web_name;
$data['out_trade_no'] = $out_trade_no;
$data['total_fee'] = $total_fee * 100;
$data['notify_url'] = request()->domain().'/Payself.php';
$ret = model('Payself')->native($data);
if($ret['return_code'] == 1 && $ret['return_msg'] == 'SUCCESS') {
return $ret['code_url'];
} else {
return $ret;
}
}
到这一步,我们已经把订单数据发到服务端进行支付处理了。处理完我们需要接收服务端返回来的数据,接收文件就是上面写的Payself.php。psyjs官方提供了很多接收回调的实例,大家可以去找找看。
因为是二开,为了不过多改动易优的代码,给以后升级带来麻烦,这里的实现思路是显示二维码后,去循环请求一个json文件。接收回调回来的数据验证后写入这个json文件,可以根据自己的需要写入判断条件。用户页面上循环请求到json中有对应的订单则进行订单状态更改存库完成支付。
好了,经验来之不易,请多关照
原文 hbh.cool/find/145.html