# 有调系统中都集成了哪些支付
微信支付 (https://pay.weixin.qq.com)
百度钱包 (http://b.baifubao.com)
银联支付 (http://mobile.unionpay.com/preference)
支付宝 (https://e.alipay.com/index.htm)
如何发起一个支付?
在微擎系统中,发起一个支付功能很简单,只需要调用父类的$this→pay();方法即可,在发起支付时,请先确保你需要的数据包括用户身份等信息已经提先入库,支付成功通知不包含此类信息,只是负责通知支付成功或是失败
具体请看下方例子:
//该代码片断在/framework/builtin/recharge/site.php中
~~~
public function doMobilePay() {
//获取用户要充值的金额数
$fee = floatval($_GPC['money']);
if($fee <= 0) {
message('支付错误, 金额小于0');
}
// 一些业务代码。
//构造支付请求中的参数
$params = array(
'tid' => $chargerecord['tid'], //充值模块中的订单号,此号码用于业务模块中区分订单,交易的识别码
'ordersn' => $chargerecord['tid'], //收银台中显示的订单号
'title' => '系统充值余额', //收银台中显示的标题
'fee' => $chargerecord['fee'], //收银台中显示需要支付的金额,只能大于 0
'user' => $_W['member']['uid'], //付款用户, 付款的用户名(选填项)
);
//调用pay方法
$this->pay($params);
}
~~~
调用$this→pay($params);方法后,用户会跳转到收银台中。
如果不使用系统的 $this→pay($params); 方法,则需要手动添加记录到系统订单表,如下:
~~~
global $_W;
//构造支付请求中的参数
$params = array(
'tid' => $chargerecord['tid'], //充值模块中的订单号,此号码用于业务模块中区分订单,交易的识别码
'ordersn' => $chargerecord['tid'], //收银台中显示的订单号
'title' => '系统充值余额', //收银台中显示的标题
'fee' => $chargerecord['fee'], //收银台中显示需要支付的金额,只能大于 0
'user' => $_W['member']['uid'], //付款用户, 付款的用户名(选填项)
);
$log = pdo_get('core_paylog', array('uniacid' => $_W['uniacid'], 'module' => $params['module'], 'tid' => $params['tid']));
//在pay方法中,要检测是否已经生成了paylog订单记录,如果没有需要插入一条订单数据
//未调用系统pay方法的,可以将此代码放至自己的pay方法中,进行漏洞修复
if (empty($log)) {
$log = array(
'uniacid' => $_W['uniacid'],
'acid' => $_W['acid'],
'openid' => $_W['member']['uid'],
'module' => $this->module['name'], //模块名称,请保证$this可用
'tid' => $params['tid'],
'fee' => $params['fee'],
'card_fee' => $params['fee'],
'status' => '0',
'is_usecard' => '0',
);
pdo_insert('core_paylog', $log);
}
//执行自己的收银台或是直接跳转至支付地址
~~~
如何判断用户是否支付成功?
当用户支付完成后,系统会调用模块中的$this→payResult($params);方法来通知支付是否成功,此方法为支付接口方(微信,支付宝,百度钱包等)调用,请避免使用checkauth()或是其它身份判断
在进行状态修改时,也请再次判断一下用户支付的金额是否与订单的金额一致,确保支付安全,具体如下:
~~~
//该代码片断在/framework/builtin/recharge/site.php中
public function payResult($params) {
//一些业务代码
//根据参数params中的result来判断支付是否成功
if ($params['result'] == 'success' && $params['from'] == 'notify') {
//此处会处理一些支付成功的业务代码
//此处再次判断用户支付的金额是否与其生成订单的金额相符,二次验证支付安全
if ($params['fee'] != $order['fee']) {
exit('用户支付的金额与订单金额不符合');
}
}
if (empty($params['result']) || $params['result'] != 'success') {
//此处会处理一些支付失败的业务代码
}
//因为支付完成通知有两种方式 notify,return,notify为后台通知,return为前台通知,需要给用户展示提示信息
//return做为通知是不稳定的,用户很可能直接关闭页面,所以状态变更以notify为准
//如果消息是用户直接返回(非通知),则提示一个付款成功
if ($params['from'] == 'return') {
if ($params['result'] == 'success') {
message('支付成功!', '../../app/' . url('mc/home'), 'success');
} else {
message('支付失败!', '../../app/' . url('mc/home'), 'error');
}
}
}
~~~
支付的工作流程是什么?
1. 用户在使用模块功能需要支付时,模块调用父类的$this→pay($params);方法来调用系统收银台功能。
2. 系统收银台接到模块调用请求,生成支付界面(金额,商品信息等)。
3. 用户在收银台中选择支付手段,如微信支付,支付宝支持等。
4. 收银台根据用户选择的支付手段,请求到相应的支付接口上,用户完成支付。
5. 完成支付后,系统会调用模块中的 $this→payResult($params); 方法来通知支付状态(成功或是失败)。
6. 如下图所示:
![](https://box.kancloud.cn/2016-04-02_56ff27a7b111b.jpg)
- 有调使用需知
- 有调商城使用条件
- 有调商城新手快速入门
- 公众平台绑定
- 网页授权获取信息
- 回调域名与JS接口
- 【七牛存储】设置功能说明
- 如何设置商城权限管理
- 【分类层级】功能说明
- 【设置入口】功能说明
- 【会员设置】功能说明
- 【模板消息库】功能说明
- 【消息提醒】功能说明
- 【支付方式】功能说明
- 【商城交易设置】功能说明
- 【商城关闭设置】功能说明
- 【商城关注及分享】功能说明
- 【商城基础设置】功能说明
- 【自定义表单】功能说明
- 【快递助手】功能说明
- 【淘宝助手】功能说明
- 【活动海报】功能说明
- 【超级海报】功能说明
- 【分销样式/文字】功能说明
- 【分销—小店】功能说明
- 分销中心功能说明
- 分销商升级功能说明
- 【分销—结算】功能说明
- 【分销—上下线关系及分销资格】功能说明
- 【分销—基础基本设置】功能说明
- 【分销—入口设置】功能说明
- 分销—排行榜设置功能说明
- 【分销—无效的】功能说明
- 【分销—已打款的】功能说明
- 【分销 —待打款的】功能说明
- 【分销— 待审核的】功能说明
- 【分销—分销商等级】功能说明
- 【分销—分销商增长趋势统计】功能说明
- 【分销—分销商管理】功能说明
- 【数据会员统计】功能说明
- 【数据商品统计】功能说明
- 【数据销售统计】功能说明
- 【财务下载对账单】功能说明
- 【财务提现申请】功能说明
- 【财务充值记录】功能说明
- 【营销—优惠券设置】功能说明
- 【营销—优惠券发放记录】功能说明
- 【营销—优惠券分类】功能说明
- 【营销—优惠券管理】功能说明
- 【营销—充值优惠】功能说明
- 【营销—满额包邮】功能说明
- 【营销—满额立减】功能说明
- 【营销—抵扣设置】功能说明
- 【订单批量发货】功能说明
- 【订单自定义导出】功能说明
- 【订单维权】功能说明
- 【全部订单】功能说明
- 【订单已关闭】功能说明
- 【订单已完成】功能说明
- 【订单待付款】功能说明
- 【订单待收货】功能说明
- 【虚拟卡管理】功能说明
- 【订单待发货】功能说明
- 【订单列表】概述功能说明
- 【会员消息】群发功能说明
- 【会员排行榜】功能说明
- 【会员分组】功能说明
- 【会员等级】功能说明
- 【会员管理】功能说明
- 【商品添加】功能说明
- 【商品管理】功能说明
- 【O2O插件】功能说明
- 【首页管理】功能说明
- 【商城管理】功能说明
- 文章营销】功能说明
- 有调商城常见问题
- 客服消息推送以及模板消息推送的区别
- 快递助手使用手册
- 模板消息行业选择
- 分销中心分销通知设置店长稿
- 微信支付提示:wxpay:faild
- 微信支付提示签名错误解决方法
- 微信支付提示:“URL未注册”
- 有调商城【会员等级】与【分销商等级】的区别
- 微信提示“请在微信客户端内打开”“该链接无法访问"
- 模板消息(高级模式)使用说明
- 新增快速导入批量发货功能
- 关于OAuth2.0授权方式的调整
- 有调商城系统设置
- 商城各入口的设置
- 商品价格为0的修复
- 商城会员等级升级依据和商品分类层级设置
- 系统消息提醒和模板消息库的设置
- 选择开启商城支付方式
- 商城交易设置
- 商城基础、关注分享及关闭设置
- 商城管理
- 商城商品组的使用
- 如何添加虚拟卡?
- 如何设置商品自定义表单
- 如何设置商品线下核销
- 如何设置商品分销
- 如何设置下单通知
- 如何设置购买商品强制关注
- 如何设置商品购买权限
- 如何设置商品详情
- 如何设置商品参数
- 如何设置商品库存/规格
- 如何设置商品基本信息
- 商城—商品管理
- 如何设置商品分类
- o2o插件操作说明
- 商城退货地址管理操作说明
- 商城评价管理操作说明
- 商城配送方式操作说明
- 分销管理
- 佣金的计算方式
- 结算后的佣金怎样打款?
- 如何审核处理申请成为分销商?
- 如何添加分销商等级,设置分销商佣金比例?
- 如何审核分销商的佣金提现申请?
- 如何设置分销商的佣金排名?
- 如何设置成为分销商、新增下线等通知信息?
- 如何设置分销中心的关键词?
- 如何设置分销商层级关系及升级条件?
- 怎样设置分销商获取佣金?
- 如何设置佣金结算方式?
- 如何设置分销商升级等级依据?
- 分销中心佣金明细如何设置查看购买者详情及购买商品详情?
- 如何设置分销商自己的店铺?
- 如何修改商城分销中心的样式/文字?
- 设置手机前台推广二维码
- 区域代理
- 关于区域代理
- 区域代理中心的入口设置
- 成为代理商及发放分红的通知设置
- 商城代理商分红发放流程
- 成为代理商开启分红的基本设置
- 有调商城全网通
- 全网通说明
- 全网通设置详细功能设置
- 逻辑关系说明
- 微官网管理
- 如何建立一个微官网
- 如果添加官网轮播图
- 如何添加栏目以及栏目内容
- 如何增加导航菜单和图标
- 如何增加微官网的自定义菜单
- 微站管理中的其它内容
- 专题页面
- 系统概述技术文档
- 结构概述
- 入口脚本
- 有调MVC
- URL路由&创建
- 全局变量
- 加载器
- 错误处理
- 前端资源
- 目录结构
- 支付流程
- 系统模板技术文档
- 模板标签
- 数据调用
- 常用变量
- 系统数据库技术文档
- 参数绑定
- 数据操作
- 主从配置
- 连接其它数据库
- 微信API技术文档
- 公众号AccessToken
- 共享收货地址