2018-07-29 23:25:41 hi_pengbo 阅读数 294
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27766 人正在学习 去看看 秦子恒

<?php

/**
  * wechat php test
  */


//define your token

define("TOKEN", "your token");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }
    
    public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        if (!empty($postStr)){
                $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);
                $time = time();
                $textTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            <FuncFlag>0</FuncFlag>
                            </xml>";
                if(!empty( $keyword ))
                {
                    $msgType = "text";
                    $contentStr = "Welcome to wechat world!";
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                    echo $resultStr;
                }else{
                    echo "Input something...";
                }
        }else {
            echo "";
            exit;
        }
    }

    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode($tmpArr);
        $tmpStr = sha1($tmpStr);
        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }
}
?>

2019-09-26 17:01:06 woshimeihuo 阅读数 621
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27766 人正在学习 去看看 秦子恒
1.登录微信公众号平台

https://mp.weixin.qq.com

  • 1.1选择开发者工具
    在这里插入图片描述
  • 1.2选择web开发者工具
    在这里插入图片描述
  • 1.3邀请绑定即可
    在这里插入图片描述

2.登录微信小程序

https://mp.weixin.qq.com

在这里插入图片描述

2018-08-27 16:20:02 a190943540 阅读数 896
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27766 人正在学习 去看看 秦子恒

最近学习微信开发,测试号的接口配置搞得我头大.

后来看了柳峰老大的微信公众账号开发教程第3篇.简直是曙光.

由于老大的文章是2013年的所以我稍微改动,以ssm框架记录.以防忘记.

首先域名.没有域名的小伙伴下载natapp内网穿透工具(官网有教程).

natapp启动后:

高光部分复制到URL中,后面再追加项目名和请求地址如:

之后就是接收请求,官方文档提示

编辑一个工具类

public class CheckSignature {
    
    static String token = "ligy0510";
    
    /**
     * 签名验证
     * @param signature
     * @param timestamp
     * @param nonce
     * @return
     */
    public static boolean checkSignature(String signature, String timestamp, String nonce) {
        // 1.将token、timestamp、nonce三个参数进行字典序排序
        String[] arr = new String[] { token, timestamp, nonce };
        Arrays.sort(arr);

        // 2. 将三个参数字符串拼接成一个字符串进行sha1加密
        StringBuilder content = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }
        MessageDigest md = null;
        String tmpStr = null;
        try {
            md = MessageDigest.getInstance("SHA-1");
            // 将三个参数字符串拼接成一个字符串进行sha1加密
            byte[] digest = md.digest(content.toString().getBytes());
            tmpStr = byteToStr(digest);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

        content = null;
        // 3.将sha1加密后的字符串可与signature对比,标识该请求来源于微信
        return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
    }
    
    /**
     * 将字节数组转换为十六进制字符串
     * 
     * @param byteArray
     * @return
     */
    private static String byteToStr(byte[] byteArray) {
        String strDigest = "";
        for (int i = 0; i < byteArray.length; i++) {
            strDigest += byteToHexStr(byteArray[i]);
        }
        return strDigest;
    }
 
