微信支付问题总结【原创】

栏目: 后端 · 前端 · 发布时间: 7年前

内容简介:微信支付问题总结【原创】

下图是在微信公众平台配置信息

微信支付问题总结【原创】

(支付授权目录要写支付页面的路由,支付页面的左斜杠支付页面结束的路由)

微信支付问题总结【原创】

微信支付问题总结【原创】

(文件放在web下)

微信支付问题总结【原创】

在PayController.php写入要操作的对象,以及调用回调函数,该页面有两个action

<?php
/**
 * Created by PhpStorm.
 * User: zmit
 * Date: 5/24/17
 * Time: 6:52 PM
 */
namespace BaseBundle\Controller;

use BaseBundle\Controller\BaseController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;

class PayController extends BaseController
{
 /**
 * WX——jaApipay
 *
 * @param $info
 * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
 */
 public function wxPayJsApiAction($info)
 {
// $info = id-1-key_word
 $info = explode('-', $info);

 if(count($info) >= 4){
 return $this->setError('数据格式不正确');
 }

 $conn = $this->get('database_connection');
 if($info[2] == 3){//收藏视频
 $order_info = $conn->fetchAssoc("SELECT id, price, type_id FROM video WHERE id = ?", array($info[0]));

 if(empty($order_info)){
 return $this->setError('订单号不存在');
 }

 $attach = 1;

 $amount = round($order_info['price'],2)*100;

 //拼接数字 用户id,会员类型id/或者视频id,时长,支付方式/视频收入类型, 支付类型4,当前时间
 $order_number = $info[1].'-'.$info[0].'-'.$info[0].'-2-3-'.date('YmdHis');

 $go_url = $this->generateUrl('user_video', array('video_type_id' => $order_info['type_id'], 'video_id' => $order_info['id']));
 }elseif($info[1] == 4){//升级vip

 $order_info = $conn->fetchAssoc("SELECT u.id, u.vip_type, u.vip_end_date, vp.keep, vp.price, vp.sale_price FROM user u LEFT JOIN vip_type vp ON u.vip_type = vp.id WHERE u.id = ?", array($info[0]));

 if(empty($order_info)){
 return $this->setError('订单号不存在');
 }

 if ($order_info['sale_price'] > 0) {
 $vip_price = $order_info['sale_price'];
 } else {
 $vip_price = $order_info['price'];
 }

 $vip_end_date = $order_info['vip_end_date'];
 $keep = $order_info['keep'];
 if( $vip_end_date == "0000-00-00 00:00:00" || $vip_end_date ==''){
 $vip_end_date = date('Y-m-d H:i:s');
 }
 if(strtotime($vip_end_date) >= time()){
 $vip_end_date = $vip_end_date ;
 }else{
 $vip_end_date = date('Y-m-d H:i:s');
 }

 $vip_end_date = date('Y-m-d H:i:s',strtotime("$vip_end_date +$keep month"));

 $attach = $vip_end_date;

 $amount = round($vip_price,2)*100;
 //拼接数字 用户id,会员类型id/或者视频,时长,支付方式/视频收入类型, 支付类型4,当前时间
 $order_number = $order_info['id'].'-'.$order_info['vip_type'].'-'.$order_info['keep'].'-1-4-'.date('YmdHis');
 $type_id = 1;
 $go_url = $this->generateUrl('user_personal_vip_success');
 }else{
 return $this->showErrorWeb('来源不正确');
 }

 //执行统一下单方法
 ini_set('date.timezone','Asia/Shanghai');

 require_once (dirname(dirname(__FILE__)) . "/wxJsSweep/example/config.php");//导入自己写入的config文件(便于引用)

 //初始化日志

 $logHandler= new \CLogFileHandler(dirname(dirname(__FILE__)) ."/wxJsSweep/logs/".date('Y-m-d').'.log');

 $log = \Log::Init($logHandler, 15);

 //①、获取用户openid

 $tools = new \JsApiPay();

 $openId = $tools->GetOpenid($this->getUrlCurrent());

 //②、统一下单
 $request = $this->get('request');
 $input = new \WxPayUnifiedOrder();

 $input->SetBody("梦航教育视频网站-付款");

 $input->SetOut_trade_no($order_number);
 $input->SetAttach($attach);//附加数据
 $input->SetTotal_fee($amount);
 $input->SetTime_start(date('YmdHis', time()));
 $input->SetTime_expire(date('YmdHis', time() + 600));
 $input->SetNotify_url($request->getSchemeAndHttpHost() . $this->generateUrl('public_pay_wxPayJsApiNotify'));
 $input->SetTrade_type("JSAPI");
 $input->SetOpenid($openId);
 $order = \WxPayApi::unifiedOrder($input);
 if($order['return_code'] == 'SUCCESS' AND $order['result_code'] == 'SUCCESS') {
 $data = array(
 'info' => $tools->GetJsApiParameters($order),
 'go_url' => $go_url
 );

 return $this->render('BaseBundle:Default:pay.html.twig',array('data' => $data));
 }else{
 if(isset($order['err_code_des'])){
 return $this->showErrorWeb($order['err_code_des']);
 }else{
 return $this->showErrorWeb($order['return_msg']);
 }
 }

 }

