多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 支付宝网页支付配置 注意阿里2017年对支付宝接口进行了全面升级,所以旧版支付插件(<=1.6.2)不支持新版接口了,如果由新版接口需求,请联系官方升级支付插件至1.7.0以上版本。 ## 1.6.2版本钱包模块兼容修改方法 在RechargeController.class.php和IndexController.class.php找到下面两端代码删掉。 // 兼容支付宝Wap和App if (request()->isMobile() && $pay_type === 'alipay' && !C('IS_API')) { $pay_data['pay_type'] = 'aliwappay'; } if ($pay_type === 'alipay' && C('IS_API')) { $pay_data['pay_type'] = 'alipayapp'; } // 前端仍然只识别alipay不识别alipayapp if ($pay_type === 'alipayapp') { $pay_type = 'alipay'; } ## 调用方法 1、命名空间 use Addons\Pay\ThinkPay\Pay; 2、构造订单数据 $pay_type = 'alipay'; // 支付方式alipay wxpay等等 $pay_data['out_trade_no'] = create_out_trade_no(); $pay_data['money'] = sprintf("%0.2f", I('post.money')); $pay_data['pay_type'] = $pay_type; $pay_data['title'] = C('WEB_SITE_TITLE')."余额充值"; $pay_data['body'] = C('WEB_SITE_TITLE')."余额充值"; 3、根据指定的支付方式从支付插件获取相应的配置 // 获取支付配置 $info['pay_type'] = $_POST['paytype']; // 这是前台用户选择的支付方式,比如用户选择了微信,那么这个值就是wxpay $pay_config = D('Addons://Pay/Pay')->pay_config($info['pay_type']); $pay_config['notify_url'] = U("notify", array('apitype' => $pay_type, 'out_trade_no' => $info['out_trade_no']), false, true); $pay_config['return_url'] = U("my", array('apitype' => $pay_type, 'out_trade_no' => $info['out_trade_no']), false, true); 4、调用支付插件 // APP支付则返回签名字符串 if (C('IS_API')) { // 这是OpenCMF的接口标志,可以更具自己实际需求更改标记 // 订单 $info['out_trade_no'] = 自己生成一个订单号; $info['money'] = 8888; // 订单支付的金额 $info['title'] = "订单标题"; $info['body'] = "订单标题"; $pay = new Pay($info['pay_type'], $pay_config); $sign = $pay->buildRequestForm($info); if ($sign) { $this->success('打开支付', null, array('pay_type' => $info['pay_type'], 'json' => $sign['json'], 'string' => $sign['string'])); // 这里就是返回给App的支付字符串,App接受后取出json字段然后传给SDK即可 } else { $this->error('预支付订单生成失败'); } } else { // 这里是网页支付 pay = new Pay($info['pay_type'], $pay_config); echo $pay->buildRequestForm($info); }