<?php
/**
* ECTouch Open Source Project
* ============================================================================
* Copyright (c) 2012-2014 liuwave@qq.com All rights reserved.
* ----------------------------------------------------------------------------
* 文件名称:wxpay.php
* ----------------------------------------------------------------------------
* 功能描述:微信手机支付插件
* ----------------------------------------------------------------------------
*
* ----------------------------------------------------------------------------
*/
/* 访问控制 */
if (! defined('IN_ECTOUCH')) {
die('Deny Access');
}
$payment_lang = ROOT_PATH . 'plugins/payment/language/' . C('lang') . '/' . basename(__FILE__);
if (file_exists($payment_lang)) {
include_once ($payment_lang);
L($_LANG);
}
/* 模块的基本信息 */
if (isset($set_modules) && $set_modules == TRUE) {
$i = isset($modules) ? count($modules) : 0;
/* 代码 */
$modules[$i]['code'] = basename(__FILE__, '.php');
/* 描述对应的语言项 */
$modules[$i]['desc'] = 'wxpay_desc';
/* 是否支持货到付款 */
$modules[$i]['is_cod'] = '0';
/* 是否支持在线支付 */
$modules[$i]['is_online'] = '1';
/* 作者 */
$modules[$i]['author'] = 'liuwave@qq.com';
/* 网址 */
$modules[$i]['website'] = 'http://www.baiwar.com/';
/* 版本号 */
$modules[$i]['version'] = '2.1.8';
/* 配置信息 */
/* 配置信息 */
$modules[$i]['config'] = array(
array('name' => 'wxpay_appid', 'type' => 'text', 'value' => ''),
array('name' => 'wxpay_appsecret', 'type' => 'text', 'value' => ''),
array('name' => 'wxpay_mchid', 'type' => 'text', 'value' => ''),
array('name' => 'wxpay_key', 'type' => 'text', 'value' => ''),
);
return;
}
/**
* 微信支付类
*/
class wxpay
{
var $parameters; // cft 参数
var $payment; // 配置信息
/**
* 生成支付代码
*
* @param array $order
* 订单信息
* @param array $payment
* 支付方式信息
*/
function get_code($order, $payment)
{
if (!defined('EC_CHARSET'))
{
$charset = 'utf-8';
}
else
{
$charset = EC_CHARSET;
}
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
if( !preg_match('/micromessenger/', $ua)){
return '<div style="text-align:center"><button class="btn btn-primary" type="button" disabled>'.L("wxpay_not_wx_button").'</button></div>';
}
if(!isset($_SESSION["openid"]) || empty($_SESSION["openid"]) || $_SESSION["openid"]==-1 ){
return '<div style="text-align:center"><button class="btn btn-primary" type="button" disabled>'.L("wxpay_not_openid_button").'</button></div>';
}
$charset = strtoupper($charset);
// 配置参数
$this->payment = $payment;
$notify_url=__URL__."/respondwx.php";
$this->logResult("log::get_code::notify_url:".$notify_url);
$this->setParameter("openid", $_SESSION["openid"]); // 商品描述
$this->setParameter("body", $order['order_sn']); // 商品描述
$this->setParameter("out_trade_no", $order['order_sn'] . 'O' . $order['log_id'].'O'.$order['order_amount'] * 100); // 商户订单号
$this->setParameter("total_fee", $order['order_amount'] * 100); // 总金额
$this->setParameter("notify_url", $notify_url); // 通知地址
$this->setParameter("trade_type", "JSAPI"); // 交易类型
$this->setParameter("input_charset", $charset);
$prepay_id = $this->getPrepayId();
if(empty($prepay_id)){
return '<div style="text-align:center"><button class="btn btn-primary" type="button" disabled>'.L("wxpay_not_prepayid_button").'</button></div>';
}
$jsApiParameters = $this->getParameters($prepay_id);
$callback_url=return_url("wxpay", array(
'type' => 0,
'status' => 1
));
$callback_url_error= return_url("wxpay", array(
'type' => 0,
'status' => 0
));
//todo 部署后删除
$this->logResult("log::get_code::calback:".$callback_url."\n".$callback_url_error);
// wxjsbridge todo 调试用 alert(JSON.stringify(res));return false; 部署后删除
$jsdebug="";
if(WXPAY_DEBUG){
$jsdebug='alert(JSON.stringify(res));return false;';
}
$js = '<script language="javascript">
function jsApiCall(){WeixinJSBridge.invoke("getBrandWCPayRequest",' . $jsApiParameters . ',function(res){if(res.err_msg == "get_brand_wcpay_request:ok"){location.href="'
. $callback_url . '"}else{'.$jsdebug.'location.href="' . $callback_url_error. '"}});}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();}}
</script>';
$button = '<div style="text-align:center"><button class="btn btn-primary" type="button" onclick="callpay()">'.L("wxpay_button").'</button></div>' . $js;
return $button;
}
function logResult($word = '',$var=array()) {
if(!WXPAY_DEBUG){
return true;
}
$output= strftime("%Y%m%d %H:%M:%S", time()) . "\n" ;
$output .= $word."\n" ;
if(!empty($var)){
$output .= print_r($var, true)."\n";
}
$output.="\n";
$log_path=ROOT_PATH . "/data/log/";
if(!is_dir($log_path)){
@mkdir($log_path, 0777, true);
}
file_put_contents($log_path."wx.txt", $output, FILE_APPEND | LOCK_EX);
}
/**
* 响应操作
*/
function callback($data)
{
if ($data['status'] == 1) {
return true;
} else {
return false;
}
}
/**
* 响应操作
*/
function notify($data) {
$this->logResult("log::notify::start:");
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
if (! empty($xml)) {
$payment = model('Payment')->get_payment($data['code']);
$this->payment=$payment;
$postdata =$this->xmlToArray($xml);
/* 检查插件文件是否存在,如果存在则验证支付是否成功,否则则返回失败信息 */
//todo 部署后删除
$this->logResult("log::notify::postdata",$postdata);
// 微信端签名
$wxsign = $postdata['sign'];
unset($postdata['sign']);
//todo 部署后删除
$this->logResult("log::notify::wxsign",$wxsign);
$sign=$this->getSign($postdata);
//todo 部署后删除
$this->logResult("log::notify::sign:",$sign);
if ($wxsign == $sign) {
// 交易成功
if ($postdata['result_code'] == 'SUCCESS') {
// 获取log_id
$out_trade_no = explode('O', $postdata['out_trade_no']);
$order_sn = $out_trade_no[1]; // 订单号log_id
// 改变订单状态
//todo 部署后删除
$this->logResult("log::notify::out_trade_no:",$postdata['out_trade_no']);
model('Payment')->order_paid($order_sn, 2);
}
$returndata['return_code'] = 'SUCCESS';
} else {
$returndata['return_code'] = 'FAIL';
没有合适的资源?快使用搜索试试~ 我知道了~
ectouch最新版JSAPI微信支付V3插
共5个文件
php:4个
md:1个
5星 · 超过95%的资源 需积分: 5 181 下载量 201 浏览量
2016-06-30
16:16:09
上传
评论 2
收藏 11KB ZIP 举报
温馨提示
亲测,绝对真实可用,真金白银买回来的。安装简单,安装教程:http://blog.csdn.net/u014216479/article/details/51791083
资源推荐
资源详情
资源评论
收起资源包目录
ectouch.zip (5个子文件)
ectouch
mobile
payment
wxpay.php 18KB
language
zh_cn
wxpay.php 1KB
CHANGELOG.md 950B
respondwx.php 964B
CommonController.class.php 6KB
共 5 条
- 1
资源评论
- qq_300783272017-12-12没弄明白哈
- O天黑请闭眼O2017-06-212.7.3版的可以用,新版未测。 注意把 域名/mobile 放进公众号支付授权目录
- 江郎才尽702020-06-24刚下载,试试再评。
- chengxinai2017-11-02没弄明白哈
- 寒川2018-07-09下错了,还是给点一下赞。
shcolo
- 粉丝: 11
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功