微信支付开发php,微信回调

微信支付:
1、申请开通微信支付(需要微信公众号),这块是同事去申请的,应该不难,对照说明去申请开通。
2、成功开通后,收到审核通过的邮件(配置文件用),内容包括:
    微信支付商户号:xxxxxxxx
    商户平台登录帐号:xxxxxxxx
    商户平台登录密码:xxxxxxxx
    申请对应的公众号:xxxxxxxx
    公众号APPID:xxxxxxxx
3、开发sdk包下载,服务端用的是PHP,下载地址:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
4、sdk配置文件
解压sdk包后,有以下文档:
/cert
/doc
/example
/lib
/logs
index.php

(1)index.php修改jsapi支付链接地址为商户网站的支付地址,如:
<a href="http://商户网址/example/jsapi.php">JSAPI支付</a>
(2)/lib/WxPay.Config.php 修改配置文件:
    const APPID = '邮件中';
    const MCHID = '邮件中';
    const KEY = '自定义';//自定义密钥,并且登录https://pay.weixin.qq.com/index.php/account/api_cert ,API安全,设置密钥(自定义)。
    const APPSECRET = '微信公众号登录(开发者中心AppSecret)';
(3) /example/WxPay.JsApiPay.php存在BUG:
curl_setopt($ch, CURLOP_TIMEOUT, 30);
修改为:
curl_setopt($ch, CURLOPT_TIMEOUT, 30);

5、微信公众号配置
登录微信公众平台-》微信支付-》开发配置-》测试授权目录(修改),填写支付测试目录,一般是二级或三级目录(如:www.商户.com/sdk/example/)
再添加1个测试白名单(即微信账号)

再确认下:开发者中心-》网页授权获取用户基本信息 的域名和测试目录是同一域名

【注:微信支付在电脑浏览器不好调试,必需有openid才行,所以可以在请求接口中手动加上openid来测试,这样就可以直接获取微信返回的结果数据了】

如:$openId     = 'oTKl-uDPNkkz3yutfY2TJgNy3s4I';//mike

6、上传sdk测试支付。


--------------------------------------------------------------------------------------------------------------------------

微信回调:

回调地址:在支付时设置

$input->SetNotify_url("xxx/third_party/wx/example/notify.php");
框架里可能是这样

$input->SetNotify_url(BASEURL."/verify/notify_wx/");
微信的Log类和我的项目框架中Log类重名了,导致无法加载报错。解决办法:给微信Log类加上命名空间。log.php中第一行加上namespace WXPAY;

notify.php代码类似这样:

ini_set('date.timezone','Asia/Shanghai');
error_reporting(E_ERROR);

require_once "../lib/WxPay.Api.php";
require_once '../lib/WxPay.Notify.php';
require_once 'log.php';
require_once "AmPayNotifyCallBack.php";
//初始化日志
$logHandler= new \WXPAY\CLogFileHandler("../logs/".date('Y-m-d').'.log');
$log = \WXPAY\Log::Init($logHandler, 15);
\WXPAY\Log::DEBUG("begin notify".time());
$notify = new PayNotifyCallBack();
//print_r($_REQUEST);
$notify->Handle(false);

            //处理回调数据  参见文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7
            $returnValues   = $notify->GetValues();
            //交易成功
            if(!empty($returnValues['result_code']) && $returnValues['result_code'] == 'SUCCESS'){
                //商户逻辑处理,如订单状态更新为已支付
                
            }            
            
            echo $notify->ToXml();//返回给微信确认

我把类PayNotifyCallBack单独放到文件中了,这样方便框架加载。当然不要忘了里面用到Log类的地方都要加上命名空间。如:

use WXPAY\Log;
use WXPAY\CLogFileHandler;



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值