商城网站接入H5微信支付

2024-12-12 21:02 222.88.225.43 1次
发布企业
南阳世惠诚科技有限公司商铺
认证
资质核验:
已通过营业执照认证
入驻顺企:
3
主体名称:
南阳世惠诚科技有限公司
组织机构代码:
91411303MAE6T68Y17
报价
请来电询价
品牌
融河矩媒
出具发票
支持
所在地
中国 河南 南阳市 卧龙区卧龙岗街道汉画馆东门28号向北300米路东
联系电话
18703995109
全国服务热线
13323693821
业务经理
刘贵  请说明来自顺企网,优惠更多
请卖家联系我
ronghe360

产品详细介绍

项目是 H5 项目,这里踩坑了,以为接入 H5 支付就可以了,后面发现 H5 支付只能在微信外调用,后面连忙加入 JSAPI支付。H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。

说明:要求商户已有H5商城网站,并且已经过ICP备案,即可申请接入。


申请开通需要3-5天

JSAPI支付

JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,商户的支付场景是在微信内置浏览器打开调起支付完成收款。

411.jpg

接入前准备

微信支付官方的文档已经比较详细了,可以先从指引文档,基础支付入手

需要用到 appid,具体参考文档,有个公众号就可以了


就是关于商户的一些信息及证书(参考文档)


对于 JSAPI 接入,需要用到用户的 openid,需要在公众号内配置


公众号 -> 设置与开发 -> 公众号设置 -> 功能设置 -> 网页授权域名


JSAPI是在 js内调起支付,这个地方域名填写前端域名就可以了(基本上配置域名配置前端域名就可以了),配置的时候要将txt文件放到前端服务器的根目录才可以确认


需要注意的是,目前这个域名配置只能配置两个,网上的解决办法是搭个反向代理服务器



选择 SDK

在微信官方文档的指引文档中的开发指引,选择对应的 SDK


我使用的 Java 直接用第一个就可以了

Maven方式引入


初始化

需要加载商户私钥,平台证书,初始化 httpClient …

关于证书,大概有三个文件

apiclient_cert.p12

apiclient_cert.pem

apiclient_key.pem

要安装证书,windows下直接双击 apiclient_cert.p12即可,剩下的自己看需求操作,Linux自行百度


其中 apiclient_key.pem 是商户私钥


获取私钥的代码封装


/**

 * 获取私钥。

 *

 * @param filename 私钥文件路径  (required)

 * @return 私钥对象

 */

public static PrivateKey getPrivateKey(String filename) throwsIOException {

String content = newString(Files.readAllBytes(Paths.get(filename)), "utf-8");

try {

    String privateKey = content.replace("-----BEGINPRIVATE KEY-----", "")

        .replace("-----END PRIVATEKEY-----", "")

        .replaceAll("\\s+", "");


    KeyFactory kf = KeyFactory.getInstance("RSA");

    return kf.generatePrivate(newPKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKey)));

  } catch (NoSuchAlgorithmException e) {

  throw new RuntimeException("当前Java环境不支持RSA", e);

  } catch (InvalidKeySpecException e) {

  throw new RuntimeException("无效的密钥格式");

  }

}


初始化代码如下

/** 平台证书管理器 */

private static CertificatesManager certificatesManager;

/** 商户私钥 */

private static PrivateKey privateKey;

/** 如果你是使用ApacheHttpClient的商户开发者,可以使用它构造HttpClient。得到的HttpClient在执行请求时将自动携带身份认证信息,并检查应答的微信支付签名。*/

private static CloseableHttpClient httpClient = null;


//--- 此处参数根据自己的内容赋值

/** 商户id */

private String mchId;

/** 商户序列号 */

private String mchSerialNo;

/** api_v3_key */

private String apiV3Key;


public static void init() {

// 加载商户私钥(privateKey:私钥字符串)

privateKey = getPrivateKey("apiclient_key.pem文件地址"));

// 获取证书管理器实例

certificatesManager = CertificatesManager.getInstance();

// 向证书管理器增加需要自动更新平台证书的商户信息

certificatesManager.putMerchant(mchId, newWechatPay2Credentials(mchId,

new PrivateKeySigner(mchSerialNo, privateKey)),

    apiV3Key.getBytes(StandardCharsets.UTF_8));

   

    // 初始化httpClient

httpClient = WechatPayHttpClientBuilder.create()

.withMerchant(mchId, mchSerialNo, privateKey)

.withValidator(newWechatPay2Validator(certificatesManager.getVerifier(mchId))).build();

}

在项目启动的时候执行 init() 初始化就可以了


不同的地方

对于后端来说,H5支付和JSAPI支付不同的地方差不多只有下单部分

下单部分有些参数不一样,以及返回不一样,还有 url 不一样,以及前端调起支付的方式不一样

查询订单,退款,支付通知这些一模一样,可以通用


下单

H5支付或者JSAPI支付,第一步是下单,下单在指引文档中都有代码示例,这里多阐述。文档内使用的是字符串追加形式拼接的参数,我们可以改为JSONObject

H5 下单比较简单,服务端下单后,响应一串 url,将这串 url 给前端,让前端跳转到此 url即可完成调用微信支付,付款

JSAPI 则需要先获取到用户 openid,带上 openid 下单

关于南阳世惠诚科技有限公司商铺首页 | 更多产品 | 联系方式 | 黄页介绍
成立日期2020年09月02日
法定代表人刘贵
注册资本3
主营产品南阳网络推广,南阳seo,南阳网络推广公司,南阳新媒体推广,南阳网络营销策划,南阳网络营销,南阳网络推广外包,南阳网站推广,河南网络营销,南阳网站优化
经营范围信息技术咨询服务;网络与信息安全软件开发;网络技术服务;互联网安全服务;软件开发;软件外包服务;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;广告设计、代理;广告制作;平面设计;个人商务服务;公共资源交易平台运行技术服务;环保咨询服务;市场营销策划;企业管理咨询;企业形象策划;摄像及视频制作服务;认证咨询(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)
公司简介融河矩媒是河南一家专注于互联网广告及网络营销领域的公司。秉承“诚信为本、客户至上、成就客户、合作共赢”的企业理念,根据不同行业客户需求提供一站式营销整合营销推广服务。融河矩媒核心创业团队来自指名互联网和广告传媒企业,具有十多年企业互联网服务和运营经验,所以我们能更好把握企业需求,为您精心锻造每个项目。融河矩媒企业网络营销推广服务一览:A)网络营销平台建设:网站建设/小程序开 ...
公司新闻
顺企网 | 公司 | 黄页 | 产品 | 采购 | 资讯 | 免费注册 轻松建站
免责声明:本站信息由南阳世惠诚科技有限公司自行发布,交易请核实资质,谨防诈骗,如有侵权请联系我们   法律声明  联系顺企网
© 11467.com 顺企网 版权所有
ICP备案: 粤B2-20160116 / 粤ICP备12079258号 / 粤公网安备 44030702000007号 / 互联网药品信息许可证:(粤)—经营性—2023—0112