电商收付通系列⑩,合单下单之扫码支付
【摘要】 Native支付是指商户系统按微信支付协议调用接口生成code_url,在把code_url生成支付二维码,用户再用微信“扫一扫”完成支付的模式。
大家好,我是小悟
1、介绍
Native支付是指商户系统按微信支付协议调用接口生成code_url,在把code_url生成支付二维码,用户再用微信“扫一扫”完成支付的模式。
Native支付常用于PC网站、实体店单品或订单、媒体广告支付等场景,用户扫描商户展示在各种场景的二维码进行支付。
商户根据微信支付的规则,为不同商品生成不同的二维码,展示在各种场景,用于用户扫描购买。
用户确认支付,输入支付密码,支付完成后会提示用户支付成功,商户后台得到支付成功的通知,然后进行发货处理。
2、代码实现
public static JSONObject payNative(PayParam param) {
String requestParam = JSON.toJSONString(param);
logger.info("payNative param:{}",requestParam);
HttpResponse response = HttpUtils.v3HttpExecute("POST", TransactionsUrl.NATIVE,
"自己系统的应用名称","服务商商户号","商户API证书序列号","平台证书序列号",requestParam,"商户API证书位置.pem",null);
logger.info("payNative jsonObject:{}",response);
return null;
}
public static void main(String[] args) {
PayParam payParam = new PayParam();
payParam.setCombine_appid("");
payParam.setCombine_mchid("");
payParam.setCombine_out_trade_no("out_trade_no1_"+System.currentTimeMillis());
SceneInfo sceneInfo1 = new SceneInfo();
sceneInfo1.setDevice_id("POS1:12");
sceneInfo1.setPayer_client_ip("120.36.255.14");
payParam.setScene_info(sceneInfo1);
PaySubOrder paySubOrder = new PaySubOrder();
paySubOrder.setMchid("");
paySubOrder.setAttach("123&456");
Amount amount1 = new Amount();
amount1.setTotal_amount(2);
amount1.setCurrency("CNY");
paySubOrder.setAmount(amount1);
paySubOrder.setOut_trade_no("out_trade_no2_"+System.currentTimeMillis() + "");
paySubOrder.setSub_mchid("");
//商品简单描述。需传入应用市场上的APP名字-实际商品名称,例如:天天爱消除-游戏充值。
//示例值:腾讯充值中心-QQ会员充值
paySubOrder.setDescription("腾讯充值中心-QQ会员充值");
SettleInfo settleInfo = new SettleInfo();
settleInfo.setProfit_sharing(true);
paySubOrder.setSettle_info(settleInfo);
List<PaySubOrder> paySubOrders = new ArrayList<>();
paySubOrders.add(paySubOrder);
payParam.setSub_orders(paySubOrders);
payParam.setNotify_url("https://yourapp.com/notify");
payNative(payParam);
}
3、结果
{"code_url":"weixin://wxpay/bizpayurl/up?pr=juMoKaK&groupid=00"}
该模式链接较短,生成的二维码打印到结账小票上的识别率较高。二维码的有效期是2小时。微信支付已经不支持通过长按识别二维码的方式或通过相册识别二维码
的方式完成支付。
4、转换二维码
用户支付成功后,微信支付会将支付结果通知给商户,通知的地址就是在调用接口时传入的notify_url的值。通知URL必须为直接可访问的URL,不允许携带查询串,
要求必须为https地址。
当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知、调用支付接口后,返回系统错误或未知交易状态情况、调用付款码支付API,返回
USERPAYING的状态、调用关单或撤销接口API之前,需确认支付状态。商户也可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。
查询订单状态可通过微信支付订单号或商户订单号两种方式查询。
您的一键三连,是我更新的最大动力,谢谢
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)