微信支付(JsApi)总结

个人认为最佳的学习方式是抛开内容繁重的文档,先去https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 下载个php的demo 边阅读源码变看文档 这种方式我觉得最有效 顺便吐槽下Java居然只有刷卡支付的栗子。。。

这篇博文不会很详细的介绍demo的源码 其实我们有时候业务并不需要使用微信支付的全部功能

还有例如Wxpay.Data.php这个文件 这个文件接近3000行
其实就是维护一个内部数组

protected $values = array();

同设置get set为这个数组设置参数,例如签名等等 大约有几十个参数
最后将这个数组转为xml等等给微信服务器做交互等等 如果要全部说清楚 那么你和看微信文档没什么区别 反而难上手

如果你用的是php 那么你把这个demo作为sdk我觉得是最快的方法,然后再阅读下本博文,基本就可以做出微信支付
如果你用的是java等语言 那么阅读完本博文之后还需继续啃下各个签名算法,然后再啃啃文档。所以一定程度上说,php是最好的语言,也不无道理哈哈(不喜勿喷),可能因为实现的不方便,微信才没有给出jsapi的Java实现版吧

1,设置基本的参数 在Wxpay.Config.php里可以看到

如果你没有认证的可以微信支付的公众号 不要紧 可以使用demo自带的四个参数 支付的钱是转到微信测试账号里 金额设置为0.01即可 土豪随意

有四个参数要设置 这里就不说了

//=======【基本信息设置】=====================================
    //
    /**
     * TODO: 修改这里配置为您自己申请的商户信息
     * 微信公众号信息配置
     * 
     * APPID:绑定支付的APPID(必须配置,开户邮件中可查看)
     * 
     * MCHID:商户号(必须配置,开户邮件中可查看)
     * 
     * KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置)
     * 设置地址:https://pay.weixin.qq.com/index.php/account/api_cert
     * 
     * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置),
     * 获取地址:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=2005451881&lang=zh_CN
     * @var string
     */

2,认证并获取获取用户openid

通过向微信公众平台认证 获取一个code 通过这个code来换取用户的openid
openid其实就是微信用户在你的公众号上的唯一标识
demo的源码如下
首先检测你当前(也就是你要执行支付的页面)有没有收到get参数
如果有的话 就通过code调用获取openid的方法

public function GetOpenid()
    {
   
        //通过code获得openid
        if (!isset($_GET['code'])){
            //触发微信返回code码
            $baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']);
            $url = $this->__CreateOauthUrlForCode($baseUrl);
            Header("Location: $url");
            exit();
        } else {
            //获取code码,以获取openid
            $code = $_GET['code'];
            $openid = $this->getOpenidFromMp($code);
            return $openid;
        }
    }

如果没有get到code的话 将当前(或者你要执行支付页面的其他url)拼接成一个baseurl
调用__CreateOauthUrlForCode方法 并跳转到生成出来的url
我们来看看生成认证url的方法

private function __CreateOauthUrlForCode($redirectUrl)
    {
   
        $urlObj["appid"] = WxPayConfig::APPID;
        $urlObj["redirect_uri"] = "$redirectUrl";
        $urlObj["response_type"] = "code";
        $urlObj["
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值