首页 > 编程语言 >电商收付通系列⑦,合单下单之小程序支付

电商收付通系列⑦,合单下单之小程序支付

时间:2023-03-01 13:04:10浏览次数:24  
标签:info String private 合单 下单 jsapiParam subOrder 电商

大家好,我是小悟


1、介绍

使用合单支付接口,用户只输入一次密码,即可完成多个订单的支付。目前最少一次可支持2笔,最多一次10笔订单进行合单支付。

在我接这个接口的时候,官方并没有明确给出合单支付支持小程序支付,凭借一腔热血去尝试了一下可以成功,prepay_id就是调用JS合单支付获取的。现在再看文档,已经明确列出来了“小程序调起支付”的字眼。所以大家可以放心的接入小程序合单支付哈。

支付场景较多,系列文章只介绍小程序合单支付,APP合单支付、JS合单支付依瓢画葫芦,都一样哈。要注意,合单中同一个二级商户只允许有一笔子订单。订单如果需要进行分账等,需要在合单中指定需要进行分账(profit_sharing为true)。


2、创建参数实体

按文档创建参数实体类。

参数实体JsapiParam:

@Data
public class JsapiParam {
private String combine_appid;
private String combine_mchid;
private String combine_out_trade_no;
private SceneInfo scene_info;
private List<SubOrder> sub_orders;
private CombinePayerInfo combine_payer_info;
private String time_start;
private String time_expire;
private String notify_url;
private String limit_pay;
}

参数实体SceneInfo:

@Data
public class SceneInfo {

private String device_id;
private String payer_client_ip;
}

参数实体SubOrder:

@Data
public class SubOrder {

private String mchid;
private String attach;
private Amount amount;
private String out_trade_no;
private String sub_mchid;
private String detail;
private Boolean profit_sharing;
private String description;
private SettleInfo settle_info;

}

参数实体CombinePayerInfo:

@Data
public class CombinePayerInfo {

private String openid;
}

参数实体Amount:

@Data
public class Amount {

private Integer total_amount;
private String currency;
}

​参数实体SettleInfo:

@Data
public class SettleInfo {

private Boolean profit_sharing;
private Integer subsidy_amount;
}

电商收付通系列⑦,合单下单之小程序支付_电商收付通

3、生成预支付交易会话标识prepay_id

public static JSONObject jsapi(JsapiParam param) {

String requestParam = JSON.toJSONString(param);

logger.info("jsapi param:{}",requestParam);

HttpResponse response = HttpUtils.v3HttpExecute("POST", TransactionsUrl.JSAPI,
"自己系统的应用名称","服务商商户号","商户API证书序列号","平台证书序列号",requestParam,"商户API证书位置.pem",null);
JSONObject body = JSONObject.parseObject(response.body());

logger.info("jsapi heads result:{}",response.headers());

logger.info("jsapi body result:{}",body);

return body;
}
public static void main(String[] args) {
JsapiParam jsapiParam = new JsapiParam();
jsapiParam.setCombine_appid("服务商appid");
jsapiParam.setCombine_mchid("服务商商户号");
jsapiParam.setCombine_out_trade_no("out_trade_no1_"+System.currentTimeMillis() + "");

SceneInfo sceneInfo = new SceneInfo();
sceneInfo.setDevice_id("POS1:12");
sceneInfo.setPayer_client_ip("14.17.22.32");

jsapiParam.setScene_info(sceneInfo);

SubOrder subOrder = new SubOrder();
subOrder.setMchid("服务商商户号");
subOrder.setAttach("123&456&789");
Amount amount = new Amount();
amount.setTotal_amount(1);
amount.setCurrency("CNY");
subOrder.setAmount(amount);
subOrder.setOut_trade_no("out_trade_no2_"+System.currentTimeMillis() + "");
subOrder.setSub_mchid("二级商户商户号");
subOrder.setDetail("商品详细描述"+subOrder.getSub_mchid());
subOrder.setProfit_sharing(true);
subOrder.setDescription("商品"+subOrder.getSub_mchid());

List<SubOrder> subOrders = new ArrayList<>();
subOrders.add(subOrder);

jsapiParam.setSub_orders(subOrders);

CombinePayerInfo combinePayerInfo = new CombinePayerInfo();
combinePayerInfo.setOpenid("服务商appid对应下的openid");
jsapiParam.setCombine_payer_info(combinePayerInfo);
String a = DateFormatUtils.format(new Date(),"yyyy-MM-dd'T'HH:mm:ssZZ");
System.out.println("a====="+a);
jsapiParam.setTime_start(a);
jsapiParam.setNotify_url("https://yourapp.com/notify");

jsapi(jsapiParam);
}

​获取的结果

电商收付通系列⑦,合单下单之小程序支付_微信支付_02

电商收付通系列⑦,合单下单之小程序支付_微信支付_03

