2015-05-20 18:55:34 RegExp_Leo 阅读数 1373
  • 微信支付开发-微信公众号开发12-微信开发php

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

    27830 人正在学习 去看看 秦子恒
//以下是封装的消息发送转换json方法
//发送接口
	public static String POST_URL = WeCharConstant.MESSAGE_SEND_URI;
	/**
	 * text文本消息
	 * @param isToAll 是否发送所有人 为空情况下必须传入groupId
	 * @param groupId 群组Id
	 * @param content 发送内容
	 * @return
	 */
	public static String SendTextMsg(Boolean isToAll,String groupId,String content){
		String PostData = "{\"filter\": {\"is_to_all\": %s,\"group_id\":%s},\"msgtype\": \"text\",\"text\": {\"content\": %s}}";
		return String.format(PostData, isToAll,groupId,content);
	}
	/**
	 * image图片消息
	 * @param isToAll
	 * @param groupId
	 * @param mediaId 多媒体上传后图片 mediaId
	 * @return
	 */
	public static String SendImageMsg(Boolean isToAll,String groupId,String mediaId){
		String PostData = "{\"filter\": {\"is_to_all\": %s,\"group_id\":%s},\"msgtype\": \"image\",\"image\": {\"media_id\": %s}}";
		return String.format(PostData, isToAll,groupId,mediaId);
	}
	
	
	/**
	 * voice消息
	 * @param isToAll
	 * @param groupId
	 * @param mediaId 多媒体上传后 mediaId
	 * @return
	 */
	public static String SendVoiceMsg(Boolean isToAll,String groupId,String mediaId){
		String PostData = "{\"filter\": {\"is_to_all\": %s,\"group_id\":%s},\"msgtype\": \"voice\",\"voice\": {\"media_id\": \"%s\"}}";
		return String.format(PostData, isToAll,groupId,mediaId);
	}
	
	/**
	 * mpnews图文消息
	 * @param isToAll
	 * @param groupId
	 * @param mediaId 图文素材上传后 mediaId
	 * @return
	 */
	public static String SendMpNewsMsg(Boolean isToAll,String groupId,String mediaId){
		String PostData = "{\"filter\": {\"is_to_all\": %s,\"group_id\":%s},\"msgtype\": \"mpnews\",\"mpnews\": {\"media_id\":\"%s\"}}";
		return String.format(PostData, isToAll,groupId,mediaId);
	}

有偿提供微信开发源码技术:

qq:363961683


2019-12-12 20:18:56 qq_31752115 阅读数 12
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

微信公众号的开发者配置中的微信开发工具中明明已经正确绑定开发者账号,但微信开发者工具还是弹出“未绑定网页开发者”,坑了好久,记录下

原因:

1.微信公众号的开发者配置中的微信开发工具中没有绑定开发者账号;

2.调用支付授权接口所传递的参数中的appid和公众服务号的appid 。

我就是第2个原因,我是查看授权接口的参数才找到appid不对号,坑了好久。找到原因后我就找到ecshop的平台后台管理系统的系统设置中的支付方式的微信支付,编辑配置对应服务号的appid ,解决完毕。

2015-07-06 14:28:23 huobanbengkui 阅读数 1624
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

    微信无孔不入的插入到我们生活中,简直是烦得受不了;嘻嘻,同样是不是也方便的杠杠的,省去了我们好多繁琐的手机验证注册的事情。

因此, 在你的微信中接入微信授权登陆和微信支付,是一件让各位同学爽爽的事情;

     首先,我们谈谈微信授权登陆:

1. 到微信开发平台注册相关APP(地址:https://open.weixin.qq.com),现在是等待审核成功后才能获取到对应的key和secret;获取成功后需要单独申请开通登录和支付接口,如图

1411370441623372.png

2.下载SDK,导入工程中,如果出现以下错误,只需要用切换到Demo中的SDK即可

3.配置项目文件 (详见:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417694084&token=&lang=zh_CN)

4. 接下来,就是填写我们最擅长的代码了:

4.1:向微信注册:在AppDelegate.m 中引入#import "WXApi.h",并接受WXApiDelegate代理,

            然后注册:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [WXApi registerApp:@"wx9f6ca5429bd6c702" withDescription:@"Test"];
    return YES;
}

4.2:实现代理和回调语句

//第三方程序,向微信发送请求,sendReq请求调用后,会切到微信终端程序界面
- (void)onResp:(BaseResp *)resp

