ThinkPHP 微信支付及退款

这篇博客详细介绍了如何在ThinkPHP框架下实现微信支付功能,并且涵盖了退款的处理。开发者需要配置appid、商户号和商户密钥,支付部分包括代码实现,退款则强调了必须提供的订单号和订单金额。
摘要由CSDN通过智能技术生成

1.以下代码修改完自己的
2.appid
3.商户号
4.商户密钥

微信支付

	//微信支付
	public function index(){
   
		//接收用户下单信息
		$data = [];
		$data['sorts'] = input('sorts');//套餐分类
		$data['sciencename']=input('sciencename');//景区名称
		$data['price']=input('price');//订单价格
		$data['create_time']=time();//下单时间
		$data['phone']=input('phone');//用户手机号
		$data['userid']=input('userid');//用户id
		$data['menuid']=input('menuid');//套餐id
		$data['scienceid'] = input('scienceid');//景区ID
		$data['num'] = input('num');//景区ID
		
		if(input('type')){
   
			$data['type']=input('type');//1为音频套餐
		}
		
		$user = Db::name('user_info')->where(array('id' => $data['userid']))->field('openid')->find();//获取当前用户openID
       
		
		//发起微信支付,调用统一下单支付接口
		$fee = $data['price'];//支付金额
		$appid =        '用到的appid';//appid.如果是公众号 就是公众号的appid
		$body =         $data['sorts'];
		$mch_id =       '用到的商户号';  //商户号
		$nonce_str =    $this->nonce_str();//随机字符串
		$notify_url =   'https://ht.hongtuzhijian.top/api/order/notifyurl'; //回调的url
		$openid =       $user['openid'];
		$time = time();
		$year = date('Y',$time);
		$rand = rand(000000000,999999999);
		$out_trade_no = $year.$rand;//订单号
		
		//$out_trade_no = $this->order_number($openid);//商户订单号
		$spbill_create_ip = $_SERVER["REMOTE_ADDR"];//服务器的ip;
		$total_fee =    $fee*100;// 微信支付单位是分,所以这里需要*100
		$trade_type = 'JSAPI';//交易类型 默认
		
		$data['order_no']=$out_trade_no;
		//echo json_encode($data);exit;
		$order = Db::name('user_order')->insert($data);
		
	 
		//这里是按照顺序的 因为下面的签名是按照顺序 排序错误 肯定出错
		$post['appid'] = $appid;
		$post['body'] = $body;
		$post['mch_id'] = $mch_id;
		$post['nonce_str'] = $nonce_str;//随机字符串
		$post['notify_url'] = $notify_url;
		$post['openid'] = $openid;
		$post['out_trade_no'] = $out_trade_no;
		$post['spbill_create_ip'] = $spbill_create_ip;//用户终端的ip
		$post['total_fee'] = $total_fee;//总金额 
		$post['trade_type'] = $trade_type;
		
		$sign = $this
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 ThinkPHP 框架中的官方扩展 think-pay 来实现微信支付功能。具体操作可以参考如下步骤: 1. 安装 think-pay 扩展 在项目根目录下执行以下命令: ``` composer require yansongda/pay -vvv ``` 2. 配置支付参数 在 config 目录下创建 pay.php 配置文件,填写微信支付相关参数,例如: ```php <?php return [ // 微信支付参数 'wechat' => [ 'appid' => 'your_appid', 'mch_id' => 'your_mch_id', 'key' => 'your_key', 'notify_url' => 'your_notify_url', 'cert_client' => 'path/to/your/apiclient_cert.pem', // optional,退款、红包等需要用到 'cert_key' => 'path/to/your/apiclient_key.pem', // optional,退款、红包等需要用到 ], ]; ``` 3. 编写支付代码 在控制器中编写支付代码,例如: ```php <?php namespace app\index\controller; use think\Controller; use think\facade\Config; use Yansongda\Pay\Pay; class PayController extends Controller { // 微信支付 public function wechatPay() { // 获取支付参数 $params = [ 'out_trade_no' => 'your_out_trade_no', // 商户订单号 'total_amount' => 1, // 订单总金额,单位为分 'subject' => 'your_subject', // 订单标题 ]; // 发起微信支付 $pay = Pay::wechat(Config::get('pay.wechat'))->app($params); // 返回支付结果 return $pay; } } ``` 4. 处理支付结果 在支付回调页面中处理支付结果,例如: ```php <?php namespace app\index\controller; use think\Controller; use think\facade\Request; use think\facade\Config; use Yansongda\Pay\Pay; class NotifyController extends Controller { // 微信支付回调 public function wechatNotify() { // 获取支付回调参数 $data = Request::param(); // 处理支付回调 $pay = Pay::wechat(Config::get('pay.wechat'))->verify($data); if ($pay->return_code === 'SUCCESS' && $pay->result_code === 'SUCCESS') { // 支付成功,处理业务逻辑 // ... // 返回支付成功结果 return Pay::wechat(Config::get('pay.wechat'))->success(); } else { // 支付失败,返回支付失败结果 return Pay::wechat(Config::get('pay.wechat'))->fail(); } } } ``` 以上就是使用 ThinkPHP 实现微信支付的基本步骤,具体细节还需根据实际情况进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值