微信代收款平台-微信代付款平台
作者:晴。晶子 更新 :2023-06-02 09:58:02 百科杂谈
内容导航:
一、微信支付及支付回调
1.微信支付
通过微信平台为商家提供代收款服务
1.1微信支付的业务--商户注册微信支付业务:
1.2申请支付订单--商户向支付平台申请支付链接
支付订单,并不是用户提交的商品订单,而是商品向微信支付平台申请的支付链接
1.2.1导入微信支付的依赖
wxpay的maven依赖:
wxpay-sdk
0.0.3
1.2.2创建微信支付配置类,配置商品信息
创建一类,实现WXPayConfig接口
重写三分方法,分别设置商品AppID商户ID商户密钥
package ;
import ig;
import am;
/**
@Description:
@Author : Jerry
@create : 2023-07-02 18:16
*/
public class MyPayConfig implements WXPayConfig {
@Override
public String getAppID() {
return wx632c8f211f8122c6;
}
@Override
public String getMchID() {
return ;
}
@Override
public String getKey() {
return sbNCm1JnevqI36LrEaxFwcaT0hkGxFnc;
}
@Override
public InputStream getCertStream() {
return null;
}
@Override
public int getHttpConnectTimeoutMs() {
return 0;
}
@Override
public int getHttpReadTimeoutMs() {
return 0;
}
}
1.2.3设置订单的参数
//设置当前订单信息
HashMap data = new HashMap<>();
(fee_type,CNY); //支付币种
(total_fee,0.1); //支付总金额
(body,咪咪虾条); // 商品描述
//使用当前用户订单的编号作为当前支付交易的交易号
(out_trade_no, orderId);
(trade_type,NATIVE); //交易类型
(notify_url,/pay/success); //设置支付完成时的回调方法接口
修改OrderService的实现类:
package ;
import Mapper;
import per;
import uMapper;
import artMapper;
import ;
import ;
import u;
import artVO;
import ice;
import .R;
import ;
import ;
import ;
import onal;
import l;
import .*;
/**
@Description:
@Author : Jerry
@create : 2023-07-01 17:46
*/
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private ShoppingCartMapper shoppingCartMapper;
@Autowired
private OrdersMapper ordersMapper;
@Autowired
private OrderItemMapper orderItemMapper;
@Autowired
private ProductSkuMapper productSkuMapper;
/**
保存订单业务
@param cids 在购物车列表页面选择得购物车记录的ID
@param order
@return
*/
@Transactional
public Map addOrder(String cids, Orders order) {
Map map = new HashMap<>();
//1.校验库存:根据cids查询当前订单中关联的购物车记录详情(包括库存)
String[] arr = (,);
List cidList = new ArrayList<>();
for (int i = 0; i<; i++){
((arr[i]));
}
List list = pCartByCids(cidList);
boolean f = true;
String untitled = ;
for (ShoppingCartVO sc: list){
if((m())>ck()){
f = false;
}
//获取所有商品名称,以,分割拼接称字符串
untitled = untitled+tName()+,;
}
if(f){
//2. 保存订单
//收货人信息:姓名,电话,地址,商品总价格,支付方式,订单创建时间
//订单初始状态(待支付 1)
ed(untitled);
Time(new Date());
(1);
//生成订单编号
String orderId = D().toString().replace(-, );
d(orderId);
(order);
//3.生成商品快照
for(ShoppingCartVO sc:list){
int cnum = (m());
String itemId = meMillis()++(new Random().nextInt()+);//增大容错率
OrderItem orderItem = new OrderItem(itemId, orderId, tId(), tName(), tImg(),(), e(), new BigDecimal(ice())
, cnum, new BigDecimal(ice()*cnum), new Date(), new Date(), 0);
(orderItem);
}
//4.扣减库存:根据套餐id修改套餐库存量
for (ShoppingCartVO sc: list){
String skuId = ();
int newStock = ck() - (m());
//updateByExampleSelective只添加修改的,其他的不变
ProductSku productSku = new ProductSku();
(skuId);
(newStock);
rimaryKeySelective(productSku);
}
//5.删除购物车:当购物车中得记录购买成功之后,购物车中对应做删除操作
for(int cid:cidList){
rimaryKey(cid);
}
(orderId,orderId);
(productNames,untitled);
return map;
}else {
//表示库存不足
return null;
}
}
}
OrderController:(微信支付实现)
package r;
import ;
import ig;
import ;
import ice;
import .R;
import ;
import ;
import n.*;
import ;
import ;
/**
@Description:
@Author : Jerry
@create : 2023-07-01 19:40
*/
@RestController
@CrossOrigin
@RequestMapping(/order)
public class OrderController {
@Autowired
private OrderService orderService;
@PostMapping(/add)
public R add(String cids, @RequestBody Orders order){
R r = null;
try {
Map orderInfo = (cids, order);
String orderId = (orderId);
if(orderId!=null){
//设置当前订单信息
HashMap data = new HashMap<>();
(fee_type,CNY); //支付币种
(total_fee,Amount()*100+); //支付总金额
(body,(productNames)); // 商品描述
//使用当前用户订单的编号作为当前支付交易的交易号
(out_trade_no, orderId);
(trade_type,NATIVE); //交易类型
(notify_url,/pay/success); //设置支付完成时的回调方法接口
//发送请求,获取响应
//微信支付:申请支付连接
WXPay wxPay = new WXPay(new MyPayConfig());
Map resp = der(data);
(payUrl,(code_url));
//orderInfo中包含了:订单编号,购买的商品名称,支付链接
r = new R(,提交订单成功!!!,orderInfo);
}else {
r = new R(,提交订单失败!!!,null);
}
} catch (Exception e) {
r = new R(,提交订单失败!!!,null);
}
return r;
}
}
2.支付回调
支付回调:当用户支付成功之后,支付平台会向我们指定的服务器接口发送请求传递订单支付状态数据
2.1 创建一个控制器定义回调接口
package r;
import ;
import ice;
import ;
import ng;
import pping;
import oller;
import putStream;
import etRequest;
import ;
import ;
/**
@Description: 回调接口:当用户支付成功之后,微信支付平台就会请求这个接口,将支付状态的数据传递过来
@Author : Jerry
@create : 2023-07-02 18:44
*/
@RestController
@RequestMapping(/pay)
public class PayController {
@Autowired
private OrderService orderService;
/**
- 1.接收微信支付平台传递的数据(使用request的输入流接收)
*/
@PostMapping(/callback)
public String success(HttpServletRequest request) throws Exception {
ServletInputStream is = tream();
byte[] bs = new byte[1024];
int len = -1;
StringBuilder builder = new StringBuilder();
while ((len = (bs)) != -1){
(new String(bs,0,len));
}
String s = ();
//使用帮助类将xml接口的字符串转换成map
Map map = (s);
if(map!=null && oreCase((result_code))){
//支付成功
//2.修改订单状态为“待发货/已支付”
String orderId = (out_trade_no);
int i = erStatus(orderId, 2);
(--orderId:+orderId);
//3.响应微信支付平台
if(i>0){
HashMap resp = new HashMap<>();
(return_code,success);
(return_msg,OK);
(appid,(appid));
(result_code,success);
return (resp);
}
}
//支付失败
return null;
}
}
2.2 设置回调URL
在订单接口中申请支付链接的时候将回调接口的路径设置给微信支付平台
2.3 Ngrok实现内网穿透
网站:
注册账号,申请隧道id
开通隧道:
获取隧道id:
下载客户端
2.4 前端通过轮询访问获取订单支付状态
流程图:
接口实现:
service接口:
package ;
import ;
import .R;
import ;
/**
@Description: 订单接口
@Author : Jerry
@create : 2023-07-01 17:45
*/
public interface OrderService {
public Map addOrder(String cids, Orders order);
public int updateOrderStatus(String orderId,String status);
public R getOrderById(String orderId);
}
service实现类:
@Override
public R getOrderById(String orderId) {
Orders orders = rimaryKey(orderId);
return new R(,success,());
}
controller:
@GetMapping(/status/{oid})
public R getOrderStatus(@PathVariable(oid) String orderId,
@RequestHeader(token)String token){
R r = yId(orderId);
return r;
}
2.5 webSocket消息推送:
实现流程:
2.5.1 创建webSocket服务器
添加依赖:
spring-boot-starter-websocket
添加websocket服务节点配置:(Java配置方式)
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter getServerEndpointExporter(){
return new ServerEndpointExporter();
}
}
创建websocket服务器:
package ;
import ;
import ng;
import ;
import ;
import ;
import ;
import point;
import on;
import tHashMap;
/**
@Description:
@Author : Jerry
@create : 2023-07-03 13:06
*/
@Component
@ServerEndpoint(/webSocket/{oid})
public class WebSocketServer {
private static ConcurrentHashMap sessionMap = newConcurrentHashMap<>();
/**
- 前端发送请求建立websocket连接,就会执行 @OnOpen 方法
*/
@OnOpen
public void open(@PathParam(oid) String orderId, Session session){
(---------建立连接:+orderId);
(orderId,session);
}
/**
- 前端关闭页面或者主动关闭webSocket连接,都会执行close
*/
@OnClose
public void close(@PathParam(oid) String orderId){
(orderId);
}
public static void sendMsg(String orderId,String msg){
try {
Session session = (orderId);
emote().sendText(msg);
} catch (IOException e) {
kTrace();
}
}
}
修改回调接口:
二、微信支付宝代收平台靠谱吗
还可以。
代收款平台是一个和彩虹易支付一样的免签约支付产品,可以助你一站式解决网站签约各种支付接口的难题。微信支付是腾讯集团旗下中国领先的第三方支付平台,一直致力于为用户和企业提供安全、便捷、专业的在线支付服务。
三、微信支付宝代收款平台联系方式
代收款第三方平台。
在我们国家对于这种代收款的第三方平台是有着严格的限制的,从目前来说,我们国内的代收款的第三方收款平台一共有支付宝,这也是国内最大,的独立第三方支付平台之一其次是微信,支付,银联在线京东,付一钱包,拉卡拉,汇付天下,一宝支付,银联商务。支付宝是国内最大的独立第三方支付平台之一。
- END -
干什么可以挣钱-现在在家干什么可以挣钱
干什么可以挣钱,现在在家干什么可以挣钱内容导航:在加拿大当警察可以有多挣钱早上可以做什么挣钱{title3}一、在加...
什么最挣钱-什么行业最挣钱
什么最挣钱,什么行业最挣钱内容导航:现在做什么最挣钱什么行业最能挣钱现在干什么最挣钱一、现在做什么最挣钱现在I...
拼多多任务平台,拼多多任务平台赚钱
拼多多任务平台,拼多多任务平台赚钱内容导航:拼多多客服外包的条件(拼多多店铺需要找客服外包平台吗)怎么在淘差事中...
女性副业干点什么好,女生副业可以干点什么
女性副业干点什么好,女生副业可以干点什么内容导航:四十岁的男人,干一点什么小生意好呢这几方面15种最适合女性的副...
招聘客服在家办公工作-在家办公招聘客服双休
招聘客服在家办公工作,在家办公招聘客服双休内容导航:在家带娃的宝妈可以赚钱的2种工作类型移动客服在家就能工作是...
适合业余时间做的副业-适合业余时间做的副业有哪些
适合业余时间做的副业,适合业余时间做的副业有哪些内容导航:上班挣得少业余时间做这10个副业,提高收入。有哪些副业...
适合30岁女人学的谋生技术-30岁的女人学什么好
适合30岁女人学的谋生技术,30岁的女人学什么好内容导航:日系穿搭极具魅力,时髦前卫不失女人味,特别适合30岁的女人三...
网上配音兼职-网上配音兼职多少钱一篇
网上配音兼职,网上配音兼职多少钱一篇内容导航:微静乐第1975丨“用声音月入过万”陷阱重重太原市反诈骗中心揭秘“...
新疆开什么门店利润高-新疆有什么商机
新疆开什么门店利润高,新疆有什么商机内容导航:蜜雪冰城拟登陆深交所主板,物流逻辑对标7ELEVEn新疆做什么生意赚钱{t...
如何能快速空手挣到500万-如何能快速空手挣到500万块钱
如何能快速空手挣到500万,如何能快速空手挣到500万块钱内容导航:如何才能挣到更多的钱送给你三个锦囊怎么快速的挣...