4、计算签名值

签名规则:

public static String paySign(String mchAppid,String timestamp,String nonceStr,String packageParam,String mchPrivateKeyPath) {

try {

//商户私钥
String mchPrivateKey = CertificateUtils.getPrivateKey(mchPrivateKeyPath);
logger.info("timestamp:{},nonceStr:{}",timestamp,nonceStr);

//拼签名串
StringBuilder sb = paySignMessage(mchAppid,timestamp,nonceStr,packageParam);

logger.info("paySign original string:{}",sb.toString());

//计算签名
String paySign = new String(Base64.encodeBase64(v3signRSA(sb.toString(),mchPrivateKey)));

logger.info("paySign result:{}",paySign);

return paySign;

} catch (Exception e) {
logger.error("authorization Exception result:{}",e);
e.printStackTrace();
return null;
}
}

5、小程序端测试

将参加签名timeStamp、nonceStr、package以及签名结果paySign传给小程序端,paySign默认为RSA,即可在小程序端唤起支付

例如:

wx.requestPayment(
{
"timeStamp": "1414561699",
"nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS",
"package": "prepay_id=wx201410272009395522657a690389285100",
"signType": "RSA",
"paySign": "oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==",
})

电商收付通系列⑦,合单下单之小程序支付_电商收付通_04

6、结果

电商收付通系列⑦,合单下单之小程序支付_电商收付通_05

电商收付通系列⑦,合单下单之小程序支付_电商收付通_06

电商收付通系列⑦,合单下单之小程序支付_电商收付通_07


您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海

标签:info,String,private,合单,下单,jsapiParam,subOrder,电商
From: https://blog.51cto.com/wukongmazi/6090319

相关文章

  • 电商收付通系列⑥,商户进件之查询申请状态
    大家好,我是小悟1、介绍电商平台通过查询申请状态API查询二级商户入驻申请结果。该查询服务提供两种查询方式,分别是业务申请编号查询和申请单号查询,两种查询方式返回结果一致......
  • 运联智库发布跨境电商物流50强排行榜
    2023年2月23日,运联智库旗下运联研究院正式发布《2022年度跨境电商物流企业50强排行榜》。榜单显示,纵腾、中国外运、递四方、顺丰国际、燕文、港中旅华贸、菜鸟、万邑通、递......
  • 跨境电商课程(一)
       2023.2.2514:00-17:00一、跨境电商的概念是跨境贸易电子商务的简称,是电子商务发展过程中一种较为高级的形态,指的是不同国家或地区的交易主体(生产企业、贸......
  • 电商客服系统功能需求点-实现电商多商家客服系统
    在线客服系统:在线客服系统是一种通过网站或APP提供在线客服服务的平台。在这个平台上,用户可以向客服人员咨询问题或寻求帮助,客服人员则可以实时回答问题和提供帮助。这种......
  • 直播电商平台开发,动态去除系统自带标题栏、状态栏
    直播电商平台开发,动态去除系统自带标题栏、状态栏一、如何去除系统自带标题栏?(1)在value目录下的styles.xml文件新建一个style   <stylename="NoTitle_one"paren......
  • 2023年1月牛奶乳品电商数据分析(电商平台销量排行)
    随着人们消费能力的提升以及健康意识的增强,牛奶乳品已经成为居民日常饮食中的重要组成部分,伴随人们整体消费的增长,牛奶乳品行业也越来越成熟。今年1月份我国牛奶乳品行业的......
  • 2022年中国前10电商GMV总结
    我是卢松松,点点上面的头像,欢迎关注我哦!1,阿里8万亿;2,京东3万亿;3,拼多多3万亿;4,小程序私域电商3万亿;5,抖音电商1.4万亿。6,抖音本地生活服务电商600亿。7,美团1万亿;8,快手电商70......
  • WindowS 平台下单实例Oracle 11.2.0.1 升级Oracle 11.2.0.4
     由于业务环境需要,只有11.2.0.4可以直接升级19C,所以现需先升级到11.2.0.4主要步骤如下:备份数据,RMAN全备,必要的话建议拷贝一份HOME目录;下载升级包11.2.0.4关闭数据库,包括监......
  • 电商数据分析:母婴行业妈妈用品全网热销,头部品牌格局初现
    以往,奶粉、纸尿裤这类产品基本就代表了整体母婴市场中的消费品。而如今,随着母婴行业的高速发展和消费升级,母婴商品的种类日益丰富,需求也不断深入。在京东平台,母婴大品类中除......
  • 电商导购CPS,淘宝联盟如何跟单实现用户和订单绑定
    前言大家好,我是小悟做过自媒体的小伙伴都知道,不管是发图文还是发短视频,直播也好,可以带货。在你的内容里面挂上商品,你自己都不需要囤货,如果用户通过这个商品下单成交了,自媒体......