公众号微信公众平台支付接口微信支付能给我带来多少客源?

温州便利店微信支付享受优惠顾客排长队抱怨_联商网资讯中心
温州便利店微信支付享受优惠 顾客排长队抱怨
  昨天,“周二微信支付日”活动来到浙江,前20万名消费者在省内人本、十足、、等超市以及消费使用微信支付,即可享受上述优惠。根据腾讯数据,截至昨晚10时,活动名额只剩下约1.2万个。记者昨天从市区多家参与活动商店了解到,十足便利店和屈臣氏商店反响热烈,而超市反响不大。
  有些店里,8分钟也刷不出一个单
  昨天,记者走访了市区近10家超市及便利店,发现世纪、十足便利店及屈臣氏商店门内外、货架及收银处均布置了微信支付日的宣传海报,市民只要消费满10元以上,打开微信将条码及二维码调出,给店员扫描即可减免10元。
  “还没好啊,我头昏脑涨,血啊等喷出!”“还要等多久啊!”“今天人怎么多成这样!”昨天下午6时许,十足便利店春秋社区店收银处有10余名顾客一字排开,等待用手机微信支付(如图),因为网络支付很卡,不少顾客发起牢骚,有些人刚走进便利店看到这阵势,扭头就走。
  记者估算发现,每名用微信支付的顾客平均要花5分钟,才能完成买单,有顾客的单笔交易刷了8分钟还是刷不出来,只好重刷。收银处工作人员说:“ 现在正好是下班高峰期,大家都过来用微信支付买东西,网络就慢了。”
  十足谢池巷店、开太店及矮凳桥店的店员都表示,相较于平常,昨天的客流量大了不少,尤其是中午和下班后。记者在市区开太百货的屈臣氏商店也看到,用微信支付排队埋单的女生排了两队,多名店员都说因该活动,客流量有所增加。
  昨晚11时许,市民许先生致电温都称,在看到该优惠活动后,他刚赶去温迪路一家十足便利店购物,却被店员告知优惠名额已满。
  市不少顾客被提醒才用微信支付
  记者在市区人本超市白鹿洲店、世纪联华安泰店等几家超市看到,虽然超市内布置了许多微信支付日活动的宣传单,但收银处并没有出现排长队的拥挤现象。
  昨天下午3时许,人本超市白鹿洲店收银处不少顾客在收银人员的提醒下,拿出手机用微信支付。记者问了20来名顾客,只有一名年轻顾客说是因为朋友圈看到消息才来的,不过她住得很近。
  还有些顾客坚持用现金付款。昨天下午5时许,记者在世纪联华安泰店看到近10分钟内,没有人选择用微信支付方式付款。一名40来岁的张姓女士说:“微信没有绑定银行卡,现场弄也麻烦,来超市买一般都超过100元,10元钱优惠没有也就算了。”
  去年的支付宝线下优惠,各大参与的超市被挤到关门,便利店货架被搬空,而这次的微信支付优惠活动,却没有上次的状况。对此,有市民分析,上次超市最多减免50元、便利店最多减免20元,这次只减免10元,不太会有人特意去超市蹭这10块钱,“况且有前车之鉴,大家应该理性了许多”。
  十足便利店的一名店员表示,人流量虽然大了,但顾客大多是选购10元刚好出头的商品,就近“蹭”个优惠。
  超市有限公司内部人员透露,昨天全省约8万人使用微信支付功能在十足和人本消费,我市目前消费人次几何尚没有统计数据。
  (来源:温州网C温州都市报 作者:朱O婧)
