Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
:簡介
電腦支付常用于電商和后臺管理系統(tǒng)的賬戶充值等場景。
電腦網(wǎng)站支付 文檔
電腦網(wǎng)站支付流程圖
集成前需要先創(chuàng)建應(yīng)用、配置密鑰、回調(diào)地址等以及alipay-sdk-java.jar和alipay-trade-sdk.jar請查看Spring Boot入門教程(三十五):支付寶集成-準(zhǔn)備工作
<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
/**
* 支付寶支付的參數(shù)配置
*
* @author mengday zhang
*/
@Data
@Slf4j
@ConfigurationProperties(prefix="pay.alipay")
public class AlipayProperties {
/** 支付寶gatewayUrl */
private String gatewayUrl;
/** 商戶應(yīng)用id */
private String appid;
/** RSA私鑰,用于對商戶請求報(bào)文加簽 */
private String appPrivateKey;
/** 支付寶RSA公鑰,用于驗(yàn)簽支付寶應(yīng)答 */
private String alipayPublicKey;
/** 簽名類型 */
private String signType="RSA2";
/** 格式 */
private String formate="json";
/** 編碼 */
private String charset="UTF-8";
/** 同步地址 */
private String returnUrl;
/** 異步地址 */
private String notifyUrl;
/** 最大查詢次數(shù) */
private static int maxQueryRetry=5;
/** 查詢間隔(毫秒) */
private static long queryDuration=5000;
/** 最大撤銷次數(shù) */
private static int maxCancelRetry=3;
/** 撤銷間隔(毫秒) */
private static long cancelDuration=3000;
private AlipayProperties() {}
/**
* PostContruct是spring框架的注解,在方法上加該注解會在項(xiàng)目啟動的時(shí)候執(zhí)行該方法,也可以理解為在spring容器初始化的時(shí)候執(zhí)行該方法。
*/
@PostConstruct
public void init() {
log.info(description());
}
public String description() {
StringBuilder sb=new StringBuilder("\nConfigs{");
sb.append("支付寶網(wǎng)關(guān): ").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(", 查詢重試次數(shù): ").append(maxQueryRetry).append("\n");
sb.append(", 查詢間隔(毫秒): ").append(queryDuration).append("\n");
sb.append(", 撤銷嘗試次數(shù): ").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;
}
}
/**
* 兩個(gè)支付寶客戶端,用戶可以使用任意一個(gè).
*
* 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());
}
}
/**
* 支付寶-電腦網(wǎng)站支付.
* <p>
* 電腦網(wǎng)站支付 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);
// 調(diào)用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){
//驗(yàn)證成功
//請?jiān)谶@里加上商戶的業(yè)務(wù)邏輯程序代碼,如保存支付寶交易號
//商戶訂單號
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;
/**
* 支付異步通知
*
* 接收到異步通知并驗(yàn)簽通過后,一定要檢查通知內(nèi)容,包括通知中的app_id、out_trade_no、total_amount是否與請求中的一致,并根據(jù)trade_status進(jìn)行后續(xù)業(yè)務(wù)處理。
*
* https://docs.open.alipay.com/194/103296
*/
@RequestMapping("/notify")
public String notify(HttpServletRequest request) throws AlipayApiException, UnsupportedEncodingException {
// 一定要驗(yàn)簽,防止黑客篡改參數(shù)
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 需要嚴(yán)格按照如下描述校驗(yàn)通知數(shù)據(jù)的正確性
*
* 商戶需要驗(yàn)證該通知數(shù)據(jù)中的out_trade_no是否為商戶系統(tǒng)中創(chuàng)建的訂單號,
* 并判斷total_amount是否確實(shí)為該訂單的實(shí)際金額(即商戶訂單創(chuàng)建時(shí)的金額),
* 同時(shí)需要校驗(yàn)通知中的seller_id(或者seller_email) 是否為out_trade_no這筆單據(jù)的對應(yīng)的操作方(有的時(shí)候,一個(gè)商戶可能有多個(gè)seller_id/seller_email),
*
* 上述有任何一個(gè)驗(yàn)證不通過,則表明本次通知是異常通知,務(wù)必忽略。
* 在上述驗(yàn)證通過后商戶必須根據(jù)支付寶不同類型的業(yè)務(wù)通知,正確的進(jìn)行不同的業(yè)務(wù)處理,并且過濾重復(fù)的通知結(jié)果數(shù)據(jù)。
* 在支付寶的業(yè)務(wù)通知中,只有交易通知狀態(tài)為TRADE_SUCCESS或TRADE_FINISHED時(shí),支付寶才會認(rèn)定為買家付款成功。
*/
//交易狀態(tài)
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(表示交易已經(jīng)成功結(jié)束,并不能再對該交易做后續(xù)操作);
// TRADE_SUCCESS(表示交易已經(jīng)成功結(jié)束,可以對該交易做后續(xù)操作,如:分潤、退款等);
if(tradeStatus.equals("TRADE_FINISHED")){
//判斷該筆訂單是否在商戶網(wǎng)站中已經(jīng)做過處理
//如果沒有做過處理,根據(jù)訂單號(out_trade_no)在商戶網(wǎng)站的訂單系統(tǒng)中查到該筆訂單的詳細(xì),
// 并判斷total_amount是否確實(shí)為該訂單的實(shí)際金額(即商戶訂單創(chuàng)建時(shí)的金額),并執(zhí)行商戶的業(yè)務(wù)程序
//請務(wù)必判斷請求時(shí)的total_fee、seller_id與通知時(shí)獲取的total_fee、seller_id為一致的
//如果有做過處理,不執(zhí)行商戶的業(yè)務(wù)程序
//注意:
//如果簽約的是可退款協(xié)議,退款日期超過可退款期限后(如三個(gè)月可退款),支付寶系統(tǒng)發(fā)送該交易狀態(tài)通知
//如果沒有簽約可退款協(xié)議,那么付款完成后,支付寶系統(tǒng)發(fā)送該交易狀態(tài)通知。
} else if (tradeStatus.equals("TRADE_SUCCESS")){
//判斷該筆訂單是否在商戶網(wǎng)站中已經(jīng)做過處理
//如果沒有做過處理,根據(jù)訂單號(out_trade_no)在商戶網(wǎng)站的訂單系統(tǒng)中查到該筆訂單的詳細(xì),
// 并判斷total_amount是否確實(shí)為該訂單的實(shí)際金額(即商戶訂單創(chuàng)建時(shí)的金額),并執(zhí)行商戶的業(yè)務(wù)程序
//請務(wù)必判斷請求時(shí)的total_fee、seller_id與通知時(shí)獲取的total_fee、seller_id為一致的
//如果有做過處理,不執(zhí)行商戶的業(yè)務(wù)程序
//注意:
//如果簽約的是可退款協(xié)議,那么付款完成后,支付寶系統(tǒng)發(fā)送該交易狀態(tài)通知。
}
return "success";
}
return "fail";
}
/**
* 訂單查詢(最主要用于查詢訂單的支付狀態(tài))
* @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("系統(tǒng)異常,訂單支付狀態(tài)未知!!!");
break;
default:
log.error("不支持的交易狀態(tài),交易返回異常!!!");
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("無理由退貨");
// 退款訂單號(同一個(gè)訂單可以分多次部分退款,當(dāng)分多次時(shí)必傳)
// 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 請求退款接口時(shí),傳入的退款請求號,如果在退款請求時(shí)未傳入,則該值為創(chuàng)建交易時(shí)的外部訂單號
* @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();
}
/**
* 關(guān)閉交易
* @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();
}
/**
* 校驗(yàn)簽名
* @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>
* 添加路徑和頁面的映射關(guān)系
*
* @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>價(jià)格:20000</h3>
<h3>數(shù)量:10個(gè)</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>電腦網(wǎng)站支付 成功,我們將盡快從越南偷渡過來,收貨后請請及時(shí)驗(yàn)貨!歡迎下次再來</h1>
</body>
</html>
日,綿陽市公安局涪城區(qū)分局在“凈網(wǎng)2020”專項(xiàng)行動中,該局網(wǎng)安部門破獲一起幫助信息網(wǎng)絡(luò)犯罪活動案。15名犯罪嫌疑人落網(wǎng),涉案金額高達(dá)8000余萬元。
2019年10月,涪城區(qū)公安分局網(wǎng)安民警在網(wǎng)上巡查發(fā)現(xiàn),有人通過QQ發(fā)布尋找“第四方支付平臺”合作的信息。
所謂“第四方支付平臺”,其實(shí)是網(wǎng)絡(luò)黑色產(chǎn)業(yè)內(nèi)的“行話”,指的是一種脫離監(jiān)管的自建平臺。“這種平臺往往用于洗錢,為犯罪團(tuán)伙轉(zhuǎn)移贓款提供服務(wù)。”涪城區(qū)公安分局網(wǎng)安大隊(duì)大隊(duì)長劉縛龍介紹,網(wǎng)安部門立即組織警力對線索進(jìn)行核查。
經(jīng)初查,自2019年5月開始,楊某某、謝某某等人與境外賭博網(wǎng)站聯(lián)系非常緊密,雙方的資金來往頻繁。專案民警對楊某某等人展開偵查,發(fā)現(xiàn)該團(tuán)伙組織架構(gòu)清晰,成員分工明確。
他們自建“快支付”、“飛飛支付”平臺,馬某的科技公司提供技術(shù)支持,為全球彩票網(wǎng)、星空彩票網(wǎng)等境外賭博網(wǎng)站提供支付結(jié)算。
虛假交易偽裝 賭資由“黑”變“白”
“參賭人員在賭博網(wǎng)站充值后,將直接跳轉(zhuǎn)到電商平臺,在網(wǎng)店購買虛擬物品,對賭博行為進(jìn)行偽裝。”劉縛龍告訴小直,“第四方支付平臺”實(shí)際上打通了參賭人員和境外賭博網(wǎng)站的通道,將賭資由“黑”洗“白”。
“參與賭博是違法的,賭資就是贓款,通過建立虛假交易訂單的方式,賭資就變成了正常的交易資金。當(dāng)充值資金達(dá)到一定金額后,賭博平臺就會進(jìn)行提現(xiàn)。” 劉縛龍說,經(jīng)查楊某某等人為境外博彩網(wǎng)站過賬高達(dá)8000余萬元。
風(fēng)控部門出“內(nèi)鬼” 為“洗錢”大開方便之門
不過,電商平臺都有專門的風(fēng)控部門,他們?nèi)绱祟l繁、異常的資金流動,是如何逃過監(jiān)管的呢?專案組判斷很有可能存在“內(nèi)鬼”。
證據(jù)顯示,某電商平臺的風(fēng)控人員陳某某與楊某某等人相互勾結(jié),每日從店鋪交易總額中抽取3‰的“點(diǎn)子”,保障楊某某等人的大量虛假銷售不被平臺風(fēng)控凍結(jié)。
通過調(diào)查發(fā)現(xiàn),賭博網(wǎng)站的技術(shù)和客服人員均位于柬埔寨,專案組對賭博平臺的注冊、充值、提現(xiàn)等流程進(jìn)行了遠(yuǎn)程取證,固定了上述平臺開設(shè)賭場的性質(zhì)。
2019年12月10日,專案組在廣州、成都、綿陽三地同時(shí)展開抓捕,將楊某某、謝某某、陳某某等15名犯罪嫌疑人抓獲,摧毀了一條由電商平臺運(yùn)營負(fù)責(zé)人(內(nèi)鬼)、店鋪提供商、碼商、第四方支付團(tuán)伙、平臺安全防護(hù)、服務(wù)器搭建組成的黑色產(chǎn)業(yè)鏈條。
經(jīng)查,楊某某等人為賭博團(tuán)伙提供過賬服務(wù)以來,已獲利200余萬元。目前,楊某某等人因涉嫌幫助信息網(wǎng)絡(luò)犯罪活動罪,已被公安機(jī)關(guān)刑事拘留,案件正在進(jìn)一步辦理當(dāng)中。
聲明:轉(zhuǎn)載此文是出于傳遞更多信息之目的。若有來源標(biāo)注錯(cuò)誤或侵犯了您的合法權(quán)益,請作者持權(quán)屬證明與本網(wǎng)聯(lián)系,我們將及時(shí)更正、刪除,謝謝。
月7日,中共中央政治局委員、外交部長王毅就“中國外交政策和對外關(guān)系”相關(guān)問題回答中外記者提問。王毅在會上宣布,從3月14日起,中方將進(jìn)一步對瑞士、愛爾蘭、匈牙利、奧地利、比利時(shí)、盧森堡六國試行免簽政策。消息一出,多家在線旅游平臺相關(guān)國家旅游產(chǎn)品搜索量快速上漲。
隨著全球逐步走出新冠疫情的陰影,境外游客將中國作為旅行目的地并入境的比例也越來越高,但支付習(xí)慣和方式的差異是讓來華外國人頭疼的問題。澎湃新聞(www.thepaper.cn)此前曾報(bào)道,有全國政協(xié)委員在調(diào)研中發(fā)現(xiàn),支付不便讓一些在華的外國朋友很苦惱,有的外企老總在中國市場做調(diào)研,沒有微信和支付寶,“簡直寸步難行”。
對此,中國政府近期針對提升境外人士支付便利化問題多次表態(tài),并推出多項(xiàng)措施。2月23日,國務(wù)院常務(wù)會議審議通過《關(guān)于進(jìn)一步優(yōu)化支付服務(wù)提升支付便利性的意見》,其中就提到要聚焦外籍來華人員支付不便問題,加強(qiáng)協(xié)同配合,加大必要的資源投入,多措并舉打通服務(wù)堵點(diǎn)。2月29日,中國人民銀行召開優(yōu)化支付服務(wù)推進(jìn)會部署相關(guān)工作。3月1日,在國務(wù)院新聞辦公室舉行的國務(wù)院例行吹風(fēng)會上,中國人民銀行副行長張青松介紹,我國將通過推動重點(diǎn)場所和重點(diǎn)商戶受理境外銀行卡、持續(xù)改善現(xiàn)金使用環(huán)境等六大舉措,進(jìn)一步優(yōu)化支付服務(wù)。
在此背景下,為便利來華外籍人士,上海門戶網(wǎng)站專門做了一個(gè)專題(https://english.shanghai.gov.cn/en-PaymentsInShanghai/index.html),將所有關(guān)于支付的信息做了匯總,放在了門戶首頁大圖的輪播位,方便用戶在短時(shí)間內(nèi)找到最有價(jià)值的內(nèi)容。
在這個(gè)門戶網(wǎng)站的專題中,可以找到有關(guān)支付信息的最有價(jià)值的內(nèi)容。
進(jìn)入門戶網(wǎng)站,第一欄是“如何像本地人一樣支付”(How to seamlessly pay like a local in China),點(diǎn)進(jìn)去之后有英文版的視頻和文字解釋如何設(shè)置手機(jī)支付,步驟非常清晰、詳盡。不論是微信支付還是支付寶支付,用戶都能找到自己使用的銀行卡適合的支付方式。
在網(wǎng)站上可以查詢自己手上的銀行卡是否支持微信或支付寶支付。
最后,網(wǎng)站還回答了一些外國人來華旅游常見的疑問,比如是否需要電話卡設(shè)置支付賬號,是否有轉(zhuǎn)賬限額等等。
網(wǎng)站還回答了一些外國人來華旅游常見的疑問。
除了線上支付外,門戶網(wǎng)站還在第二欄介紹了如何使用比較傳統(tǒng)的方式支付,比如銀行卡、現(xiàn)金支付,以及如果在線上支付的使用過程中遇到問題,如何致電尋求幫助。
如果有開戶的需求,可以打開第三欄“如何創(chuàng)建銀行賬戶”,從如何選擇開戶行到開戶的要求,都能在這一欄找到需要的信息。
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。