{

/*

    ErrCode ERR_OK = 0(用户同意)  
    ERR_AUTH_DENIED = -4(用户拒绝授权)  
    ERR_USER_CANCEL = -2(用户取消)  
    code    用户换取access_token的code,仅在ErrCode为0时有效  
    state   第三方程序发送时用来标识其请求的唯一性的标志,由第三方程序调用sendReq时传入,由微信终端回传,state字符串长度不能超过1K  
    lang    微信客户端当前语言  
    country 微信用户当前国家信息  
    */        
    SendAuthResp *aresp = (SendAuthResp *)resp;

}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return [WXApi handleOpenURL:url delegate:self];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return [WXApi handleOpenURL:url delegate:self];
}

5.完成准备工作,我们开始 实现授权登录功能

 5.1 发送登录信息

- (IBAction)pushMessage:(id)sender {
//    对于iOS应用,考虑到iOS应用商店审核指南中的相关规定,建议开发者接入微信登录时,先检测用户手机是否已安装微信客户端(使用sdk中isWXAppInstalled函数 ),对未安装的用户隐藏微信登录按钮,只提供其他登录方式(比如手机号注册登录、游客登录等)。
    //判断是否安装微信
    [WXApi isWXAppInstalled];
    
    //第一步,请求Code; 第二步,根据Code获取token;第三步,根据token和API获取用户相关数据
    //获取token
    SendAuthReq *req = [[SendAuthReq alloc] init];
//    应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
    //微信如何识别发起请求者,通过注册获得到得Key
    req.scope = @"snsapi_userinfo";
    req.state = @"345678";
    [WXApi sendReq:req];
}

5.2 当在微信界面点击取消或授权以后,会调用AppDelegate.m中的- (void)onResp:(BaseResp *)resp方法

在resp中会带有code信息,SendAuthResp *aresp = (SendAuthResp *)resp;    

    if (aresp.errCode== 0) {    
        NSString *code = aresp.code;       
    }
5.3 通过Code获得token

-(void)getAccess_token:(NSString *)code
{
    
//    利用GCD来获取对应的token和openID.
    //https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
    NSString *appid = @"";  //注册应用时获得的key
    NSString *sercet = @"";//注册应用时获得的sercet
    
    NSString *url = [NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code", appid, sercet, code];
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSURL *zoneUrl = [NSURL URLWithString:url];
        NSString *zoneStr = [NSString stringWithContentsOfURL:zoneUrl encoding:NSUTF8StringEncoding error:nil];
        NSData *data = [zoneStr dataUsingEncoding:NSUTF8StringEncoding];
        dispatch_async(dispatch_get_main_queue(), ^{
            if (data) {
                NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
                /*
                 {
                 "access_token" = "OezXcEiiBSKSxW0eoylIeJDUKD6z6dmr42JANLPjNN7Kaf3e4GZ2OncrCfiKnGWiusJMZwzQU8kXcnT1hNs_ykAFDfDEuNp6waj-bDdepEzooL_k1vb7EQzhP8plTbD0AgR8zCRi1It3eNS7yRyd5A";
                 "expires_in" = 7200;
                 openid = oyAaTjsDx7pl4Q42O3sDzDtA7gZs;
                 "refresh_token" = "OezXcEiiBSKSxW0eoylIeJDUKD6z6dmr42JANLPjNN7Kaf3e4GZ2OncrCfiKnGWi2ZzH_XfVVxZbmha9oSFnKAhFsS0iyARkXCa7zPu4MqVRdwyb8J16V8cWw7oNIff0l-5F-4-GJwD8MopmjHXKiA";
                 scope = "snsapi_userinfo,snsapi_base";
                 }
                 */
               
                [self getUserInfo:[dic objectForKey:@"access_token"] openid:[dic objectForKey:@"openid"]];
                
            }
        });
    });
}

5.4 根据token 和openid 获得用户跟人信息

-(void)getUserInfo:(NSString *)token openid:(NSString *)openid
{
    NSString *url =[NSString stringWithFormat:@"https://api.weixin.qq.com/sns/userinfo?access_token=%@&openid=%@",token,openid];
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSURL *zoneUrl = [NSURL URLWithString:url];
        NSString *zoneStr = [NSString stringWithContentsOfURL:zoneUrl encoding:NSUTF8StringEncoding error:nil];
        NSData *data = [zoneStr dataUsingEncoding:NSUTF8StringEncoding];
        dispatch_async(dispatch_get_main_queue(), ^{
            if (data) {
                NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
                NSLog(@"%@",dic);
                /*
                 {
                 city = Haidian;
                 country = CN;
                 headimgurl = "http://wx.qlogo.cn/mmopen/FrdAUicrPIibcpGzxuD0kjfnvc2klwzQ62a1brlWq1sjNfWREia6W8Cf8kNCbErowsSUcGSIltXTqrhQgPEibYakpl5EokGMibMPU/0";
                 language = "zh_CN";
                 nickname = "xxx";
                 openid = oyAaTjsDx7pl4xxxxxxx;
                 privilege =     (
                 );
                 province = Beijing;
                 sex = 1;
                 unionid = oyAaTjsxxxxxxQ42O3xxxxxxs;
                 }
                 */        
            }
        });
        
    });
}

