外管要规范海外扫码支付,支付宝微信扫码收款机,微信危险了吗

8379人阅读

[置顶] 微信:微信扫码支付、调用统一下单接口、网站支付 + springmvc
3193人阅读
本文章已收录于:
Springmvc(6)
Java 基础(36)
一、场景:公司需要在网站上进行微信支付。
二、API:使用微信开放平台的接入微信支付
-扫码支付。
三、分析:
接入扫码支付(包含PC网站支付)包含三个阶段,问这里只讲使用,也就是第2阶段的《启动设计和开发》。点击查看开发者文档(扫码支付)后,这里感觉微信的文档没有支付宝好理解(稍微吐槽下~~~),不过我们忽略一切,直接进入模式二:模式二最简单直接,不需要在商户后台进行配置,推荐大家使用,微信也说流程更为简单,我这里也讲的是模式二,模式一大家有兴趣可以自行研究下。如上图,总流程有14步,主要流程是生成订单、调统一下单API、将返回的支付交易链接生成二维码展示;我这边主要就是将这三步结合springmvc后,成功生儿二维码之后,用户就可以扫码支付了。后面的回调跟跟我的另一篇博文基本类似,大家借鉴下就行了:
四、实现:
准备:根据我先定义了三个对象:UnifiedOrderRequest(统一下单请求参数(必填))、UnifiedOrderRequestExt(统一下单请求参数(非必填))、UnifiedOrderRespose(统一下单返回参数);具体如下代码,get、set方法可自行生产,太占篇幅。
UnifiedOrderRequest.class
[javascript]
&&&&&&public&class&UnifiedOrderRequest&{&&&&&&private&String&&&&&&&&&&&&&&&&&&&&&&private&String&mch_&&&&&&&&&&&&&&&&&&&&private&String&nonce_&&&&&&&&&&&&&&&&&private&String&&&&&&&&&&&&&&&&&&&&&&&private&String&&&&&&&&&&&&&&&&&&&&&&&private&String&out_trade_&&&&&&&&&span&style=&white-space:pre&&&&&&&/span&&&&&&&private&String&total_&&&&&&&&&&&&&&&&&private&String&spbill_create_&&&&&span&style=&white-space:pre&&&&&&&/span&&&&&&&private&String&notify_&&&&&&&&&&&&&&&&private&String&trade_&&&&&&&&&&&&}&&
* 统一下单请求参数(必填)
* @author Y
public class UnifiedOrderRequest {
//公众账号ID
private String mch_
private String nonce_
//随机字符串
//商品描述
private String out_trade_
&span style=&white-space:pre&& &/span&//商户订单号
private String total_
private String spbill_create_ &span style=&white-space:pre&& &/span&//终端IP
private String notify_
//通知地址
private String trade_
//交易类型
}UnifiedOrderRequestExt.class
[javascript]
&&&&&&public&class&UnifiedOrderRequestExt&extends&UnifiedOrderRequest{&&&&&&&&&&&&private&String&device_&&&&&&&&&&&&&&&private&String&&&&&&&&&&&&&&&&&&&&&private&String&&&&&&&&&&&&&&&&&&&&&private&String&fee_&&&&&&&&&&&&&&&&&&private&String&time_&&&&&&&&&&&&&&&&private&String&time_&&&&&&&&&&&&&&&private&String&goods_&&&&&&&&&&&&&&&&&private&String&product_&&&&&&&&&&&&&&&&private&String&limit_&&&&&&&&&&&&&&&&&private&String&&&&&&&&&&&&&&&&&}&&
* 统一下单请求参数(非必填)
* @author Y
public class UnifiedOrderRequestExt extends UnifiedOrderRequest{
private String device_
//商品详情
//附加数据
private String fee_
//货币类型
private String time_
//交易起始时间
private String time_
//交易结束时间
private String goods_
//商品标记
private String product_
private String limit_
//指定支付方式
//用户标识
}UnifiedOrderRespose.class
[javascript]
&&&&&&public&class&UnifiedOrderRespose&{&&&&&&private&String&return_&&&&&&&&&&&&&&&&&&&private&String&return_&&&&&&&&&&&&&&&&&&&&private&String&&&&&&&&&&&&&&&&&&&&&&&&&&private&String&mch_&&&&&&&&&&&&&&&&&&&&&&&&private&String&device_&&&&&&&&&&&&&&&&&&&private&String&nonce_&&&&&&&&&&&&&&&&&&&&&private&String&&&&&&&&&&&&&&&&&&&&&&&&&&&private&String&result_&&&&&&&&&&&&&&&&&&&private&String&err_&&&&&&&&&&&&&&&&&&&&&&private&String&err_code_&&&&&&&&&&&&&span&style=&white-space:pre&&&&&&&/span&&&&&&&private&String&trade_&&&&&&&&&&&&&&&&&&&&private&String&prepay_&&&&&&&&&&&&&&&&&&&&&private&String&code_&&&&&&&&&&&&&&&&&&}&&
* 统一下单返回参数
* @author Y
public class UnifiedOrderRespose {
private String return_
//返回状态码
private String return_
//返回信息
//公众账号ID
private String mch_
private String device_
private String nonce_
//随机字符串
private String result_
//业务结果
private String err_
//错误代码
private String err_code_
&span style=&white-space:pre&& &/span&//错误代码描述
private String trade_
//交易类型
private String prepay_
//预支付交易会话标识
private String code_
//二维码链接
}Controller主入口:
[javascript]
&&&&@RequestMapping(&createQRCode&)&&public&void&createQRCode(String&orderId,&HttpServletResponse&response)&{&&&&&&&&&&&&&&&&&&String&orderInfo&=&createOrderInfo(orderId);&&&&&&&&&&&&String&code_url&=&httpOrder(orderInfo);&&&&&&&&&&&&&&&&&&try&{&&&&&&&&&&int&width&=&200;&&&&&&&&&&int&height&=&200;&&&&&&&&&&String&format&=&&png&;&&&&&&&&&&Hashtable&hints&=&new&Hashtable();&&&&&&&&&&hints.put(EncodeHintType.CHARACTER_SET,&&utf-8&);&&&&&&&&&&BitMatrix&bitMatrix&=&new&MultiFormatWriter().encode(code_url,&BarcodeFormat.QR_CODE,&width,&height,&hints);&&&&&&&&&&OutputStream&out&=&null;&&&&&&&&&&out&=&response.getOutputStream();&&&&&&&&&&MatrixToImageWriter.writeToStream(bitMatrix,&format,&out);&&&&&&&&&&out.flush();&&&&&&&&&&out.close();&&&&&&}&catch&(Exception&e)&{&&&&&&}&&&&}&&
* 创建二维码
@RequestMapping(&createQRCode&)
public void createQRCode(String orderId, HttpServletResponse response) {
//生成订单
String orderInfo = createOrderInfo(orderId);
//调统一下单API
String code_url = httpOrder(orderInfo);
//将返回预支付交易链接(code_url)生成二维码图片
//这里使用的是zxing
&span style=&color:#ff0000;&&&strong&说明1(见文末)&/strong&&/span&
int width = 200;
int height = 200;
String format = &png&;
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, &utf-8&);
BitMatrix bitMatrix = new MultiFormatWriter().encode(code_url, BarcodeFormat.QR_CODE, width, height, hints);
OutputStream out =
out = response.getOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, format, out);
out.flush();
out.close();
} catch (Exception e) {
生成订单:分两部分:一部分是业务需求的订单信息,就是发起支付前的订单信息,业务系统自行创建存储;另一部分是满足统一下单API要求的订单信息(也是我们这里要讲的)。“xxxxxx”:是你需要自己填写的对应信息:
[javascript]
&&&&&&private&String&createOrderInfo(String&orderId)&{&&&&&&&&&&&&UnifiedOrderRequest&unifiedOrderRequest&=&new&UnifiedOrderRequest();&&&&&&unifiedOrderRequest.setAppid(&xxxxxxxxxxxxx&);&&&&&&unifiedOrderRequest.setMch_id(&xxxxxxxxx&);&&&&&&unifiedOrderRequest.setNonce_str(StringUtil.makeUUID());&&&&&&unifiedOrderRequest.setBody(&xxxxxx&);&&&&&&unifiedOrderRequest.setOut_trade_no(orderId);&&&&&&unifiedOrderRequest.setTotal_fee(&x&);&&&&&&&&unifiedOrderRequest.setSpbill_create_ip(&xxxxxxxxxxxxx&);&&&&&&unifiedOrderRequest.setNotify_url(&xxxxxxxxxxxxxx&);&&&&&&unifiedOrderRequest.setTrade_type(&NATIVE&);&&&&&&unifiedOrderRequest.setSign(createSign(unifiedOrderRequest));&&&&&&&&&&&&XStream&xStream&=&new&XStream(new&XppDriver(new&XmlFriendlyNameCoder(&_-&,&&_&)));&&&&&&&xStream.alias(&xml&,&UnifiedOrderRequest.class);&&&&&&return&xStream.toXML(unifiedOrderRequest);&&}&&
* 生成订单
* @param orderId
private String createOrderInfo(String orderId) {
//生成订单对象
UnifiedOrderRequest unifiedOrderRequest = new UnifiedOrderRequest();
unifiedOrderRequest.setAppid(&xxxxxxxxxxxxx&);//公众账号ID
unifiedOrderRequest.setMch_id(&xxxxxxxxx&);//商户号
unifiedOrderRequest.setNonce_str(StringUtil.makeUUID());//随机字符串
&span style=&color:#ff0000;&&&strong&说明2(见文末)&/strong&&/span&
unifiedOrderRequest.setBody(&xxxxxx&);//商品描述
unifiedOrderRequest.setOut_trade_no(orderId);//商户订单号
unifiedOrderRequest.setTotal_fee(&x&); //金额需要扩大100倍:1代表支付时是0.01
unifiedOrderRequest.setSpbill_create_ip(&xxxxxxxxxxxxx&);//终端IP
unifiedOrderRequest.setNotify_url(&xxxxxxxxxxxxxx&);//通知地址
unifiedOrderRequest.setTrade_type(&NATIVE&);//JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付
unifiedOrderRequest.setSign(createSign(unifiedOrderRequest));//签名&span style=&color:#ff0000;&&&strong&说明5(见文末,签名方法一并给出)&/strong&&/span&
//将订单对象转为xml格式
XStream xStream = new XStream(new XppDriver(new XmlFriendlyNameCoder(&_-&, &_&))); //&span style=&color:#ff0000;&&&strong&说明3(见文末)&/strong&&/span&
xStream.alias(&xml&, UnifiedOrderRequest.class);//根元素名需要是xml
return xStream.toXML(unifiedOrderRequest);
调统一下单API:根据要求将生成订单中返回的xml向微信给定的统一下单URL地址:https://api.mch./pay/unifiedorder,发送请求,成功并获得二维码。
[javascript]
&&&&&&private&String&httpOrder(String&orderInfo)&{&&&&&&String&url&=&&https://api.mch./pay/unifiedorder&;&&&&&&try&{&&&&&&&&&&HttpURLConnection&conn&=&(HttpURLConnection)&new&URL(url).openConnection();&&&&&&&&&&&&&&&&&&&&&&&conn.setRequestMethod(&POST&);&&&&&&&&&&&&&&&conn.setDoOutput(true);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&BufferedOutputStream&buffOutStr&=&new&BufferedOutputStream(conn.getOutputStream());&&&&&&&&&&&&&&&buffOutStr.write(orderInfo.getBytes());&&&&&&&&&&&&&buffOutStr.flush();&&&&&&&&&&&&&&&buffOutStr.close();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&BufferedReader&reader&=&new&BufferedReader(new&InputStreamReader(conn.getInputStream()));&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&String&line&=&null;&&&&&&&&&&&&&&&StringBuffer&sb&=&new&StringBuffer();&&&&&&&&&&&&&&&while((line&=&reader.readLine())!=&null){&&&&&&&&&&&&&&&&&&&sb.append(line);&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&XStream&xStream&=&new&XStream(new&XppDriver(new&XmlFriendlyNameCoder(&_-&,&&_&)));&&&&&&&&&&&&&&&&&&&&&&&&&&xStream.alias(&xml&,&UnifiedOrderRespose.class);&&&&&&&&&&&&&UnifiedOrderRespose&unifiedOrderRespose&=&(UnifiedOrderRespose)&xStream.fromXML(sb.toString());&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(null!=unifiedOrderRespose&&&&&&&&&&&&&&&&&&&&&&&SUCCESS&.equals(unifiedOrderRespose.getReturn_code())&&&&&&&&&&&&&&&&&&&&&&&SUCCESS&.equals(unifiedOrderRespose.getResult_code())){&&&&&&&&&&&&&&return&unifiedOrderRespose.getCode_url();&&&&&&&&&&&&&}else{&&&&&&&&&&&&&&return&null;&&&&&&&&&&&&&}&&&&&&}&catch&(Exception&e)&{&&&&&&&&&&e.printStackTrace();&&&&&&}&&&&&&return&null;&&}&&
* 调统一下单API
* @param orderInfo
private String httpOrder(String orderInfo) {
String url = &https://api.mch./pay/unifiedorder&;
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
//加入数据
conn.setRequestMethod(&POST&);
conn.setDoOutput(true);
BufferedOutputStream buffOutStr = new BufferedOutputStream(conn.getOutputStream());
buffOutStr.write(orderInfo.getBytes());
buffOutStr.flush();
buffOutStr.close();
//获取输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line =
StringBuffer sb = new StringBuffer();
while((line = reader.readLine())!= null){
sb.append(line);
XStream xStream = new XStream(new XppDriver(new XmlFriendlyNameCoder(&_-&, &_&)));//说明3(见文末)
//将请求返回的内容通过xStream转换为UnifiedOrderRespose对象
xStream.alias(&xml&, UnifiedOrderRespose.class);
UnifiedOrderRespose unifiedOrderRespose = (UnifiedOrderRespose) xStream.fromXML(sb.toString());
//根据微信文档return_code 和result_code都为SUCCESS的时候才会返回code_url
//&span style=&color:#ff0000;&&&strong&说明4(见文末)&/strong&&/span&
if(null!=unifiedOrderRespose
&& &SUCCESS&.equals(unifiedOrderRespose.getReturn_code())
&& &SUCCESS&.equals(unifiedOrderRespose.getResult_code())){
return unifiedOrderRespose.getCode_url();
} catch (Exception e) {
e.printStackTrace();
将返回的支付交易链接生成二维码展示:没有异常的情况下,在页面中使用&img&标签接收就行。实际使用时,结合前端和业务的需求放置二维码。可以在中找到部分素材和界面规范来设计微信风格的支付页面。
[javascript]
&img&src=&${ctx}/wxPay/createQRCode?orderId=1111&&width=&174px&&&&
&img src=&${ctx}/wxPay/createQRCode?orderId=1111& width=&174px&&
用户可以通过维系客户端进行扫码支付。支付完成后回调我们notify_url设置的url,通过成功的回调来更改业务系统中的订单状态或者一些业务需求。这里回调没有写出可以参考中的回调。
五、说明:
二维码可以查看;微信这边也提供了二维码的学习,大家有兴趣可以看看:&和
随机字符串:微信对随机字符串的要求是不超过32位。我这边是这样生成的,用时间戳。
[javascript]
&&&&&public&static&synchronized&String&makeUUID()&{&&&&&&Date&date&=&new&Date();&&&&&&StringBuffer&s&=&new&StringBuffer(DateUtil.formatYmdhmsm(date));&&&&&&return&s.append((new&Random().nextInt(900)&+&100)).toString();&&}&&
* 创建UUID
public static synchronized String makeUUID() {
Date date = new Date();
StringBuffer s = new StringBuffer(DateUtil.formatYmdhmsm(date));
return s.append((new Random().nextInt(900) + 100)).toString();
使用Xstream时,由于微信定义的变量名大部分使用了“_”,但是在Xstream中它是关键字,所以会自动变为“__”,引起报错。详情请看:
获取二维码链接时,只有在return_code&和result_code都为SUCCESS的时候有返回;这里我就简单的满足时返回,不满足返回null,您写的时候需要结合业务考虑下,是否需要增加判断,从而满足不同的业务场景。
签名在上面一直没有详细说明,首先查看微信的中签名算法。key值,需要自己填写
[javascript]
&&&&&&&&&&&&&&&private&String&createSign(UnifiedOrderRequest&unifiedOrderRequest)&{&&&&&&&&&&&&SortedMap&String,&String&&packageParams&=&new&TreeMap&String,&String&();&&&&&&packageParams.put(&appid&,&unifiedOrderRequest.getAppid());&&&&&&packageParams.put(&body&,&unifiedOrderRequest.getBody());&&&&&&packageParams.put(&mch_id&,&unifiedOrderRequest.getMch_id());&&&&&&packageParams.put(&nonce_str&,&unifiedOrderRequest.getNonce_str());&&&&&&packageParams.put(&notify_url&,&unifiedOrderRequest.getNotify_url());&&&&&&packageParams.put(&out_trade_no&,&unifiedOrderRequest.getOut_trade_no());&&&&&&packageParams.put(&spbill_create_ip&,&unifiedOrderRequest.getSpbill_create_ip());&&&&&&packageParams.put(&trade_type&,&unifiedOrderRequest.getTrade_type());&&&&&&packageParams.put(&total_fee&,&unifiedOrderRequest.getTotal_fee());&&&&&&&&StringBuffer&sb&=&new&StringBuffer();&&&&&&Set&es&=&packageParams.entrySet();&&&&&&Iterator&it&=&es.iterator();&&&&&&while&(it.hasNext())&{&&&&&&&&&&Map.Entry&entry&=&(Map.Entry)&it.next();&&&&&&&&&&String&k&=&(String)&entry.getKey();&&&&&&&&&&String&v&=&(String)&entry.getValue();&&&&&&&&&&&&&&&&&&&&if&(null&!=&v&&&&!&&.equals(v)&&&&!&sign&.equals(k)&&&&&&&&&&&&&&&&&&&&&!&key&.equals(k))&{&&&&&&&&&&&&&&sb.append(k&+&&=&&+&v&+&&&&);&&&&&&&&&&}&&&&&&}&&&&&&&&&&&&sb.append(&key=&&+&xxxxxxxxxxxxxxxxx&);&&&&&&String&sign&=&MD5Util.MD5Encode(sb.toString(),&&utf-8&)&&&&&&&&&&&&&&.toUpperCase();&&&&&&return&&&}&&
* 生成签名
* @param appid_value
* @param mch_id_value
* @param productId
* @param nonce_str_value
* @param trade_type
* @param notify_url
* @param spbill_create_ip
* @param total_fee
* @param out_trade_no
private String createSign(UnifiedOrderRequest unifiedOrderRequest) {
//根据规则创建可排序的map集合
SortedMap&String, String& packageParams = new TreeMap&String, String&();
packageParams.put(&appid&, unifiedOrderRequest.getAppid());
packageParams.put(&body&, unifiedOrderRequest.getBody());
packageParams.put(&mch_id&, unifiedOrderRequest.getMch_id());
packageParams.put(&nonce_str&, unifiedOrderRequest.getNonce_str());
packageParams.put(&notify_url&, unifiedOrderRequest.getNotify_url());
packageParams.put(&out_trade_no&, unifiedOrderRequest.getOut_trade_no());
packageParams.put(&spbill_create_ip&, unifiedOrderRequest.getSpbill_create_ip());
packageParams.put(&trade_type&, unifiedOrderRequest.getTrade_type());
packageParams.put(&total_fee&, unifiedOrderRequest.getTotal_fee());
StringBuffer sb = new StringBuffer();
Set es = packageParams.entrySet();//字典序
Iterator it = es.iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
String v = (String) entry.getValue();
//为空不参与签名、参数名区分大小写
if (null != v && !&&.equals(v) && !&sign&.equals(k)
&& !&key&.equals(k)) {
sb.append(k + &=& + v + &&&);
//第二步拼接key,key设置路径:微信商户平台(pay.)--&账户设置--&API安全--&密钥设置
sb.append(&key=& +&xxxxxxxxxxxxxxxxx&);
String sign = MD5Util.MD5Encode(sb.toString(), &utf-8&)
.toUpperCase();//MD5加密
相关文章:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:59768次
积分:1050
积分:1050
排名:千里之外
原创:41篇
转载:32篇
(1)(1)(1)(2)(1)(2)(1)(1)(4)(3)(5)(3)(1)(1)(8)(1)(1)(1)(1)(3)(7)(5)(1)(1)(1)(3)(1)(2)(6)(2)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'当前位置:
扫码支付(微信支付、支付宝付款)
扫码支付(微信支付、支付宝付款)
永久免费受千万生意人热捧的APP
支持现金记账、微信支付、支付宝支付,支持多终端集中收款
集会员营销、会员卡管理、收银系统于一体
可扩展自助买单功能,扫码即支付!会员招募到精细化管理一条龙服务
自动关注公众号、自动下发电子券,O2O完美闭环
小店铺大生意!移动互联网门店神器!
关键字:扫码支付微信支付支付宝支付支付宝付款支付宝、微信“圈地”不息“扫码秒付”与NFC谁主沉浮?
支付宝、微信“圈地”不息“扫码秒付”与NFC谁主沉浮?每经记者 蒋佩芳相比二维码支付技术近两年的迅速崛起,NFC支付(Near Field Communi-cation,即近场支付)在中国虽然已经有近十年的发展历史,但受制于产业链过长,所需投入巨大,以及用户认知薄弱等因素,NFC支付的发展一直不温不火。不可否认的是,在以往手机支付模式下,想要扫码支付需要经过解屏、打开客户端、打开二维码页面等多个步骤,虽然消费者可以提前操作这些步骤,但毕竟相比NFC要多出两个步骤。Apple Pay入华无疑给沉寂了近十年的NFC支付带来一波久违的生机,也曾一度引发大家对NFC支付的再度关注。随着第一波尝鲜的风头过去,其对移动支付格局的影响也正在慢慢显现。支付方式之争:扫码支付与NFC从争夺到结合以支付宝和微信支付为代表的扫码支付,是目前国内移动支付的主流方式。另一方面,手机厂商也正在发力NFC,纷纷推出自己的“闪付”,已知的就有Apple Pay、Samsung Pay、Huawei Pay,最新款的小米手机5也宣布支持NFC功能。对于商家而言,使用支付宝等扫码支付方式没有额外的设备成本,商超、便利店等商家直接使用扫码枪即可完成收款,无需更新硬件。数据显示,目前支付宝的二维码扫码支付已经覆盖国内70多万家线下餐饮门店、4万家超市便利店和数百家医院。此前就有业内人士表示,扫码支付技术成熟,已经形成广泛的商户覆盖和用户习惯,NFC支付作为后来者,唯一优势就在于快捷。随着扫码秒付在体验上也超越NFC,未来NFC支付要在线下追赶二维码支付的前景将更加黯淡。就在10亿美元入股滴滴后,人们开始猜想苹果此举意在提升Apple Pay的占有率,似乎一场各种Pay为代表的闪付派,和以支付宝、微信为代表的扫码派的卡位战就此爆发。不过,结果有些意外,真正的结局是——闪付派和扫码派竟然会在一起。5月20日,三星移动支付服务Samsung Pay和支付宝正式宣布合作,用户可以在三星手机上通过上滑屏幕的方式快速调出支付宝的支付界面。这并不是支付宝和手机厂商的第一合作,在华为Pay推出不久后,华为新款手机P9就和支付宝联手推出了“扫码秒付”功能,用户用指纹按压手机背面的指纹识别区,手机在瞬间亮屏的同时就会自动解锁,然后直接跳出支付宝付款扫码页。常规的扫码支付,需要唤醒屏幕、查找应用、进入应用、调出支付界面,操作相对繁琐。相比之下,通过支付宝与手机厂商的合作,双方逐级打通系统层、功能层,借助指纹识别等手机功能,在不改变用户支付习惯下,缩短了支付时间的同时提高了安全性。从用户的角度来说,方便快捷和不定期的优惠活动,是扫码支付的不二法宝。而商家对于闪付和扫码支付的不同态度,也是需要考量的重要因素。各种Pay优势在于和银联结盟,提供更快的支付方式。但商户升级支持NFC功能的POS机费用高,还需要面临使用人群较少的情况。而扫码派的硬件成本则低得多,对于许多个体商户来说,使用个人账户收款甚至不涉及到硬件采买。更重要的是,支付宝、微信支付背后积累的用户量,还可以为商户提供“支付即会员”等一系列解决方案,有助于开展精准营销和用户沉淀等。支付巨头之争:支付宝与微信支付场景征途上的较量尽管闪付和扫码支付从暗战到融合,但这并不意味着移动支付领域战火的平息,对于支付宝和微信支付而言,双方的较量远未结束。毫无疑问,支付宝在网络第三方支付上的优势非常明显,其依靠支付系统继续稳固移动支付市场,而微信支付尽管较支付宝相对年轻,但其正依靠社交性质的用户数量来抢夺市场。值得注意的是,自去年起,移动支付的趋势就是从线上向线下走,线下支付场景不断延伸和拓展。对于支付宝和微信支付来说,由场景端去推动客户增长,这样的客户才算是活跃而有意义的,如何不断地去丰富支付场景,死死咬住对手,也是双方始终暗自卯劲都要做的事。中投顾问研究总监郭凡礼指出,在场景支付上,支付宝和微信支付竞争激烈,都在迅速抢夺商户资源。去年6月,蚂蚁金服集团和联合出资60亿元重启O2O服务平台口碑网,半个月之后支付宝做出成立12年来最令人眼前一亮的版本更新,新增“商家”一级入口,全面接入口碑网及数万口碑商户。外界当时就普遍认为,这是支付宝全面走向线下的标志,也是第三方移动支付行业的一个风向标。同年9月,支付宝重构丽江古城的商业生态,游客在丽江古城吃饭、打车、预订酒店、买车票、买景点门票都可以用支付宝完成。除此之外,丽江也入驻了支付宝“城市服务”平台,为当地市民提供车辆违章查询、生活缴费等便捷服务。另一方面,微信以“公众号+微信支付”为核心,微信智慧景区解决方案也已经接入全国近150家著名景点。到了今年5月,支付宝宣布年内将与全国30000家加油站合作,届时用户加油时可选择使用支付宝付款。两天后,微信支付也宣布,全国31个省市约1500座加油站均可使用微信支付。关于与支付宝的竞争,微信支付的相关人士这样表示,“只会更加关注做好自己的产品,而不是盯着竞争对手。我们关心如何更好地在用户和商户两端创造价值,同时通过开放的策略,与服务商一起推动生态共赢。”据了解,微信支付正迎来体量的加速扩张,截至2015年底,微信支付绑卡用户数已超过3亿人。截至2016年1月,微信支付线下门店接入总数超过30万家,覆盖30多个行业。同时,微信支付境外交易也在翻倍暴涨。2016年五一期间,微信跨境支付日均笔数是春节的2倍。据腾讯2016第一季度财报显示,通过微信支付进行的商业支付交易量显著增加,C2C支付交易(包括红包在内的社交转账)量亦不断增加。郭凡礼在接受《每日经济新闻》记者采访时表示,支付宝的优势主要在于,电商是阿里的主要业务,本身就有天然的支付场景,在支付场景连续性方面胜过微信支付,而且天猫、淘宝的品牌影响力较大,已经积累了大量用户;其劣势主要是社交属性不强,在使用活跃度上很容易被微信支付超越。微信支付的优势则在于拥有微信和手机QQ这两大月活跃用户超过5亿的社交平台,互动性良好,而且在虚拟产品,如QQ会员、QQ游戏的支付上积累了可观的用户量,其劣势主要是起步较晚,活跃用户相比支付宝少,而且现在取现需要收取手续费。易观智库此前曾在报告中分析指出,第三方移动支付公司在构建支付场景、增加用户的数量和活跃度之外,已经开始深入大数据挖掘分析及开发相关产品。“支付宝的做法和其他移动支付领域的参与者在定位上有着很大的区隔。”资深业内人士告诉《每日经济新闻》记者,支付宝在服务商家的过程中,需要整合蚂蚁金服、阿里巴巴集团,亦或者更大生态的力量去给客户提供从会员——营销——信贷——保险等一整套的服务;微信支付则以微信公众号帮助商家积累粉丝,提供一系列营销等服务。“移动支付的核心竞争其实是在支付之外,因为如果仅仅是提供支付,一方面给商家提供的服务没有那么高的价值,另一方面也容易同质化。”上述人士指出,如果只是线下支付的场景谁都可以做,接入进去难度并不大,重点是谁能够非常系统化地给合作商家提供全方位的服务,以及能否为合作商家甚至行业去做更深度的融合和创新。或许可以简单地总结为:构建更完善的支付生态,才是移动支付的未来。推广:热点之下另有内幕,新闻之外别有洞天,了解TMT江湖隐秘故事,关注微信公众号“腾讯深网”:qqshenwang
[责任编辑:alonliu]
您认为这篇文章与"新一网(08008.HK)"相关度高吗?
Copyright & 1998 - 2017 Tencent. All Rights Reserved
还能输入140字

我要回帖

更多关于 超市支付宝微信扫描枪 的文章

 

随机推荐