    /**
     * 将字节转换为十六进制字符串
     * 
     * @param mByte
     * @return
     */
    private static String byteToHexStr(byte mByte) {
        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
        char[] tempArr = new char[2];
        tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
        tempArr[1] = Digit[mByte & 0X0F];
 
        String s = new String(tempArr);
        return s;
    }

controller中调用CheckSignature

@GetMapping("/check.do")
    @ResponseBody
    public String ckeck(String signature, String timestamp, String nonce,String echostr) {
        if(CheckSignature.checkSignature(signature, timestamp, nonce)){
            return echostr;
        }
        return "";
    }

完成后点击 提交 

成功!!

 

工具类代码均来自:https://blog.csdn.net/godhexin/article/details/81084239  侵删

2016-05-30 14:57:38 sj452857582 阅读数 12685
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27766 人正在学习 去看看 秦子恒
昨天跟朋友谈到微信公众号的事情,说到帮他做一个微信公众号,于是今天在折腾这个,在微信页面添加服务器配置之后,点提交,自己搭建的web服务器收到了微信转发过来的请求,然后按要求返回传过来的随机字符串之后,微信页面提示请求URL超时,于是就觉得很奇怪,服务器已经接收了请求了啊,也返回随机字符串。在网上搜了一下可能是ip变化的原因,因为用的自己电脑做的外网映射,用的nat123工具,可能是这个原因,多提交几次就成功了,只是不稳定而已,前期自己开发测试一下够了。
2015-04-14 21:13:42 growing_IT_bird 阅读数 439
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27766 人正在学习 去看看 秦子恒
用Java实现成为微信开发者


1、微信开发的数据交互方式
公众平台消息接口为开发者提供了与用户进行消息交互的能力。对于成功接入消息接口的公众账号,当用户发消息给公众账号时,微信公众平台服务器会使用HTTP请求对接入的网址进行消息推送,第三方服务器可通过响应包返回个性的回复,从而达到回复消息的目的。简单地说,就是公众账号可以使用自己的程序来和用户对话。(摘自http://book.2cto.com/201309/33610.html)


2、微信开发者的服务支持
由以上数据交互方式开出看出,必须有  微信公众平台、第三方服务器

3、成为微信开发者
成为微信开发者要通过修改配置,即填写URL、token、和生成EncodingAESKey
认证有servlet完成,代码要有一下代码文件


//weixinServlet.java第三方服务器的入口
public class weixinServlet extends HttpServlet{
private static final long serialVersionUID = 4440739483644821986L;


/**
* 确认请求来自微信服务器
  */


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 微信加密签名
String signature = request.getParameter("signature");
// 时间戳
String timestamp = request.getParameter("timestamp");
// 随机数
String nonce = request.getParameter("nonce");
// 随机字符串
String echostr = request.getParameter("echostr");
PrintWriter out = response.getWriter();
// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (SignUtil.checkSignature(signature, timestamp, nonce)) {
out.print(echostr);
}
out.close();
out = null;
}
}




//SignUtil.java签名校验文件在servlet文件中调用












public class SignUtil {
// 与接口配置信息中的Token要一致
private static String token ="jdl";


/**
* 验证签名
* @param signature
* @param timestamp
* @param nonce
* @return
*/


public static boolean checkSignature(String signature, String timestamp,
String nonce) {
String[] arr = new String[] { token, timestamp, nonce };
// 将token、timestamp、nonce三个参数进行字典序排序
Arrays.sort(arr);
StringBuilder content = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
content.append(arr[i]);
}
MessageDigest md = null;
String tmpStr = null;
try {
md = MessageDigest.getInstance("SHA-1");
// 将三个参数字符串拼接成一个字符串进行sha1加密
byte[] digest = md.digest(content.toString().getBytes());
tmpStr = byteToStr(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
content = null;
// 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
}


/**
* 将字节数组转换为十六进制字符串
* @param byteArray
* @return
*/


private static String byteToStr(byte[] byteArray) {
String strDigest = "";
for (int i = 0; i < byteArray.length; i++) {
strDigest += byteToHexStr(byteArray[i]);
}
return strDigest;
}


/**
* 将字节转换为十六进制字符串
* @param mByte
* @return
*/


private static String byteToHexStr(byte mByte) {
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
'B', 'C', 'D', 'E', 'F' };
char[] tempArr = new char[2];
tempArr[0] = Digit[(mByte >>> 4) & 0X0F];  // 取一个字节的高4位,然后获得其对应的十六进制字符
tempArr[1] = Digit[mByte & 0X0F];//  取一个字节的低4位,然后获得其对应的十六进制字符  
String s = new String(tempArr);
return s;
}
}




//配置web.xml文件的servlet




<servlet>
  <servlet-name>weixinServlet</servlet-name>
  <servlet-class>com.yc.servlets.weixinServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>weixinServlet</servlet-name>
  <url-pattern>/weixinServlet</url-pattern>
 </servlet-mapping>










做到这里,准备工作已经完成以下的步奏我只是提示一下




1、在新浪云上发布你的项目
2、将token、URL填写,生成EncodingAESKey
3、选择明文模式
4、提交




注意:URL是项目的URL+/weixinServlet

微信开发者

阅读数 2

没有更多推荐了,返回首页