 /**
 * WX——jaApipay-回调
 *
 * @return JsonResponse
 */
 public function wxPayJsApiNotifyAction()
 {
 require_once dirname(dirname(__FILE__)) . "/wxJsSweep/example/notify.php";//导入回调文件
 //实例化回调
 \Log::DEBUG("begin notify");
 $notify = new \PayNotifyCallBack();
 $notify->Handle(false);
 $callback = $notify->GetValues();
 if($callback['return_code'] == 'SUCCESS') {
 $order_no = $callback['out_trade_no'];//得到之前存入的订单号
 $info = explode('-', $order_no);
 $user_id = $info[0];
 $video_or_vip = $info[1];
 $keep = $info[2];
 $pay_or_type = $info[3];

 $attach = $callback['attach'];//得到之前到期时间
 $amount = $callback['total_fee']/100;

 $payment_no = $callback['transaction_id'];

 //内部代码
 $conn = $this->get('database_connection');
 if($info[4] == 1){
 $conn->insert('finance', array('user_id' => $user_id, 'type_id' => $pay_or_type, 'source' => $video_or_vip, 'payment_no' => $payment_no, 'add_date' => date('Y-m-d H:i:s'), 'amount' => $amount));
 }elseif($info[4] == 2){
 $conn->insert('finance', array('user_id' => $user_id, 'type_id' => $pay_or_type, 'source' => $video_or_vip, 'payment_no' => $payment_no, 'add_date' => date('Y-m-d H:i:s'), 'amount' => $amount));
 }elseif($info[4] == 3){
 $conn->insert('finance', array('user_id' => $user_id, 'type_id' => $pay_or_type, 'source' => $video_or_vip, 'payment_no' => $payment_no, 'add_date' => date('Y-m-d H:i:s'), 'amount' => $amount));
 }elseif($info[4] == 4) {
 $conn->update('user', array('vip_end_date' => $attach), array('id' => $user_id));
 $conn->insert('vip_record', array('user_id' => $user_id, 'vip_type_id' => $video_or_vip, 'vip_price' => $amount, 'vip_keep' => $keep, 'add_date' => date('Y-m-d H:i:s'), 'pay_method' => $pay_or_type));
 $conn->insert('finance', array('user_id' => $user_id, 'type_id' => $pay_or_type, 'source' => $video_or_vip, 'payment_no' => $payment_no, 'add_date' => date('Y-m-d H:i:s'), 'amount' => $amount));
 }
 }
 return new JsonResponse();
 }

}

在实际需要支付的时候,调用函数:

$pay = (int)$vip_type."-".(int)$user_id."-3";
 return $this->redirect($this->generateUrl('public_pay_wxPayJsApi', array('info' => $pay)));

出现的问题

  1. 配置信息填写有误,导致参数获得有误
    1. key
    2. APPID
    3. MCHID
    4. APPSERECT
  2. 证书替换有误

微信支付问题总结【原创】

3.支付授权目录填写有误

转载时请注明出处及相应链接,本文永久地址:http://blog.it985.com/21473.html

微信支付问题总结【原创】

微信支付问题总结【原创】 微信打赏

微信支付问题总结【原创】 支付宝打赏

感谢您对作者ada的打赏,我们会更加努力!    如果您想成为作者,请点我


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C#图解教程

C#图解教程

索利斯 / 苏林、朱晔 / 人民邮电出版社 / 2009-1 / 65.00元

本书是一本广受赞誉的C# 教程。它以图文并茂的形式,用朴实简洁的文字,并辅之以大量表格和代码示例,精炼而全面地阐述了最新版C# 语言的各种特性,使读者能够快速理解、学习和使用C#。同时, 本书还讲解了C#与VB 、C++ 等主流语言的不同点和相似之处。 本书是一本经典的C# 入门书,不仅适合没有任何编程语言基础的初级读者,而且还是有VB 、C++ 等语言基础的C# 初学者的最佳选择。一起来看看 《C#图解教程》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具