欢迎关注联商网,扫一扫关注【联商网微信订阅号】我们只为您推送最真实,最有价值的行业资讯
你可能感兴趣的内容
新闻关注榜
联商网版权所有 &iOS客户端的微信支付接入
对于一个iOS的APP,如果有一些虚拟的商品或者服务需要通过在线支付来收费的话,一般有几种主流的选择。
如果是通过APP调用支付平台APP的思路的话,一个是调起支付宝客户端,一个则是调起微信支付。
实际上,从代码的角度,调起支付APP就是把一些关键的参数通过一定方式打包成为一个订单,然后发送到支付平台的服务器。所以,只要搞清楚了参数设置,搞清楚了每个支付平台的SDK里面一些关键API的使用,基本上就可以很简单的支持支付。
今天记录一下客户端里面,如何支持微信支付。首先。我们要仔细阅读一下微信SDK的开发文档,了解一下整个支付的大概流程。
然后根据提示,把相应的SDK下来,所谓的SDK,也就是一个链接库和两个头文件,很简单。
下载完毕,需要把SDK导入到工程里面,并且配置一下工程。因为开发者文档已经有详细描述,这里就不再复述。
从文档看到,调起微信支付其实最核心的是一下这么一段
PayReq *request = [[[PayReq alloc] init] autorelease];
request.partnerId = @;
request.prepayId= @fc314aa427;
request.package = @Sign=WXP
request.nonceStr= @a462b76eed6e13c64b4fd1c;
request.timeStamp= @;
request.sign= @DD2B03AD8CB16E7A256;
[WXApi sendReq:request];
这里的范例是一段hardcode,真正使用的时候,参数都需要自行传入。
为了搞清楚如何使用API,我们可以下载Sample代码。不过,这个sample代码应该是微信的实习生写的,而且应该是一个对于C++比较熟悉,对于ObjectC比较陌生的实习生。。。代码风格可以看出很多东西哈。。所以这个sample读起来总觉得有点奇怪。当然,写出这个demo也是需要不错的水平,因为这个sample不仅仅是一些API的调用,还包括了一些算法的实现,之类的。
看懂了sample之后,一般可以自己重构一下,成为自己APP里面的一个Manager类。
我是在下载的微信Sampel代码,里面包括有:
payRequestHandler.h
payRequestHandler.m
如果比较看重命名规范的OC程序猿,就会觉得这个payRequestHandler类非常别扭,不符合camel命名规则,而且handler这个词更偏向于c++风格。我就以这个类为原型,重构了一下,并改装成一个传参的方法,供自己的APP调用。APP里面卖商品,一般就是商品名字,价格两个关键参数。所以这个重构的方法也只是提供这两个参数的接口。
ApiXml.h && ApiXml.m && WXUtil.h && WXUtil.m不变
WechatPayManager.h
Created by HuangCharlie on 5/24/15.
#import WXUtil.h
#import ApiXml.h
#import WXApi.h
// 账号帐户资料
// 更改商户把相关参数后可测试
#define APP_ID
@wx@@@@@@@@@@@@@@@@
#define APP_SECRET
//appsecret,看起来好像没用
//商户号,填写商户对应参数
#define MCH_ID
@@@@@@@@@@@
//商户API密钥,填写相应参数
#define PARTNER_ID
//支付结果回调页面
#define NOTIFY_URL
@http://wxpay./pub_v2/pay/notify.v2.php
//获取服务器端支付数据地址(商户自定义)(在小吉这里,签名算法直接放在APP端,故不需要自定义)
#define SP_URL
@http://wxpay./pub_v2/app/app_pay.php
@interface WechatPayManager : NSObject
//预支付网关url地址
@property (nonatomic,strong) NSString* payU
//debug信息
@property (nonatomic,strong) NSMutableString *debugI
@property (nonatomic,assign) NSInteger lastErrC//返回的错误码
//商户关键信息
@property (nonatomic,strong) NSString *appId,*mchId,*spK
//初始化函数
-(id)initWithAppID:(NSString*)appID
mchID:(NSString*)mchID
spKey:(NSString*)
//获取当前的debug信息
-(NSString *) getDebugI
//获取预支付订单信息(核心是一个prepayID)
- (NSMutableDictionary*)getPrepayWithOrderName:(NSString*)name
price:(NSString*)price
device:(NSString*)
WechatPayManager.m
Created by HuangCharlie on 5/24/15.
#import WechatPayManager.h
@implementation WechatPayManager
//初始化函数
-(id)initWithAppID:(NSString*)appID mchID:(NSString*)mchID spKey:(NSString*)key
self = [super init];
//初始化私有参数,主要是一些和商户有关的参数
self.payUrl
= @https://api.mch./pay/
if (self.debugInfo == nil){
self.debugInfo
= [NSMutableString string];
[self.debugInfo setString:@];
self.appId = appID;//微信分配给商户的appID
self.mchId = mchID;//
self.spKey =//商户的密钥
//获取debug信息
-(NSString*) getDebugInfo
NSString *res = [NSString stringWithString:self.debugInfo];
[self.debugInfo setString:@];
//创建package签名
-(NSString*) createMd5Sign:(NSMutableDictionary*)dict
NSMutableString *contentString
=[NSMutableString string];
NSArray *keys = [dict allKeys];
//按字母顺序排序
NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2 options:NSNumericSearch];
//拼接字符串
for (NSString *categoryId in sortedArray) {
![[dict objectForKey:categoryId] isEqualToString:@]
&& ![categoryId isEqualToString:@sign]
&& ![categoryId isEqualToString:@key]
[contentString appendFormat:@%@=%@&, categoryId, [dict objectForKey:categoryId]];
//添加key字段
[contentString appendFormat:@key=%@, self.spKey];
//得到MD5 sign签名
NSString *md5Sign =[WXUtil md5:contentString];
//输出Debug Info
[self.debugInfo appendFormat:@MD5签名字符串:
,contentString];
return md5S
//获取package带参数的签名包
-(NSString *)genPackage:(NSMutableDictionary*)packageParams
NSString *
NSMutableString *reqPars=[NSMutableString string];
//生成签名
= [self createMd5Sign:packageParams];
//生成xml的package
NSArray *keys = [packageParams allKeys];
[reqPars appendString:@
for (NSString *categoryId in keys) {
[reqPars appendFormat:@&%@&%@
, categoryId, [packageParams objectForKey:categoryId],categoryId];
[reqPars appendFormat:@%@
return [NSString stringWithString:reqPars];
//提交预支付
-(NSString *)sendPrepay:(NSMutableDictionary *)prePayParams
NSString *prepayid =
//获取提交支付
NSString *send
= [self genPackage:prePayParams];
//输出Debug Info
[self.debugInfo appendFormat:@API链接:%@
, self.payUrl];
[self.debugInfo appendFormat:@发送的xml:%@
//发送请求post xml数据
NSData *res = [WXUtil httpSend:self.payUrl method:@POST data:send];
//输出Debug Info
[self.debugInfo appendFormat:@服务器返回:
,[[NSString alloc] initWithData:res encoding:NSUTF8StringEncoding]];
XMLHelper *xml
= [[XMLHelper alloc] autorelease];
//开始解析
[xml startParse:res];
NSMutableDictionary *resParams = [xml getDict];
//判断返回
NSString *return_code
= [resParams objectForKey:@return_code];
NSString *result_code
= [resParams objectForKey:@result_code];
if ( [return_code isEqualToString:@SUCCESS] )
//生成返回数据的签名
NSString *sign
= [self createMd5Sign:resParams ];
NSString *send_sign =[resParams objectForKey:@sign] ;
//验证签名正确性
if( [sign isEqualToString:send_sign]){
if( [result_code isEqualToString:@SUCCESS]) {
//验证业务处理状态
= [resParams objectForKey:@prepay_id];
return_code = 0;
[self.debugInfo appendFormat:@获取预支付交易标示成功!
self.lastErrCode = 1;
[self.debugInfo appendFormat:@gen_sign=%@
,sign,send_sign];
[self.debugInfo appendFormat:@服务器返回签名验证错误!!!
self.lastErrCode = 2;
[self.debugInfo appendFormat:@接口返回错误!!!
- (NSMutableDictionary*)getPrepayWithOrderName:(NSString*)name
price:(NSString*)price
device:(NSString*)device
//订单标题,展示给用户
NSString* orderName =
//订单金额,单位(分)
NSString* orderPrice =//以分为单位的整数
//支付设备号或门店号
NSString* orderDevice =
//支付类型,固定为APP
NSString* orderType = @APP;
//发器支付的机器ip,暂时没有发现其作用
NSString* orderIP = @196.168.1.1;
//随机数串
srand( (unsigned)time(0) );
NSString *noncestr
= [NSString stringWithFormat:@%d, rand()];
NSString *orderNO
= [NSString stringWithFormat:@%ld,time(0)];
//================================
//预付单参数订单设置
//================================
NSMutableDictionary *packageParams = [NSMutableDictionary dictionary];
[packageParams setObject: self.appId
forKey:@appid];
//开放平台appid
[packageParams setObject: self.mchId
forKey:@mch_id];
[packageParams setObject: orderDevice
forKey:@device_info]; //支付设备号或门店号
[packageParams setObject: noncestr
forKey:@nonce_str];
[packageParams setObject: orderType
forKey:@trade_type];
//支付类型,固定为APP
[packageParams setObject: orderName
forKey:@body];
//订单描述,展示给用户
[packageParams setObject: NOTIFY_URL
forKey:@notify_url];
//支付结果异步通知
[packageParams setObject: orderNO
forKey:@out_trade_no];//商户订单号
[packageParams setObject: orderIP
forKey:@spbill_create_ip];//发器支付的机器ip
[packageParams setObject: orderPrice
forKey:@total_fee];
//订单金额,单位为分
//获取prepayId(预支付交易会话标识)
NSString *preP
prePayid = [self sendPrepay:packageParams];
if(prePayid == nil)
[self.debugInfo appendFormat:@获取prepayid失败!
//获取到prepayid后进行第二次签名
*package, *time_stamp, *nonce_
//设置支付参数
time(&now);
time_stamp
= [NSString stringWithFormat:@%ld, now];
nonce_str = [WXUtil md5:time_stamp];
//重新按提交格式组包,微信客户端暂只支持package=Sign=WXPay格式,须考虑升级后支持携带package具体参数的情况
= [NSString stringWithFormat:@Sign=%@,package];
= @Sign=WXP
//第二次签名参数列表
NSMutableDictionary *signParams = [NSMutableDictionary dictionary];
[signParams setObject: self.appId
forKey:@appid];
[signParams setObject: self.mchId
forKey:@partnerid];
[signParams setObject: nonce_str
forKey:@noncestr];
[signParams setObject: package
forKey:@package];
[signParams setObject: time_stamp
forKey:@timestamp];
[signParams setObject: prePayid
forKey:@prepayid];
//生成签名
NSString *sign
= [self createMd5Sign:signParams];
//添加签名
[signParams setObject: sign
forKey:@sign];
[self.debugInfo appendFormat:@第二步签名成功,sign=%@
//返回参数列表
return signP
然后,在需要调用微信支付的Controller里面,新建一个方法。在合适的地方调用。这个方法里面利用WechatPayManager这个类进行了初始化和参数封装,然后把上述的核心代码(PayReq那一段)
- (void)wxPayWithOrderName:(NSString*)name price:(NSString*)price
//创建支付签名对象 && 初始化支付签名对象
WechatPayManager* wxpayManager = [[[WechatPayManager alloc]initWithAppID:APP_ID mchID:MCH_ID spKey:PARTNER_ID] autorelease];
//获取到实际调起微信支付的参数后,在app端调起支付
//生成预支付订单,实际上就是把关键参数进行第一次加密。
NSString* device = [[UserManager defaultManager]userId];
NSMutableDictionary *dict = [wxpayManager getPrepayWithOrderName:name
price:price
device:device];
if(dict == nil){
//错误提示
NSString *debug = [wxpayManager getDebugInfo];
NSMutableString *stamp
= [dict objectForKey:@timestamp];
//调起微信支付
PayReq* req
= [[[PayReq alloc] init]autorelease];
req.openID
= [dict objectForKey:@appid];
req.partnerId
= [dict objectForKey:@partnerid];
req.prepayId
= [dict objectForKey:@prepayid];
req.nonceStr
= [dict objectForKey:@noncestr];
req.timeStamp
= stamp.intV
req.package
= [dict objectForKey:@package];
= [dict objectForKey:@sign];
BOOL flag = [WXApi sendReq:req];
BOOL flag = [WXApi safeSendReq:req];
再者,支付完成了需要调用一个delegate,这个delegate方便个性化显示支付结果。一般直接把这两个delegate放在AppDelegate就好了。因为有一些其他内容也是需要在AppDelegate里面实现,省的分开找不到。
-(void) onResp:(BaseResp*)resp
//启动微信支付的response
NSString *strMsg = [NSString stringWithFormat:@errcode:%d, resp.errCode];
if([resp isKindOfClass:[PayResp class]]){
//支付返回结果,实际支付结果需要去微信服务器端查询
switch (resp.errCode) {
strMsg = @支付结果:成功!;
strMsg = @支付结果:失败!;
strMsg = @用户已经退出支付!;
strMsg = [NSString stringWithFormat:@支付结果:失败!retcode = %d, retstr = %@, resp.errCode,resp.errStr];
注意事项:
1)如果APP里面已经使用了ShareSDK,就有一些地方要注意。不要再重复导入微信的SDK,因为shareSDK里面的extend已经包括了微信的SDK。
2)微信本身是鼓励客户APP把签名算法放到服务器上面,这样信息就不容易被。但是如果客户APP本身没有服务器端,或者认为不需要放到服务器端,也可以直接把签名()的部分直接放在APP端。Sample代码的注释有点乱,多次提到服务器云云,但是其实可以不这么做。
3)的price单位是分。注意下即可。
4)暂时想不到,以后想到了再记录。。微信公众号开发_如何接入微信支付?[网页发起支付]
时间: 13:12:37
&&&& 阅读:282
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&开发背景
在微信公众号中,需要获取支付功能
公众号已经开通支付功能【未开通的自行百度】
JSSDK使用步骤
使用JSSDK中的 微信支付
wx.chooseWXPay({
timestamp: 0,
nonceStr: ‘abc‘,
package: ‘prepay_id=abc‘,
signType: ‘MD5‘,
paySign: ‘abc‘,
success: function (res) {
alert("谢谢壕!");
以上是微信接入的实现步骤。下面说一说需要注意的事项:
在chooseWXPay API中,package的参数是最难得到的。
在这里以获取prepay_id为例,其关系如下图
Created with Rapha?l 2.1.2prepay_idprepay_id统一下单统一下单我想要个prepay_id统一下单:我是支付接口的门神,所有支付都需要先过我这关, &br/& 获取到预支付交易回话标识(prepay_id)后,才能继续支付功能。 &br/& 如何支付?参考这里吧:[统一下单参考文档](http://pay./wiki/doc/api/index.php?chapter=9_1)你妹的, &br/& 向你要个prepay_id,还要那么多参数,有没有搞错。
标签:&&&&&&&&&&&&
&&&& &&&&&&
&& &&&&&&&&&&
版权所有 鲁ICP备号-4
打开技术之扣,分享程序人生!公众号支付
商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程。
步骤(1):如图7.1,商户下发图文消息或者通过自定义菜单吸引用户点击进入商户网页。
步骤(2):如图7.2,进入商户网页,用户选择购买,完成选购流程。
图7.1 商户自定义消息界面
图7.2 商户网页下单
步骤(3):如图7.3,调起微信支付控件,用户开始输入支付密码。
步骤(4):如图7.4,密码验证通过,支付成功。商户后台得到支付成功的通知。
图7.3 用户确认支付,输入密码
图7.4 用户支付成功提示
步骤(5):如图7.5,返回商户页面,显示购买成功。该页面由商户自定义。
步骤(6):如图7.6,公众号下发消息,提示发货成功。该步骤可选。
图7.5 返回商户页面提示
图7.6 用户收到发货微信通知
注意:商户也可以把商品网页的链接生成二维码,用户扫一扫打开后即可完成购买支付。
交互细节:
以下是支付场景的交互细节,请认真阅读,设计商户页面的逻辑:
(1)用户打开商户网页选购商品,发起支付,在网页通过JavaScript调用getBrandWCPayRequest接口,发起微信支付请求,用户进入支付流程。
(2)用户成功支付点击完成按钮后,商户的前端会收到JavaScript的返回值。商户可直接跳转到支付成功的静态页面进行展示。
(3)商户后台收到来自微信开放平台的支付成功回调通知,标志该笔订单支付成功。
注:(2)和(3)的触发不保证遵循严格的时序。JS API返回值作为触发商户网页跳转的标志,但商户后台应该只在收到微信后台的支付成功回调通知后,才做真正的支付成功的处理。公众平台商户接入(微信支付)功能申请教程选择字号:
微信支付商户功能介绍
微信支付(商户功能),是公众平台向有出售物品需求的公众号提供推广销售、支付收款、经营分析的整套解决方案;
商户通过自定义菜单、关键字回复等方式向订阅用户推送商品消息,用户可在微信公众号中完成选购支付的流程;
商户也可以把商品网页生成二维码,张贴在线下的场景,如车站和广告海报。用户扫描后可打开商品详情,在微信中直接购买。
场景及类型介绍
商家可以申请公众账号支付和APP(应用客户端)支付两种接入微信支付方式;
公众账号支付:用户在微信公众帐号内使用微信支付消费,案例:易迅、QQ充值;
APP(应用客户端)支付:用户在手机应用APP内使用微信支付消费,案例:大众点评、易迅。
公众账号支付:
APP(移动应用客户端)支付:
申请条件/资格
&申请成为公众账号支付商户需要满足以下条件:
1、拥有公众帐号,且为服务号、企业号;
2、公众帐号须通过微信认证;(未认证用户,可先申请微信认证)
3、政府、媒体两大类型的订阅号支持申请微信支付
4、企业号也支持申请微信支付,请在企业号管理平台发起申请。温馨提示:
1、微信支付商户申请无开通费用及保证金;
2、微信认证资质审核通过后,即可申请微信支付功能;&
3、订阅号可先升级为服务号,升级方法
接入步骤流程图:
公众号支付申请方法:
1、登录公众平台,选择"微信支付"=》点击“开通”=》按照页面提示填写资料;企业号请登录企业号管理平台(),选择“服务中心”=》点击“微信支付”进行开通。
2、收到审核通过的邮件后就可以开始开发工作。需要登录商户平台(),在页面填写打款收到的金额,并在线签署协议,完成支付申请。
APP支付申请方法:
登陆开放平台(http://open.),选择"管理中心"=》"移动应用",选择需要申请支付的应用,点击"查看"=》 "微信支付"=》 "申请开通",申请流程与公众号支付申请流程一致,详情
以上信息是否已解决您的问题?}

我要回帖

更多关于 微信公众号支付 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信