但凡系统或者平台,都离不开支付系统,除非你是免费的,hhhh。既然用到支付系统,就离不开,微信、支付宝、银行卡等支付。那今天就先说说平台怎么接入微信支付。
准备工作: 首先去微信开发平台的商户平台,注册商户信息,申请支付权限,获得appKey等信息,这里就不一一举例了,只讲代码业务实现逻辑部分。
微信支付有几种支付方式:分别如下:
JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。
想了解具体什么是JSAPI支付可以点击这里。
JSAPI支付适用于线下场所、公众号场景和PC网站场景。
商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程。
APP支付是指商户通过在移动端应用APP中集成开放SDK调起微信支付模块来完成支付。目前微信支付支持手机系统有:IOS(苹果)、Android(安卓)和WP(Windows Phone)。
APP支付适用于在移动端APP中集成微信支付功能的场景。商户APP调用微信提供的SDK调用微信支付模块,商户APP会跳转到微信中完成支付,支付完后跳回到商户APP内,最后展示支付结果。
主要有以下流程:
对于APP支付方式,我还是比较青睐的,因为它可以让用户选择支付方式,比较灵活。如果使用JSAPI支付,万一用户微信余额不足的话,那就会有该订单白白流失的可能。
H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。
说明:要求商户已有H5商城网站,并且已经过ICP备案,即可申请接入。
提醒:H5支付不建议在APP端使用,如需要在APP中使用微信支付,请接APP支付。
H5支付主要用于触屏版的手机浏览器请求微信支付的场景,方便从外部浏览器唤起微信支付。
目前就先介绍这三种,一般这三种就适用绝大多数场景了,如果想要了解更多,可以点击这里,访问微信支付平台,了解更多。
根据项目业务和类型,这里选择APP支付方式来进行接入。
选择模式,是直连模式,还是服务商模式。微信支付目前提供两种接入方式:直连模式和服务商模式。
主要包括
具体的详情就不一一介绍,可以看微信支付平台文档。
为了帮助开发者调用开放接口,我们提供了JAVA、PHP、GO三种语言版本的开发库,封装了签名生成、签名验证、敏感信息加/解密、媒体文件上传等基础功能。
测试步骤:
根据自身开发语言,选择对应的开发库并构建项目,具体配置请参考下面链接的详细说明:
wechatpay-apache-httpclient,适用于使用Apache HttpClient处理HTTP的Java开发者。
wechatpay-php(推荐)、wechatpay-guzzle-middleware,适用于PHP开发者。
注:当前开发指引接口PHP示例代码采用wechatpay-guzzle-middleware版本
wechatpay-go,适用于Go开发者。
@Before
public void setup() throws IOException {
// 加载商户私钥(privateKey:私钥字符串)
PrivateKey merchantPrivateKey = PemUtil
.loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes("utf-8")));
// 加载平台证书(mchId:商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥)
AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)),apiV3Key.getBytes("utf-8"));
// 初始化httpClient
httpClient = WechatPayHttpClientBuilder.create()
.withMerchant(mchId, mchSerialNo, merchantPrivateKey)
.withValidator(new WechatPay2Validator(verifier)).build();
}
@After
public void after() throws IOException {
httpClient.close();
}
APP接入微信支付,需要先将商户APP在微信开放平台进行注册,登记APP开发参数以生成APPID。具体操作步骤如下: