:简介
电脑支付常用于电商和后台管理系统的账户充值等场景。
电脑网站支付 文档
电脑网站支付流程图
集成前需要先创建应用、配置密钥、回调地址等以及alipay-sdk-java.jar和alipay-trade-sdk.jar请查看Spring Boot入门教程(三十五):支付宝集成-准备工作
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- alipay begin -->
<dependency>
<groupId>com.alipay</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>20170725114550</version>
</dependency>
<dependency>
<groupId>com.alipay</groupId>
<artifactId>alipay-trade-sdk</artifactId>
<version>20161215</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.2.1</version>
</dependency>
<!-- alipay end -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
# 沙箱账号
pay:
alipay:
gatewayUrl: https://openapi.alipaydev.com/gateway.do
appid: 2016091400508498
appPrivateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCtXKWs+trRSuCxEUvlsEeSAuLWs3B/Dh74R8223BnfzoA29aGeoycAqfKlBMcbzU2G1KayESvZKGpwBLeejSbecRYjgZsQDyEaDimQQJtGFvZVV6u4XNnvIJ72eQzEaEIQfuiorjBTLm6DQuds4R0GxftqON6QFoIZkWB9ZrZKd02cuy16dW+UqtLVGGAHcCIAkB63zUiKSNfweMddneZ7MVs3lvu3xhMnD+5us/+n2Vp4qhfmpYLcdqIW6InU4GypeoOpyUTrfUGpgdR0l924vHy/GQJZEKFaRcK3cYK+ECyKpSIoqaJJFLHbkqsliuPpMUG+rM3jiqeIAH4psAznAgMBAAECggEBAJ5jyEbbxrJzrAh7GhHX1fwUQPYSadTbrPYAfHX2cHlnrQMJtsk+nTLhEv0r+VJwZ8WpYkfMong8kcqYtL7ajcmsHqMAFhE9EWxBxj2ymWsXLabZe93sj30IG9Rq0nxcGQgDO0RqKWLGSFgK93Al2KRInKT3InkY53K+vR61ihVLmGf7+GwPtIZteBy+tuAyvcj2RlkYvjiFi3ySyZ1wA3sJIlgrGiixd6fj20XFGNE3CnAwu0BJgXXbP/S9J4C0RRa3ZXj8fX7oONhVxz2xKxn7AT4e8OWjt7J41H2LRct8Fgl9pqgz2FJYv/WfbkG8x9fGiKYYvPXoxjjrk/tkewkCgYEA8f9Lcu5JPrE9rpw9zlwhm5cOO81xLxdwL5R5/1bRP48BZGIYuqlCbVvjJVqtO8eTnLhUwH7fG8B7cmoeO9bGr9GQrtfyCqz6FtVymTBieJlfgZDVhtzyv2qKOBMIFE8jsbSBK/NHHMvykJ+XdQ1riwCeQDdXICRuYTTFwGk2OsUCgYEAt2SoN95tVmVrvKG6ATLNEtge/ozeVywA4GjltrSw/G9vqp+DkkT2pY19uROuzMazoTzKWpPho2q/qzNlv/ANbOFM2GEmKamQ7CO88JgRxMsPTvc/HxCLU/ClMJU8LcOf9LfP2KYZpPwuheKJoF4vDGj8NsbFmccJyYSdpkNEk7sCgYBJlL2FMaz1sgC2Ue19DIhvfaunRV1P20mSPgwmNmijccETm7w3LXX0OIdFeV/JGHLqqSWj7i+6iXk/ncKZoUGCfi8G6sQ+uL/GJ5qTt6GJV+ExTS+PtSjeSO/EAw1m13Vb+C16hpstx1l23f+4aJ81gbecgPct38XsKpaiXZtOnQKBgQCMsN7QRYYxwoq9YoDUzIlAzKYyeBVWYL6najHYUZR5hG/xQIBqZRem9/4cTvpJxKInrwA6LrrqaEl0aHDFp75U6h7O3PCvA5PXZK9dD/yJsZIj7U/yX/nTQokn1UUegrYiwiTkusBvrrtuINWePsLvTVc4GpObHnPmsiNTWsWwYwKBgENaeTNOCHV2km/ysXQSEIhKbtlAMQPsgWHCt/bzHlF9m18izb1LrJyjzcSsd+Zy78R+pv4G50Q27c3e/DFPz/wYxN/yHWRbyLBA8ipJbCtMtPEdS9krpmN6cChIdLGbz4CVUqOPSRzNb9lhhgPCcCNRq6DG3HBceb1Se9VnO3zk
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApFQKccMq+wPoWh93DcX3XYrnT7FJ3gntJA/jEwgk6Jd3iEVS2CyUCCgFVcQn8xjXT81YbZHYvoC50IBuu+A+Ey+J8VIgsBm5g9uwbOLRf66GrZjuKOlalHm5gHXjcL2gZRMBJEStOxstcO2YQriqhQzdL3EKp+HQc9u14IOVFpZdR8qq1l7CzKHn1vQo/1fUPfUrTLQqSuQTU9Ospv/QHFqOJA7DPetUQ+jnaZ082f3clr4ITw4EE8A6IWqTXcETTx5j/udCGP84g2Y4j+8i9DqYGyD5ePVgt4G0ICBX1bi1qNlylfxRg8Y3c1DFrRGyr0NpKQxSVXkYaVNvrCoudQIDAQAB
returnUrl: http://s9v2cw.natappfree.cc/alipay/return
notifyUrl: http://s9v2cw.natappfree.cc/alipay/notify
spring:
thymeleaf:
prefix: classpath:/templates/
suffix: .html
mode: HTML5
encoding: UTF-8
/**
* 支付宝支付的参数配置
*
* @author mengday zhang
*/
@Data
@Slf4j
@ConfigurationProperties(prefix="pay.alipay")
public class AlipayProperties {
/** 支付宝gatewayUrl */
private String gatewayUrl;
/** 商户应用id */
private String appid;
/** RSA私钥,用于对商户请求报文加签 */
private String appPrivateKey;
/** 支付宝RSA公钥,用于验签支付宝应答 */
private String alipayPublicKey;
/** 签名类型 */
private String signType="RSA2";
/** 格式 */
private String formate="json";
/** 编码 */
private String charset="UTF-8";
/** 同步地址 */
private String returnUrl;
/** 异步地址 */
private String notifyUrl;
/** 最大查询次数 */
private static int maxQueryRetry=5;
/** 查询间隔(毫秒) */
private static long queryDuration=5000;
/** 最大撤销次数 */
private static int maxCancelRetry=3;
/** 撤销间隔(毫秒) */
private static long cancelDuration=3000;
private AlipayProperties() {}
/**
* PostContruct是spring框架的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。
*/
@PostConstruct
public void init() {
log.info(description());
}
public String description() {
StringBuilder sb=new StringBuilder("\nConfigs{");
sb.append("支付宝网关: ").append(gatewayUrl).append("\n");
sb.append(", appid: ").append(appid).append("\n");
sb.append(", 商户RSA私钥: ").append(getKeyDescription(appPrivateKey)).append("\n");
sb.append(", 支付宝RSA公钥: ").append(getKeyDescription(alipayPublicKey)).append("\n");
sb.append(", 签名类型: ").append(signType).append("\n");
sb.append(", 查询重试次数: ").append(maxQueryRetry).append("\n");
sb.append(", 查询间隔(毫秒): ").append(queryDuration).append("\n");
sb.append(", 撤销尝试次数: ").append(maxCancelRetry).append("\n");
sb.append(", 撤销重试间隔(毫秒): ").append(cancelDuration).append("\n");
sb.append("}");
return sb.toString();
}
private String getKeyDescription(String key) {
int showLength=6;
if (StringUtils.isNotEmpty(key) && key.length() > showLength) {
return new StringBuilder(key.substring(0, showLength)).append("******")
.append(key.substring(key.length() - showLength)).toString();
}
return null;
}
}
/**
* 两个支付宝客户端,用户可以使用任意一个.
*
* alipay-trade-sdk 是对alipay-sdk-java的封装,建议使用alipay-trade-sdk.
*
* @author mengday zhang
*/
@Configuration
@EnableConfigurationProperties(AlipayProperties.class)
public class AlipayConfiguration {
@Autowired
private AlipayProperties properties;
/**
* alipay-trade-sdk
* @return
*/
@Bean
public AlipayTradeService alipayTradeService() {
return new AlipayTradeServiceImpl.ClientBuilder()
.setGatewayUrl(properties.getGatewayUrl())
.setAppid(properties.getAppid())
.setPrivateKey(properties.getAppPrivateKey())
.setAlipayPublicKey(properties.getAlipayPublicKey())
.setSignType(properties.getSignType())
.build();
}
/**
* alipay-sdk-java
* @return
*/
@Bean
public AlipayClient alipayClient(){
return new DefaultAlipayClient(properties.getGatewayUrl(),
properties.getAppid(),
properties.getAppPrivateKey(),
properties.getFormate(),
properties.getCharset(),
properties.getAlipayPublicKey(),
properties.getSignType());
}
}
/**
* 支付宝-电脑网站支付.
* <p>
* 电脑网站支付 https://docs.open.alipay.com/270/105898/
*
* @author Mengday Zhang
* @version 1.0
* @since 2018/6/14
*/
@Controller
@RequestMapping("/alipay/page")
public class AlipayPagePayController {
@Autowired
private AlipayProperties alipayProperties;
@Autowired
private AlipayClient alipayClient;
@Autowired
private AlipayController alipayController;
@PostMapping("/gotoPayPage")
public void gotoPayPage(HttpServletResponse response) throws AlipayApiException, IOException {
// 订单模型
String productCode="FAST_INSTANT_TRADE_PAY";
AlipayTradePagePayModel model=new AlipayTradePagePayModel();
model.setOutTradeNo(UUID.randomUUID().toString());
model.setSubject("支付测试");
model.setTotalAmount("0.01");
model.setBody("支付测试,共0.01元");
model.setProductCode(productCode);
AlipayTradePagePayRequest pagePayRequest=new AlipayTradePagePayRequest();
pagePayRequest.setReturnUrl("http://s9v2cw.natappfree.cc/alipay/page/returnUrl");
pagePayRequest.setNotifyUrl(alipayProperties.getNotifyUrl());
pagePayRequest.setBizModel(model);
// 调用SDK生成表单, 并直接将完整的表单html输出到页面
String form=alipayClient.pageExecute(pagePayRequest).getBody();
response.setContentType("text/html;charset=" + alipayProperties.getCharset());
response.getWriter().write(form);
response.getWriter().flush();
response.getWriter().close();
}
@RequestMapping("/returnUrl")
public String returnUrl(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException, AlipayApiException {
response.setContentType("text/html;charset=" + alipayProperties.getCharset());
boolean verifyResult=alipayController.rsaCheckV1(request);
if(verifyResult){
//验证成功
//请在这里加上商户的业务逻辑程序代码,如保存支付宝交易号
//商户订单号
String out_trade_no=new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");
//支付宝交易号
String trade_no=new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");
return "pagePaySuccess";
}else{
return "pagePayFail";
}
}
}
/**
* 支付宝通用接口.
* <p>
* detailed description
*
* @author Mengday Zhang
* @version 1.0
* @since 2018/6/13
*/
@Slf4j
@RestController
@RequestMapping("/alipay")
public class AlipayController {
@Autowired
private AlipayProperties aliPayProperties;
@Autowired
private AlipayClient alipayClient;
@Autowired
private AlipayTradeService alipayTradeService;
/**
* 支付异步通知
*
* 接收到异步通知并验签通过后,一定要检查通知内容,包括通知中的app_id、out_trade_no、total_amount是否与请求中的一致,并根据trade_status进行后续业务处理。
*
* https://docs.open.alipay.com/194/103296
*/
@RequestMapping("/notify")
public String notify(HttpServletRequest request) throws AlipayApiException, UnsupportedEncodingException {
// 一定要验签,防止黑客篡改参数
Map<String, String[]> parameterMap=request.getParameterMap();
StringBuilder notifyBuild=new StringBuilder("/****************************** alipay notify ******************************/\n");
parameterMap.forEach((key, value) -> notifyBuild.append(key + "=" + value[0] + "\n") );
log.info(notifyBuild.toString());
boolean flag=this.rsaCheckV1(request);
if (flag) {
/**
* TODO 需要严格按照如下描述校验通知数据的正确性
*
* 商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,
* 并判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),
* 同时需要校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email),
*
* 上述有任何一个验证不通过,则表明本次通知是异常通知,务必忽略。
* 在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。
* 在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。
*/
//交易状态
String tradeStatus=new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8");
// 商户订单号
String out_trade_no=new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");
//支付宝交易号
String trade_no=new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");
//付款金额
String total_amount=new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");
// TRADE_FINISHED(表示交易已经成功结束,并不能再对该交易做后续操作);
// TRADE_SUCCESS(表示交易已经成功结束,可以对该交易做后续操作,如:分润、退款等);
if(tradeStatus.equals("TRADE_FINISHED")){
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,
// 并判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),并执行商户的业务程序
//请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
//如果有做过处理,不执行商户的业务程序
//注意:
//如果签约的是可退款协议,退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
//如果没有签约可退款协议,那么付款完成后,支付宝系统发送该交易状态通知。
} else if (tradeStatus.equals("TRADE_SUCCESS")){
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,
// 并判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),并执行商户的业务程序
//请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
//如果有做过处理,不执行商户的业务程序
//注意:
//如果签约的是可退款协议,那么付款完成后,支付宝系统发送该交易状态通知。
}
return "success";
}
return "fail";
}
/**
* 订单查询(最主要用于查询订单的支付状态)
* @param orderNo 商户订单号
* @return
*/
@GetMapping("/query")
public String query(String orderNo){
AlipayTradeQueryRequestBuilder builder=new AlipayTradeQueryRequestBuilder()
.setOutTradeNo(orderNo);
AlipayF2FQueryResult result=alipayTradeService.queryTradeResult(builder);
switch (result.getTradeStatus()) {
case SUCCESS:
log.info("查询返回该订单支付成功: )");
AlipayTradeQueryResponse resp=result.getResponse();
log.info(resp.getTradeStatus());
// log.info(resp.getFundBillList());
break;
case FAILED:
log.error("查询返回该订单支付失败!!!");
break;
case UNKNOWN:
log.error("系统异常,订单支付状态未知!!!");
break;
default:
log.error("不支持的交易状态,交易返回异常!!!");
break;
}
return result.getResponse().getBody();
}
/**
* 退款
* @param orderNo 商户订单号
* @return
*/
@PostMapping("/refund")
@ResponseBody
public String refund(String orderNo) throws AlipayApiException {
AlipayTradeRefundRequest alipayRequest=new AlipayTradeRefundRequest();
AlipayTradeRefundModel model=new AlipayTradeRefundModel();
// 商户订单号
model.setOutTradeNo(orderNo);
// 退款金额
model.setRefundAmount("0.01");
// 退款原因
model.setRefundReason("无理由退货");
// 退款订单号(同一个订单可以分多次部分退款,当分多次时必传)
// model.setOutRequestNo(UUID.randomUUID().toString());
alipayRequest.setBizModel(model);
AlipayTradeRefundResponse alipayResponse=alipayClient.execute(alipayRequest);
System.out.println(alipayResponse.getBody());
return alipayResponse.getBody();
}
/**
* 退款查询
* @param orderNo 商户订单号
* @param refundOrderNo 请求退款接口时,传入的退款请求号,如果在退款请求时未传入,则该值为创建交易时的外部订单号
* @return
* @throws AlipayApiException
*/
@GetMapping("/refundQuery")
@ResponseBody
public String refundQuery(String orderNo, String refundOrderNo) throws AlipayApiException {
AlipayTradeFastpayRefundQueryRequest alipayRequest=new AlipayTradeFastpayRefundQueryRequest();
AlipayTradeFastpayRefundQueryModel model=new AlipayTradeFastpayRefundQueryModel();
model.setOutTradeNo(orderNo);
model.setOutRequestNo(refundOrderNo);
alipayRequest.setBizModel(model);
AlipayTradeFastpayRefundQueryResponse alipayResponse=alipayClient.execute(alipayRequest);
System.out.println(alipayResponse.getBody());
return alipayResponse.getBody();
}
/**
* 关闭交易
* @param orderNo
* @return
* @throws AlipayApiException
*/
@PostMapping("/close")
@ResponseBody
public String close(String orderNo) throws AlipayApiException {
AlipayTradeCloseRequest alipayRequest=new AlipayTradeCloseRequest();
AlipayTradeCloseModel model=new AlipayTradeCloseModel();
model.setOutTradeNo(orderNo);
alipayRequest.setBizModel(model);
AlipayTradeCloseResponse alipayResponse=alipayClient.execute(alipayRequest);
System.out.println(alipayResponse.getBody());
return alipayResponse.getBody();
}
/**
* 校验签名
* @param request
* @return
*/
public boolean rsaCheckV1(HttpServletRequest request){
// https://docs.open.alipay.com/54/106370
// 获取支付宝POST过来反馈信息
Map<String,String> params=new HashMap<>();
Map requestParams=request.getParameterMap();
for (Iterator iter=requestParams.keySet().iterator(); iter.hasNext();) {
String name=(String) iter.next();
String[] values=(String[]) requestParams.get(name);
String valueStr="";
for (int i=0; i < values.length; i++) {
valueStr=(i==values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
params.put(name, valueStr);
}
try {
boolean verifyResult=AlipaySignature.rsaCheckV1(params,
aliPayProperties.getAlipayPublicKey(),
aliPayProperties.getCharset(),
aliPayProperties.getSignType());
return verifyResult;
} catch (AlipayApiException e) {
log.debug("verify sigin error, exception is:{}", e);
return false;
}
}
}
/**
* WebMVC 配置.
* <p>
* 添加路径和页面的映射关系
*
* @author Mengday Zhang
* @version 1.0
* @since 2018/6/13
*/
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
@Override
protected void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/gotoWapPage").setViewName("gotoWapPay");
registry.addViewController("/gotoPagePage").setViewName("gotoPagePay");
super.addViewControllers(registry);
}
}
gotoPagePay.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body style="font-size: 30px">
<form method="post" action="/alipay/page/gotoPayPage">
<h3>购买商品:越南新娘</h3>
<h3>价格:20000</h3>
<h3>数量:10个</h3>
<button style="width: 100%; height: 60px; alignment: center; background: #b49e8f" type="submit">立即支付</button>
</form>
</body>
</html>
pagePaySuccess.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>电脑网站支付 成功,我们将尽快从越南偷渡过来,收货后请请及时验货!欢迎下次再来</h1>
</body>
</html>
日,绵阳市公安局涪城区分局在“净网2020”专项行动中,该局网安部门破获一起帮助信息网络犯罪活动案。15名犯罪嫌疑人落网,涉案金额高达8000余万元。
2019年10月,涪城区公安分局网安民警在网上巡查发现,有人通过QQ发布寻找“第四方支付平台”合作的信息。
所谓“第四方支付平台”,其实是网络黑色产业内的“行话”,指的是一种脱离监管的自建平台。“这种平台往往用于洗钱,为犯罪团伙转移赃款提供服务。”涪城区公安分局网安大队大队长刘缚龙介绍,网安部门立即组织警力对线索进行核查。
经初查,自2019年5月开始,杨某某、谢某某等人与境外赌博网站联系非常紧密,双方的资金来往频繁。专案民警对杨某某等人展开侦查,发现该团伙组织架构清晰,成员分工明确。
他们自建“快支付”、“飞飞支付”平台,马某的科技公司提供技术支持,为全球彩票网、星空彩票网等境外赌博网站提供支付结算。
虚假交易伪装 赌资由“黑”变“白”
“参赌人员在赌博网站充值后,将直接跳转到电商平台,在网店购买虚拟物品,对赌博行为进行伪装。”刘缚龙告诉小直,“第四方支付平台”实际上打通了参赌人员和境外赌博网站的通道,将赌资由“黑”洗“白”。
“参与赌博是违法的,赌资就是赃款,通过建立虚假交易订单的方式,赌资就变成了正常的交易资金。当充值资金达到一定金额后,赌博平台就会进行提现。” 刘缚龙说,经查杨某某等人为境外博彩网站过账高达8000余万元。
风控部门出“内鬼” 为“洗钱”大开方便之门
不过,电商平台都有专门的风控部门,他们如此频繁、异常的资金流动,是如何逃过监管的呢?专案组判断很有可能存在“内鬼”。
证据显示,某电商平台的风控人员陈某某与杨某某等人相互勾结,每日从店铺交易总额中抽取3‰的“点子”,保障杨某某等人的大量虚假销售不被平台风控冻结。
通过调查发现,赌博网站的技术和客服人员均位于柬埔寨,专案组对赌博平台的注册、充值、提现等流程进行了远程取证,固定了上述平台开设赌场的性质。
2019年12月10日,专案组在广州、成都、绵阳三地同时展开抓捕,将杨某某、谢某某、陈某某等15名犯罪嫌疑人抓获,摧毁了一条由电商平台运营负责人(内鬼)、店铺提供商、码商、第四方支付团伙、平台安全防护、服务器搭建组成的黑色产业链条。
经查,杨某某等人为赌博团伙提供过账服务以来,已获利200余万元。目前,杨某某等人因涉嫌帮助信息网络犯罪活动罪,已被公安机关刑事拘留,案件正在进一步办理当中。
声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。
月7日,中共中央政治局委员、外交部长王毅就“中国外交政策和对外关系”相关问题回答中外记者提问。王毅在会上宣布,从3月14日起,中方将进一步对瑞士、爱尔兰、匈牙利、奥地利、比利时、卢森堡六国试行免签政策。消息一出,多家在线旅游平台相关国家旅游产品搜索量快速上涨。
随着全球逐步走出新冠疫情的阴影,境外游客将中国作为旅行目的地并入境的比例也越来越高,但支付习惯和方式的差异是让来华外国人头疼的问题。澎湃新闻(www.thepaper.cn)此前曾报道,有全国政协委员在调研中发现,支付不便让一些在华的外国朋友很苦恼,有的外企老总在中国市场做调研,没有微信和支付宝,“简直寸步难行”。
对此,中国政府近期针对提升境外人士支付便利化问题多次表态,并推出多项措施。2月23日,国务院常务会议审议通过《关于进一步优化支付服务提升支付便利性的意见》,其中就提到要聚焦外籍来华人员支付不便问题,加强协同配合,加大必要的资源投入,多措并举打通服务堵点。2月29日,中国人民银行召开优化支付服务推进会部署相关工作。3月1日,在国务院新闻办公室举行的国务院例行吹风会上,中国人民银行副行长张青松介绍,我国将通过推动重点场所和重点商户受理境外银行卡、持续改善现金使用环境等六大举措,进一步优化支付服务。
在此背景下,为便利来华外籍人士,上海门户网站专门做了一个专题(https://english.shanghai.gov.cn/en-PaymentsInShanghai/index.html),将所有关于支付的信息做了汇总,放在了门户首页大图的轮播位,方便用户在短时间内找到最有价值的内容。
在这个门户网站的专题中,可以找到有关支付信息的最有价值的内容。
进入门户网站,第一栏是“如何像本地人一样支付”(How to seamlessly pay like a local in China),点进去之后有英文版的视频和文字解释如何设置手机支付,步骤非常清晰、详尽。不论是微信支付还是支付宝支付,用户都能找到自己使用的银行卡适合的支付方式。
在网站上可以查询自己手上的银行卡是否支持微信或支付宝支付。
最后,网站还回答了一些外国人来华旅游常见的疑问,比如是否需要电话卡设置支付账号,是否有转账限额等等。
网站还回答了一些外国人来华旅游常见的疑问。
除了线上支付外,门户网站还在第二栏介绍了如何使用比较传统的方式支付,比如银行卡、现金支付,以及如果在线上支付的使用过程中遇到问题,如何致电寻求帮助。
如果有开户的需求,可以打开第三栏“如何创建银行账户”,从如何选择开户行到开户的要求,都能在这一栏找到需要的信息。
*请认真填写需求信息,我们会在24小时内与您取得联系。