微擎微擎支付api发起支付并验证1. 设置微擎上的支付参数 2. 微信商户号配置配置 登录商户号--产品中心--开发配置 3. PHP发起支付 [http://s.we7.cc/index.php?c=wiki&do=view&id=1&list=363 ]() public function doMobilePay() { //获取用户要充值的金额数 $fee = floatval($作者王明昌发布时间2018-07-22最后更新2018-07-22 1. 设置微擎上的支付参数 2. 微信商户号配置配置 登录商户号--产品中心--开发配置 3. PHP发起支付 [http://s.we7.cc/index.php?c=wiki&do=view&id=1&list=363 ]() 复制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); } 4. js发起支付 [http://s.we7.cc/index.php?c=wiki&do=view&id=1&list=364 ]() 5. 验证支付 [http://s.we7.cc/index.php?c=wiki&do=view&id=1&list=365]() ``` //该代码片断在/framework/builtin/recharge/site.php中 public function payResult($params) { //一些业务代码 //根据参数params中的result来判断支付是否成功 if ($params['result'] == 'success' && $params['from'] == 'notify') { //此处会处理一些支付成功的业务代码 load()->func('logging');//载入日志函数 logging_run($params);//记录文本日志 } //因为支付完成通知有两种方式 notify,return,notify为后台通知,return为前台通知,需要给用户展示提示信息 //return做为通知是不稳定的,用户很可能直接关闭页面,所以状态变更以notify为准 //如果消息是用户直接返回(非通知),则提示一个付款成功 //如果是JS版的支付此处的跳转则没有意义 if ($params['from'] == 'return') { if ($params['result'] == 'success') { message('支付成功!', '../../app/' . url('mc/home'), 'success'); } else { message('支付失败!', '../../app/' . url('mc/home'), 'error'); } } } class *****{ } ``` String: array ( 'appid' => 'wx078364682b09cc50', 'attach' => '2', 'bank_type' => 'CFT', 'cash_fee' => '100', //_**单位是分 **_ 'fee_type' => 'CNY', 'is_subscribe' => 'Y', 'mch_id' => '1490439232', 'nonce_str' => 'ST0909Nr', 'openid' => 'opqp80q1XnInacQ7cniTcFX65ngg', 'out_trade_no' => '2018060611000700001468438396', 'result_code' => 'SUCCESS', 'return_code' => 'SUCCESS', 'sign' => '5BF9AFF7F553B2DBEE3587EB6031CAC2', 'time_end' => '20180606110013', 'total_fee' => '100', 'trade_type' => 'JSAPI', 'transaction_id' => '4200000133201806063859003646', ) - [2018-06-06 11:00:13] trace /payment/wechat/notify.php? weid=; uniacid=2; acid=2; result=success; type=; from=notify; tid=20180606555252486608; uniontid=2018060611000700001468438396; transaction_id=; trade_type=JSAPI; follow=1; user=opqp80q1XnInacQ7cniTcFX65ngg; fee=1.00; tag={acid=2; uid=2; transaction_id=4200000133201806063859003646; }; is_usecard=0; card_type=0; card_fee=1.00; card_id=; paytime=1528254013; - //商品编号生成 (YmdHi)拼接上兑换表生成的Id //订单号的生成 (YmdHi)拼接上订单表生成的Id echo date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); 订单号常见的几种方式: 1.利用数据库主键值产生一个自增长的订单号(订单号即数据表的主键) 2.日期+自增长数字的订单号(比如:2012040110235662) 3.产生随机的订单号(65865325365966) 4.字母+数字字符串式,字母有包含特别意义,C02356652 订单号设计原则: 按需设计 用来检索订单详细信息的唯一特征码,可以利用订单号检索到下单日期、产品类别、颜色、尺码(或款式)、仓位等信息,订单号包含过多的信息有点“画蛇添足”的意味!只要按需设计即可! 订单号设计用户体验规则: 1.订单号无重复性; 2.如果方便客服的话,最好是“日期+自增数”样式的订单号,客服一看便知道订单是否在退货保障期限内容; 3.订单号长度尽量保持短(10位以内),方便用户,尤其电话投诉时,长的号码报错几率高,影响客服效率; 4.订单号尽量保持数字型(纯整数),在数据库订单索引查询中,长整数字型的数据索引与检索效率,远远高于文本型,因此尽量避免“字母+数字字符串式”! 做商城类项目经常需要生成唯一订单号,下面来个汇总! 方法一: return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); 方法二: 正在使用。。。 return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); 方法三:以前使用。。。 public function make_order($user_id) { return mt_rand(10,99) . sprintf('%010d',time() - 946656000) . sprintf('%03d', (float) microtime() * 1000) . sprintf('%03d', (int) $user_id % 1000); } 方法四: $yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'); $orderSn = $yCode[intval(date('Y')) - 2011] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99)); ### 日志记录 load()->func('logging');//载入日志函数 logging_run($params);//记录文本日志 存放在/data/logs
2018-07-22微擎模块开发流程 http://wq.90ckm.com/app/index.php?i=2&c=entry&eid=15 i:是公众号的站内id c=entry :应用入口 eid:用户安装后的应用id 数据表:
2018-07-21微擎 | 插件应用的安装/自己新建应用模块存放位置/addons 1.在线安装 在应用商城中购买,在绑定的微擎程序中安装 2.线下安装 别人开发的 问题: 云端通信/版权保护  解决方案: 修改打开 \framework\model\c
2018-07-22微擎 | 自定义分享到朋友圈获取用户信息 //$_W['uniacid'] 获取当前公众号的id $userinfo = mc_oauth_userinfo($_W['uniacid']) //获取用户的信息 自定义分享 //方
2018-07-22微擎 微信企业付款到用户零钱 目标: 实现企业付款到零钱 步骤 1 下载支付证书 2 配置支付参数 (1 用户微信需要实名认证 2 提现最低要1元) 3 发起支付获取支付结果 企业付款微信官方文档 https://pay.wei
2018-07-22微擎 | phpqrcode 海报制作https://www.jianshu.com/p/66bf8f26e41d # 二维码推广海报 使用PHP GD2 ### 文字 ### 图片