微信扫码支付宝扫码如何退款能退款吗

微信线下门店二维码扫码支付和退款
查看微信官网开发接口
微信线下门店扫码支付开发
流程:生成一个预付单-》生成二维码》付款交易成功(微信端接收到钱已付款,这时需要告诉商户系统我已收到钱,发送异步通知给商户系统,一般会发送多次有时间间隔。
商户系统的异步通知方法:处理自己系统的业务,一般修改交易流水状态,发送微信客服消息等等。
最后发送个“SUCCESS”内容的xml给微信端,这时微信端就不会再异步请求了。
1.生成预付订单
2.js生成二维码
3.回调通知方法
4.微信退款
1.jsp页面的生成二维码
//*************start*******wxPayByQr********************************
function wxQrClick(){
var total_amount=$("#paymentAmount").val();
var orderId=$("#myorderId").val();
var paySize=$(".payMoneyC").
var ptypeNum=$(".ptype:checked").
var paySum=0;
if(ptypeNum&=0){
layer.msg("支付方式至少选择一个!");
if(ptypeNum!=1){
layer.msg("支付方式只能是微信扫码支付!");
var companyId=$("#companyId").val();
var subCompanyId=$("#subCompanyId").val();
if(subCompanyId==null||subCompanyId=='null'||subCompanyId==undefined){
subCompanyId="";
url : '&%=basePath%&/payPrepareByQr.action',
async : false,
type : "post",
dataType : "json",
data:{"orderAmount":total_amount,"orderId":orderId},
success : function(result) {
if(result.code=='SUCCESS'){
$("#wxQrBtn").hide();
$("#outputWXQr").show();
&span style="color:#ff0000;"&jQuery('#outputWXQr').qrcode({width:200,height:200,text:result.code_url});&/span&
window.setInterval(finshWXQrPay, 8000);
layer.msg("微信二维码生成出错!");
function finshWXQrPay(){
var orderId=$("#myorderId").val();
url : '&%=basePath%&/aliPay!notifyFinshedByWXQr.action?orderId='+orderId,
async : false,
type : "post",
dataType : "json",
data:$('#finishForm').serialize(),
success : function(result) {
if(result.code!='0'){
layer.msg("微信扫码支付交易成功,订单3秒后即将关闭!");
window.setTimeout(function(){
//关闭弹出窗之前,跳转到其他页面
parent.window.location.href="&%=path%&/"+result.redirectU
closeLayerDialog();
//*************end*******wxPayByQr********************************
2.二维码调用的方法
* 微信二维码扫码支付生成预支付交易单,并返回交易会话的二维码链接code_url
* @throws JDOMException
* @throws IOException
* @throws NumberFormatException
* @throws SQLException
public String payPrepareByQr() throws JDOMException, IOException, NumberFormatException, SQLException {
Order order = orderService.getOrderById(Integer.parseInt(orderId));
CompanyPay cp = orderService.getCompanyPay(order.getCompanyId());
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
PrintWriter out =
if(order.getDealSts()==5||order.getDealSts()==7){
out.print("0");
SortedMap&Object, Object& parameters = new TreeMap&Object, Object&();
userwxId = (userwxId==null||"".equals(userwxId))?order.getOrderPersonWXId():userwxId;
if (!StringUtils.isNotBlank(userwxId)) {
userwxId="";
if (!StringUtils.isNotBlank(ticketId)) {
ticketId="";
parameters.put("appid", cp.getAppId());
parameters.put("mch_id", cp.getMchId());
parameters.put("nonce_str", PayCommonUtil.CreateNoncestr());// 随机字符串,不长于32位
parameters.put("body", order.getIsTakeOut()==0?"堂食订单":"外卖订单");//商品描述
String tradeNo = getTradeNo();
parameters.put("out_trade_no", tradeNo);//商户系统内部的订单号,32个字符内、可包含字母
float amount_f = Float.parseFloat(orderAmount);
Long amount = (long)(amount_f*100);
parameters.put("total_fee", amount.toString());//订单总金额,单位为分,不能带小数点
parameters.put("spbill_create_ip", request.getRemoteAddr());//订单生成的机器IP,第一个参数订单编号,第二个参数交易金额,第四个参数优惠劵编号
parameters.put("notify_url", ConfigUtil.WXQR_NOTIFY_URL+"?orderId="+orderId+","+orderAmount+","+tradeNo+","+ticketId);//接收微信支付成功通知
parameters.put("trade_type", "NATIVE");//JSAPI、NATIVE、APP
String sign = PayCommonUtil.createSign("UTF-8", parameters,cp.getApiKey());
parameters.put("sign", sign);
String requestXML = PayCommonUtil.getRequestXml(parameters);
System.out.println("requestXML_-------------------&&&&&:"+requestXML);
String result = CommonUtil.httpsRequest(ConfigUtil.UNIFIED_ORDER_URL,"POST", requestXML);
Map&String, String& map = XMLUtil.doXMLParse(result);
SortedMap&Object, Object& params = new TreeMap&Object, Object&();
String return_code=(String)map.get("return_code");
String result_code=(String)map.get("result_code");
String json = "";
if("SUCCESS".equals(return_code)&&"SUCCESS".equals(result_code)){
params.put("code", map.get("return_code"));
params.put("appId", cp.getAppId());
params.put("prepay_id", map.get("prepay_id"));
params.put("trade_type", map.get("trade_type"));
params.put("code_url", map.get("code_url"));//trade_type为NATIVE是有返回,可将该参数值生成二维码展示出来进行扫码支付
json = JSONObject.fromObject(params).toString();
//生成交易流水,等回调后再改变状态
WXPayLog vo = new WXPayLog();
vo.setOutTradeNo(tradeNo);
vo.setOrderId(orderId);
vo.setTotalFee(amount_f);
vo.setPayOpenId(order.getOrderPersonWXId());
vo.setAppId(parameters.get("appid").toString());
vo.setStatus(0);
vo.setTradeDate(new Date());
vo.setTradeType("NATIVE");
orderService.insertWXPaylog(vo);
params.put("code", map.get("return_code"));
params.put("msg", map.get("return_msg"));
json = JSONObject.fromObject(params).toString();
System.out.println("微信扫码支付返回信息:="+json);
ResponseWriteUtil.writeHTML(json);
}3.回调的方法
* 微信扫码支付异步通知回调方法
* @throws Exception
public String paySuccessByWXQr() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
InputStream inStream = request.getInputStream();
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
outSteam.close();
inStream.close();
System.out.println("~~~~~~~~~~~~~~~~付款成功~~~~~~~~~~~~~~~~~~`");
List&String& tktIds = new ArrayList&String&();
//tktIds.add(ticketId);
//orderService.payNotify(orderId,tktIds,orderAmount);
String result = new String(outSteam.toByteArray(), "utf-8");// 获取微信调用我们notify_url的返回信息
Map&Object, Object& map = XMLUtil.doXMLParse(result);
String paras = "";
String userwxId="";
if (map != null) {
for (Object keyValue : map.keySet()) {
System.out.println("[" + keyValue + "=" + map.get(keyValue)
if ("orderId".equals(keyValue)) {
paras = map.get(keyValue).toString();
if("openid".equals(keyValue)){
userwxId=map.get(keyValue).toString();
String[] para = paras.split(",");
String orderId=para[0];
String orderAmount=para[1];
String tradeNo=para[2];
String ticketId="";
if(para.length&3){
ticketId=para[3];
if(ticketId!=null && !"".equals(ticketId)){
tktIds.add(ticketId);
System.out.println("params="+orderId+","+orderAmount+","+tradeNo+","+userwxId +","+ticketId);
//判断付款是否成功,已成功则不再记录付款信息
if(orderService.ifOrderPaid(Integer.parseInt(orderId))&0){
response.getWriter().write(PayCommonUtil.setXML("SUCCESS", ""));
//更新交易流水状态
orderService.updateWXPayLogStatus(tradeNo);
// 增加付款信息
Order o = orderService.getOrderById(Integer.parseInt(orderId));
List&SysUser& us = sysUserService.fetchSysUserByOpenId(userwxId, o.getCompanyId());
SysUser u = (us!=null && us.size()&0)?us.get(0):
if(o.getIsTakeOut()==0){//堂吃
orderService.payNotify(orderId,tktIds,orderAmount,0);
}else if(o.getIsTakeOut()==1){//外卖
o.setPaymentAmount(Float.parseFloat(orderAmount));
o.setPaymentType(EnumUtil.PAYMENT_TYPE.weixin.getCode());//配送员结束订单,赞为支付方式为现金或刷卡两种方式
o.setPaymentTime(new Date());
o.setDealSts(EnumUtil.ORDER_dealSts.paid.getCode());
o.setFinishTime(new Date());
o.setOrderRemark("用户微信支付");
List&OrderPlus& ops = new ArrayList&OrderPlus&();
OrderPlus op = new OrderPlus();
op.setOrderId(o.getId());
op.setOrderAmount(o.getAmount());
op.setPaymentAmount(o.getPaymentAmount());
//op.setPaymentTime(new Date());
op.setActUser(u==null?"":u.getId());
op.setPaymentType(EnumUtil.PAYMENT_TYPE.weixin.getCode());
op.setNotes("用户微信支付:支付金额为"+o.getPaymentAmount());
ops.add(op);
orderService.taeoutOrderPaymet4admin(o, ops,tktIds);
orderService.updateOrderItemActualPrice(o.getId());
System.out.println("~~~~~~~~~~~~~~~~业务处理完成~~~~~~~~~~~~~~~~~~`");
//--------------------------消息发送成功-----------------------------------------end
if (map.get("result_code").toString().equalsIgnoreCase("SUCCESS")) {
response.getWriter().write(PayCommonUtil.setXML("SUCCESS", "")); // 告诉微信服务器,我收到信息了,不要在调用回调action了
System.out.println("-------------"+ PayCommonUtil.setXML("SUCCESS", ""));
XMLUtil.javaimport java.io.ByteArrayInputS
import java.io.IOE
import java.io.InputS
import java.util.HashM
import java.util.I
import java.util.L
import java.util.M
import org.jdom.D
import org.jdom.E
import org.jdom.JDOME
import org.jdom.input.SAXB
public class XMLUtil {
* 解析xml,返回第一级元素键值对。如果第一级元素有子节点,则此节点的值是子节点的xml数据。
* @param strxml
* @throws JDOMException
* @throws IOException
public static Map doXMLParse(String strxml) throws JDOMException, IOException {
strxml = strxml.replaceFirst("encoding=\".*\"", "encoding=\"UTF-8\"");
if(null == strxml || "".equals(strxml)) {
Map m = new HashMap();
InputStream in = new ByteArrayInputStream(strxml.getBytes("UTF-8"));
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(in);
Element root = doc.getRootElement();
List list = root.getChildren();
Iterator it = list.iterator();
while(it.hasNext()) {
Element e = (Element) it.next();
String k = e.getName();
String v = "";
List children = e.getChildren();
if(children.isEmpty()) {
v = e.getTextNormalize();
v = XMLUtil.getChildrenText(children);
m.put(k, v);
in.close();
* 获取子结点的xml
* @param children
* @return String
public static String getChildrenText(List children) {
StringBuffer sb = new StringBuffer();
if(!children.isEmpty()) {
Iterator it = children.iterator();
while(it.hasNext()) {
Element e = (Element) it.next();
String name = e.getName();
String value = e.getTextNormalize();
List list = e.getChildren();
sb.append("&" + name + "&");
if(!list.isEmpty()) {
sb.append(XMLUtil.getChildrenText(list));
sb.append(value);
sb.append("&/" + name + "&");
return sb.toString();
4.微信退款:首先需要有微信退款的证书,放到商户系统的目录下,然后调用微信退款接口
* 微信--申请退款
* @param orderId
* @param refundMoney
* @param totalFee
订单总金额
* @param outRefundNo
商户退款单号
public Map&String, Object& payRefund(String orderId, float refundMoney,
float totalFee, String outRefundNo) {
Map&String, Object& resultMap = new HashMap&String, Object&();
Order order = orderService.getOrderById(Integer.parseInt(orderId));
CompanyPay cp = orderService.getCompanyPay(order.getCompanyId());
String tradeNo = orderRefundService
.selectOutTradeNoByOrderId(Integer.parseInt(orderId));
SortedMap&Object, Object& parameters = new TreeMap&Object, Object&();
parameters.put("appid", cp.getAppId());// 微信分配的公众账号ID
parameters.put("mch_id", cp.getMchId());// 微信支付分配的商户号
parameters.put("nonce_str", PayCommonUtil.CreateNoncestr());// 随机字符串,不长于32位
// CHSGOFBZJ021614
parameters.put("out_trade_no", tradeNo);// 商户系统内部的订单号,32个字符内、可包含字母
parameters.put("out_refund_no", outRefundNo);// 商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔
Long refundMoney_f = (long) (refundMoney * 100);
Long totalFee_f = (long) (totalFee * 100);
parameters.put("total_fee", totalFee_f.toString());// 订单总金额,单位为分,不能带小数点
parameters.put("refund_fee", refundMoney_f.toString());// 退款总金额,单位为分,不能带小数点
parameters.put("op_user_id", cp.getMchId());// 操作员帐号, 默认为商户号
String sign = PayCommonUtil.createSign("UTF-8", parameters,
cp.getApiKey());
parameters.put("sign", sign);
String requestXML = PayCommonUtil.getRequestXml(parameters);
System.out.println("requestXML_-------------------&&&&&:"
+ requestXML);
// String result = CommonUtil.httpsRequest(ConfigUtil.REFUND_URL,
// "POST", requestXML);
Map&String, String& map = clientCustomSSLCall(
ConfigUtil.REFUND_URL, order.getCompanyId(), cp.getMchId(),
requestXML);
// log.debug("result:=" + result);
// Map&String, String& map = XMLUtil.doXMLParse(result);
if ("FAIL".equals(map.get("return_code"))) {
resultMap.put("result_flag", "fail");
resultMap.put("return_code", map.get("return_code"));
resultMap.put("return_msg", map.get("return_msg"));
} else if ("SUCCESS".equals(map.get("return_code"))) {
if ("SUCCESS".equals(map.get("result_code"))) {
resultMap.put("result_flag", "success");// SUCCESS退款申请接收成功,结果通过退款查询接口查询
resultMap.put("return_code", map.get("return_code"));
resultMap.put("return_msg", map.get("return_msg"));
resultMap.put("err_code", map.get("err_code"));
resultMap.put("err_code_des", map.get("err_code_des"));
} else if ("FAIL".equals(map.get("result_code"))) {
resultMap.put("result_flag", "fail");// FAIL 提交业务失败
resultMap.put("err_code", map.get("err_code"));
resultMap.put("err_code_des", map.get("err_code_des"));
} catch (Exception e) {
System.out.println("payRefund Exception:" + e.getMessage());
return resultM
* 自定义SSL双向证书验证
* @param url
* @param mchId
* @param arrayToXml
* @throws Exception
public Map&String, String& clientCustomSSLCall(String url,
String companyId, String mchId, String arrayToXml) throws Exception {
Map&String, String& doXMLtoMap = new HashMap&String, String&();
KeyStore keyStore = KeyStore.getInstance("PKCS12");
String cAPath = ServletActionContext.getServletContext().getRealPath(
"/WEB-INF/ca/" + companyId + "/apiclient_cert.p12");
// System.out.println("capath:=" + cAPath);
FileInputStream instream = new FileInputStream(new File(cAPath));
keyStore.load(instream, mchId.toCharArray());
} finally {
instream.close();
// Trust own CA and all self-signed certs
SSLContext sslcontext = SSLContexts.custom()
.loadKeyMaterial(keyStore, mchId.toCharArray()).build();
// Allow TLSv1 protocol only
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
sslcontext, new String[] { "TLSv1" }, null,
SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
CloseableHttpClient httpclient = HttpClients.custom()
.setSSLSocketFactory(sslsf).build();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new StringEntity(arrayToXml, "UTF-8"));
CloseableHttpResponse response = httpclient.execute(httpPost);
String jsonStr = EntityUtils
.toString(response.getEntity(), "UTF-8");
doXMLtoMap = XMLUtil.doXMLParse(jsonStr);
log.debug("result jsonStr:=" + jsonStr);
response.close();
} finally {
httpclient.close();
return doXMLtoM
* 微信退款证书是否存在
public String isWxCAExist() {
String companyId = getCompanyInfo().getCompanyId();
String cAPath = ServletActionContext.getServletContext().getRealPath(
"/WEB-INF/ca/" + companyId + "/apiclient_cert.p12");
File f = new File(cAPath);
if (f.exists()) {
ResponseWriteUtil.writeHTML("{\"isExist\":\"1\"}");// 存在
ResponseWriteUtil.writeHTML("{\"isExist\":\"0\"}");// 不存在
}PayCommonUtil.java
import java.io.UnsupportedEncodingE
import java.util.I
import java.util.M
import java.util.R
import java.util.S
import java.util.SortedM
import org.apache.log4j.L
public class PayCommonUtil {
private static Logger log = Logger.getLogger(PayCommonUtil.class);
public static String CreateNoncestr(int length) {
String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
String res = "";
for (int i = 0; i & i++) {
Random rd = new Random();
res += chars.indexOf(rd.nextInt(chars.length() - 1));
public static String CreateNoncestr() {
String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
String res = "";
for (int i = 0; i & 16; i++) {
Random rd = new Random();
res += chars.charAt(rd.nextInt(chars.length() - 1));
* @Description:sign签名
* @param characterEncoding 编码格式
* @param parameters 请求参数
* @throws UnsupportedEncodingException
public static String createSign(String characterEncoding,SortedMap&Object,Object& parameters,String apiKey) throws UnsupportedEncodingException{
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();
Iterator it = es.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String k = (String)entry.getKey();
Object v = entry.getValue();
if(null != v && !"".equals(v)
&& !"sign".equals(k) && !"key".equals(k)) {
sb.append(k + "=" + v + "&");
//sb.append("key=" + ConfigUtil.API_KEY);
sb.append("key=" + apiKey);
System.out.println("createSign-----befor_md5_sign:"+sb.toString());
String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();
public static String createSign4pay(String characterEncoding,SortedMap&Object,Object& parameters,String apiKey) throws UnsupportedEncodingException{
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();
Iterator it = es.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String k = (String)entry.getKey();
Object v = entry.getValue();
if(null != v && !"".equals(v)
&& !"sign".equals(k) && !"key".equals(k)) {
sb.append(k + "=" + v + "&");
sb.append("key=" + apiKey);
//sb.append("key=" + ConfigUtil.APP_SECRECT);
System.out.println("befor_md5_sign:"+sb.toString());
String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();
* @Description:将请求参数转换为xml格式的string
* @param parameters
* @throws UnsupportedEncodingException
public static String getRequestXml(SortedMap&Object,Object& parameters) throws UnsupportedEncodingException{
StringBuffer sb = new StringBuffer();
sb.append("&xml&");
Set es = parameters.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 ("attach".equalsIgnoreCase(k)||"body".equalsIgnoreCase(k)||"sign".equalsIgnoreCase(k)) {
sb.append("&"+k+"&"+"&![CDATA["+v+"]]&&/"+k+"&");
sb.append("&"+k+"&"+v+"&/"+k+"&");
sb.append("&/xml&");
return sb.toString();
* @Description:返回给微信的参数
* @param return_code 返回编码
* @param return_msg
public static String setXML(String return_code, String return_msg) {
return "&xml&&return_code&&![CDATA[" + return_code
+ "]]&&/return_code&&return_msg&&![CDATA[" + return_msg
+ "]]&&/return_msg&&/xml&";
微信小程序支付及退款流程详解
微信支付之退款
微信退款开发过程
微信支付之微信退款
支付宝线下门店扫码支付开发
微信扫码支付后续操作
微信扫码支付流程
PHP实现微信申请退款
微信退款处理
支付宝微信扫码支付调研
没有更多推荐了,微信扫码支付退款 微信扫码支付能退款吗_百度知道
微信扫码支付退款 微信扫码支付能退款吗
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
尚学堂科技有限公司知道合伙人
实战化教学领导品牌
尚学堂科技有限公司
知道合伙人
北京尚学堂科技有限公司是一家从事JAVA、大数据、web前端、网络直播、互联网架构师、Android、ios技术开发、咨询为一体的软件公司。公司由海外留学人员和国内IT人士创建,主要成员均拥有硕士以上学位。
不可以的,只要是付款了,直接就会在那个微信上面显示,直接收款了。所以不能退款
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。微信扫码支付支付成功后,怎样把二维码关掉,调转到指定页面
[问题点数:40分,结帖人qq]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:1440
匿名用户不能发表回复!|
其他相关推荐免费发布咨询,坐等律师在线服务
需求发布后
10分钟内收到律师在线回复
平均有多个律师参与回复
得到了圆满解决
您的位置: &
微信扫码支付被骗了,还能通过什么办法退回来那些钱
微信扫码支付被骗了,还能通过什么办法退回来那些钱
无锡推荐律师拿出二维码扫一扫
完成一笔支付
这种行为方式是不是
已经嵌入了你的生活?
这样的生活以后可能要被限制了!
日前,人民银行发布《中国人民银行关于印发&条码支付业务规范(试行)&的通知》(下简称《通知》),配套印发了《条码支付安全技术规范(试行)》和《条码支付受理终端技术规范(试行)》,自日起实施。
何为条码支付?
条码包括我们常用的二维码,作为一种可以完全暴露的图形载体,通常显示在各种媒介上,包括印刷材料或者是网页界面。它比普通条形码具有更多的优势,如数据存储量大、纠错能力强、反应更敏捷等。
所谓的条码支付,是指银行或支付机构应用条码技术,实现收款人、付款人之间货币资金转移的业务活动,包括付款扫码和收款扫码两种方式。
在我国,近年来随着智能手机不断普及,以二维码为代表的条码与智能手机结合,发展成为一种新的承载和转换数据方式。这种方式被银行业金融机构或非银行支付机构使用后,探索出一种新的支付模式,可将业务从线上扩展到线下支付。
条码支付便民,但问题不少
近年来条码支付业务快速发展,在小额、便民支付领域显现出门槛低、使用便捷的优势,市场份额持续增长,成为移动支付发展的重要体现形式。
同时,条码支付的技术实现方式和业务风险相对传统银行卡支付具有其特殊性,部分市场机构在业务开展中也存在扰乱公平竞争秩序、支付风险防范不到位等问题。
支付机构应取得相应资质
在业务规范方面,银行业金融机构、非银行支付机构开展条码支付业务涉及跨行交易时,必须通过人民银行清算系统或者合法清算机构处理,支付机构还应符合相应的业务资质要求。
通知要求,非银行支付机构(以下简称支付机构)向客户提供基于条码技术的付款服务的,应当取得网络支付业务许可;支付机构为实体特约商户和网络特约商户提供条码支付收单服务的,应当分别取得银行卡收单业务许可和网络支付业务许可。
银行业金融机构(以下简称银行)、支付机构开展条码支付业务涉及跨行交易时,应当通过人民银行跨行清算系统或者具备合法资质的清算机构处理。
自通知发布之日起,银行、支付机构不得新增不同法人机构间直连处理条码支付业务;存量业务应按照人民银行有关规定加快迁移到合法清算机构处理。
对条码支付额度进行分级管理
为消费者提供条码支付付款服务的,应当立足于小额、便民市场定位,按照风险防范能力等级,对条码支付额度进行分级管理,在风险防范和支付便捷中取得有效平衡。
为特约商户提供条码支付收单服务的,应执行银行卡收单业务管理相关要求,切实履行商户管理、交易风险监测等收单主体责任,强化对收单外包机构管理。
加强条码支付技术风险防控
在技术规范方面,银行业金融机构、非银行支付机构和清算机构要加强条码支付技术风险防控,合理运用支付标记化、可信执行环境、条码防伪识别等手段,提升条码支付客户端软件安全防护能力,规范条码支付交易报文管理,保障交易信息的真实性、完整性、一致性、可追溯性,构建以受理终端注册、大数据分析为基础的条码支付创新风险管理机制。
要加强标准落地实施,强化条码支付产品质量和安全管理,提升条码支付产品的技术标准符合性和安全性,切实保障金融消费者的财产安全和合法权益。
微信钱包扫描静态条码支付
单日支付上限不超过500元
由于静态条码(如事先贴在墙上的二维码)易被篡改或变造,易携带木马或病毒,央行规定,使用静态条码进行支付的,风险防范能力为D级,无论使用何种交易验证方式,同一客户银行或支付机构单日累计交易金额应不超过500元。例如,消费者在使用微信钱包扫描静态条码支付时,单日使用零钱包支付的上限不超过500元,同时微信关联的所有银行卡还可以再独立获得500元的支付上限。
对于使用动态条码(如手机上实时生成的条码)进行支付的,风险防范能力根据交易验证方式不同分为A、B、C三级,同一客户单日累计交易限额分别为自主约定、5000元、1000元。
消费者街头扫码小额支付不受影响
中国人民大学重阳金融研究院高级研究员董希淼举例说,新要求实施后,消费者在街头扫商贩的静态条码小额支付不受影响,也不影响商贩收款。如果在饭店里吃了顿600元大餐,扫静态条码付款就有点困难了,不过可以让收银员扫消费者手机上生成的动态条码,这样其实更安全。
使用微信支付绝不要透露这串数字
如果您和陌生人通过微信交易
对方要求您发18位付款码给他时
您可一定要当心
因为您极有可能是
被骗子盯上了!
厦门市反诈骗中心发布紧急提醒
仅前天一天内,就有5名市民
因向人透露微信上的18位付款码
导致“钱袋子”失守!
付款码外泄,被骗数千元
张先生想买一款手机软件
便在网上搜索
并搜到一个微信号
在添加对方的微信号后
对方表示张先生要付款200元
才能买到手机软件
微信红包付款遭拒
没有多想的张先生
就想直接通过微信发红包给对方
但被对方拒绝了
对方解释说
“红包和转账,
都是给到个人账户,
没法入公司账户。”
骗子要求发数字付款码
对方让张先生直接点击进入
微信钱包的付款页面
把条形码上的18位数字码告诉他
完成支付后
就能直接进入他们公司账户了
张先生一想
这样也方便
就按要求将18位付款码报给对方
谎称退款,重复索取付款码
张先生就收到支付2800元的提醒
对方随即给张先生发来微信语音
“抱歉,不小心弄错了,
我们要把钱通过这个支付渠道退还给你……”
已经中了骗子圈套的张先生
又重复将18位付款码告诉对方
随即发现自己又被刷走2790元
张先生才发现被骗
当他要求对方退钱时,已被对方拉黑
守好付款码守好钱袋子
微信付款功能一般在点击进入付款页面后
会显示条形码、二维码和18位数字编码
这三个码的功能是一样的
就像平时在商店扫二维码支付一样
如果把付款码告诉对方
对方一样可以刷走你的钱
骗子就是利用了这一点
在骗走受害人的18位付款码后
直接将钱刷走
微信付款,很多环节其实都有提醒……
点开微信收付款界面
查看“付款码数字”
微信便会跳出
如果你点了“知道了”
出现18位数字的同时
微信又再次提醒
警方提醒:
市民在日常工作生活中,要做到不扫描不明二维码、不点击不明链接。
同时,对于付款码中的条形码、二维码和18位数字编码,一定要保存好,不能透露给陌生人。
大家出门不带现金很普遍
拿手机扫一扫的动作也很熟练!
不过遇到这种情况
一定要小心谨慎!
一图读懂《通知》
来源:新华社、工人日报、楚天都市报、央行微播等
还没看够?打开南方+看看吧}

我要回帖

更多关于 支付宝扫码如何退款 的文章

更多推荐

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

点击添加站长微信