6.到此,微信授权登录,然后获得个人相关信息,介绍完毕。


———********************************************************************************************————

下边开始介绍微信支付功能

微信支付的配置方法和微信授权登陆的配置方法一样。

微信支付分为三个阶段,1.通过统一下单API生成预付订单;2.通过预付订单获得到得数据发起微信支付请求;3.处理支付回调结果,判断是否支付成功;

1.通过统一下单API生成预付订单,

   在这时候分两种两种情况,一种是有后台生成,一种时候前端生成;

2。具体使用方法,详情可以在Demo中看到。









2018-11-20 12:21:37 qq_43718131 阅读数 1076
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

分享一下我老师大神的人工智能教程吧。零基础,通俗易懂!风趣幽默!http://www.captainbed.net/

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                     

开发微信支付的过程中,可能所有的流程都搞明白了,可能在配置公众号的支付授权目录时会遇到问题,会不大好理解。

如果支付授权目录没有设置正确,在请求JSAPI时,会提示“3当前页面的url未注册”的错误。

怎么设置呢,首先要看你支付的当前页面URL,比如是:

  http://www.xxx.com/wxpay/js_api_call.php

你就必须填写:

  http://www.xxx.com/wxpay/

假如是:

   http://www.xxx.com/wxpay/order/id/56.html

你就必须写:

  http://www.xxx.com/wxpay/order/id/    
  • 1

假如是:

   http://www.xxx.com/wxpay/order?id=56

你就必须写:

  http://www.xxx.com/wxpay/order/  
  • 1

看出规律了吧,就是把最后一个反斜杠后面的内容去掉就OK了

内容参考:  http://www.thinkphp.cn/code/1620.html

           

给我老师的人工智能教程打call!http://www.captainbed.net/

这里写图片描述
2016-12-11 19:59:34 u013046097 阅读数 3394
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

   微信授权和支付,其实大家在平时多少都接触过,微信授权比如你去万达那里免费抓娃娃,扫完二维码需要你授权关注一个东西,这些还是比较常见的。微信支付现在更普遍了,现在买东西吃饭啥的都可以微信支付。我们用的比较普遍,但这些到底是如何实现的还真没了解过,听完师姐的技术分享,感觉需要好好总结一下。

   打开师姐给的文档链接,发现实习的时候也接触了一部分微信的功能,比如微信消息推送,账户管理什么的,都是人家提供的东西,很详细,确实该好好了解了解。微信公众号平台开发者文档

   

   一、微信授权

    1 第一步:用户同意授权,获取code

    2 第二步:通过code换取网页授权access_token

    3 第三步:刷新access_token(如果需要)

    4 第四步:拉取用户信息(需scope为 snsapi_userinfo)

    5 附:检验授权凭证(access_token)是否有效

    具体的文档中很详细,就不多copy了,关键自己要去实践实践。授权页面确实是很熟悉的:

      

   二、微信支付

    微信支付功能现在真的很常见,很多地方都在用,可以的话一定要自己实践一下。

    1、交互细节:
    以下是支付场景的交互细节,请认真阅读,设计商户页面的逻辑:

   (1)用户打开商户网页选购商品,发起支付,在网页通过JavaScript调用getBrandWCPayRequest接口,发起微信支付请求,用户进入支付流程。

   (2)用户成功支付点击完成按钮后,商户的前端会收到JavaScript的返回值。商户可直接跳转到支付成功的静态页面进行展示。

   (3)商户后台收到来自微信开放平台的支付成功回调通知,标志该笔订单支付成功。

    注:(2)和(3)的触发不保证遵循严格的时序。JS API返回值作为触发商户网页跳转的标志,但商户后台应该只在收到微信后台的支付成功回调通知后,才做真正的支付成功的处理。

    2、业务流程:


   商户系统和微信支付系统主要交互:

   1、商户server调用统一下单接口请求订单,api参见公共api【统一下单API

   2、商户server接收支付通知,api参见公共api【支付结果通知API

   3、商户server查询支付结果,api参见公共api【查询订单API

   如此普遍使用的功能,自己一定要实践一下才行。


微信支付开发配置

阅读数 2174

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