Giter Site home page Giter Site logo

leslin / weixin-payment Goto Github PK

View Code? Open in Web Editor NEW
57.0 7.0 39.0 1.84 MB

微信子商户交易系统 高并发交易 异步队列 商户对账系统 权限系统 商户防封 微信支付

PHP 95.54% HTML 1.65% PLpgSQL 0.30% Smarty 2.51%
weixin-pay payment weixinpay weixin pay wxpay

weixin-payment's Introduction

微信支付服务商交易系统

github最新项目地址:https://github.com/Leslin/Weixin-Payment

  • 基于微信服务商多商户交易系统,后台可以配置多个服务商,每个服务商下可配置多个子商户,交易支持微信原生jsapi支付,扫码、刷卡支付,同时支持微信桥支付。

  • 每一笔支付都能随机指定到某一个商户,防止微信端支付被投诉导致商户号被封

  • 后台可以开设子账号,分配接口给用户,并进行单独商户对账,最高权限账号统一管理账务

  • 支持支付宝等交易(支付宝还没开发,demo可以用)

  • 交易商户对账、不同管理员对账管理

  • 商户权限检测

  • 支持扫码手动输入金额付款

架构

graph LR
用户-->接口调用
接口调用-->商户系统
商户系统-->微信支付API
微信支付API-->接口调用
接口调用-->用户

代码说明

1.服务商商户配置

  • 服务商配置代码路径
/extend/Payment/Pay/weixinconfig.php

修改 app_id、mch_id(服务商商户id)、md5_key(支付key)、notify_url(回调地址)等参数

微信支付接口地址

/extend/Payment/Pay/Wx/AppCharge.php/

2.用生成的token调用支付接口

  • 接口请求地址 POST
https://****.com/v1/pay

如图: 请求成功后,接口会同步返回一个支付链接地址,地址生成了一个唯一的支付token,用户识别订单,用户只需要点击该链接地址就会自动跳转至微信jsapi支付。

如图

3.微信公众号配置

  • 微信基础类Wechat.php在v1/目录下,这里微信的基类的作用是用户点击点击支付链接,进行微信授权,拿到用户的openid,根据支付的token提交支付订单给微信,根据返回的预支付id等参数调用jsapi进行支付。

4.支付回调

  • 后台增加一个支付调用者,就会对应填写客户的回调域名,在客户调用支付成功后,系统会收到微信回调通知,系统同步把微信通知数据post给客户填写的回调域名。这里数据的sign做了重新处理,根据客户的私钥重新进行了签名,保证数据安全。
        unset($data['sign']); //去除签名
		$order = self::getOrderInfo($data['out_trade_no']);
		$userinfo = Db::name('admin')->where('app_key',$order['user_id'])->find();
		if(empty($userinfo)){
			return false;
		}

		$data['sign'] = $this->_getOrderMd5($data,$userinfo['appsecret']);  //得到完整的签名后的数据
		Log::info('开始回调客户'.json_encode($data));
		$result = json_decode($this->httpRequest($userinfo['callback'],json_encode($data)),true);
		Log::info('回调客户返回结果'.json_encode($result));
		if($result['code'] == 200){  //正确返回
			$back['callback_status'] = 1;
			$back['returndata'] = json_encode($result);
			Db::name('order')->where('order_sn',$data['out_trade_no'])->update($back);
			return true;
		}else{
			$back['callback_status'] = 2;
			$back['returndata'] = json_encode($result);
			Db::name('order')->where('order_sn',$data['out_trade_no'])->update($back);
			return false;
		}

5.手动输入付款金额付款

  • 系统支持用户扫码手动输入付款金额进行付款,该支付方式不需要调用API,直接提供一个生产二维码的URL,具体控制在/v1/Inputpay.php,提取出链接后,直接在草料等平台生产二维码即可 如图

6.商户防封检测

  • 当系统支付客户接入过多后,会造成商户支付权限被冻结,导致支付失败,这里提供了商户支付权限检测功能,代码位置在/v1/Inputpay.php test方法 如图

后台

后台主要用户权限角色管理,子商户配置,分配开发者的appid,对账,订单等功能

如下图所示: 支付概况

权限角色管理

订单管理

子商户管理

支付汇总

商户交易汇总

其他说明

交流QQ群号:645233951

版权信息

遵循Apache2开源协议发布,并提供免费使用。

更多细节参阅 LICENSE.txt

weixin-payment's People

Contributors

leslin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

weixin-payment's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.