ThinkPHP 使用 微信支付SDK

下图是 微信支付 SDK 包含样例的文件
我使用的是TP5, 我应该怎么在我的 controller 引入 并使用 它们

纠结点:

  1. TP5 里都是使用命名空间的,而这个SDK的 9个文件 都是用 require_once 引入的, 该怎么对接上
  2. 把这9个文件改造成命名空间,但是发现其中有个文件中 有 20个类, 无法符合TP 的规则(类名与文件名相同)

图片描述

阅读 7.5k
3 个回答

官方文档说明

ThinkPHP5建议所有的扩展类库都使用命名空间定义,如果你的类库没有使用命名空间,则不支持自动加载,必须使用Loader::import方法先导入文件后才能使用。

如何使用

# /project/extend/wechat-sdk/Wechat.php

# 引入
import('wechat-sdk.Wechat');

# 库类文件名类似 Wechat.class.php 可以使用以下方式
import('wechat-sdk.Wechat', '', '.class.php');
Loader::import('wechat-sdk.Wechat');
$Wechat = new \Wechat();

其实不用命名空间也行的。
参考TP官方文档

推荐使用 EasyWechat

在Controller里面根据支付方式参数引用支付处理类:

include_once "plugins/payment/{$this->pay_code}/{$this->pay_code}.class.php";
$code = '\\' . $this->pay_code;
$this->payment = new $code();
$this->payment->pay($order);

在支付处理类里面引用SDK

require_once(dirname(__FILE__)."/../weixin/lib/WxPay.Api.php");
require_once(dirname(__FILE__)."/../weixin/example/WxPay.NativePay.php");
require_once(dirname(__FILE__)."/../weixin/example/WxPay.JsApiPay.php");

//微信统一下单
$input = new WxPayUnifiedOrder();

//中间省略各种参数置入方法....
$inputObj = WxPayApi::unifiedOrder($input);

ThinkPHP5 我记得也支持composer吧 直接用写好的轮子就行 只要轮子是按psr-4 或者psr-0 规范的就行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题