Java版SDK&DEMO
第一步:创建应用及相关权限申请
请先阅读快速接入模块,开展相关环节。
第二步:下载SDK
SDK获取
开发语言 | 资源下载 | 环境要求 |
---|---|---|
Java | SDK | 适用于Java语言、jdk版本1.7以上的环境 |
DEMO获取
开发语言 | 资源下载 | 开发平台 |
---|---|---|
Java | DEMO | Windows |
Java | DEMO | Mac |
第三步:DEMO试用
DEMO服务的首页地址为: http://demo.cn/wpspay/index.html模拟应用中心调起服务的首页地址为: http://demo.cn/wpspaydemo
开放平台官网应用基本设置: 填入已申请的APPID和APPKEY IP白名单: 贵公司出口IP 域名白名单:demo.cn 回调地址:调用DEMO服务的地址,即 http://demo.cn/wpspay/index.html
本地配置: 在本地测试运行DEMO需要设置hosts文件 127.0.0.1 demo.cn
注意: 开放平台官网设置的服务回调地址应与DEMO服务地址一致 若修改回调地址,请同时修改本地hosts、域名白名单以及wpspaydemo/js/wpspayindex.js中的redirect_uri回调地址
以Windows为例:
1.解压压缩包,进入demo-wpspay下的exec目录,试用DEMO所需的文件都放在这里: 其中nginx-1.15.5为nginx启动及配置目录,server.jar为打包好的DEMO服务,application.Properties为jar包的配置文件,wpsdocdemo调起DEMO首页。 2.需要在Application.properites文件中填写已申请的appId、appKey和serviceid; 3.需要在wpspaydemo/js/wpspayindex.js中填写已申请的appId,并查看redirect_uri回调地址是否与官网设置一致; 4.需要在nginx-1.15.5文件夹下的nginx.conf中配置nginx访问根路径,将C:/demo-wpspay/exec修改为当前exec目录; 5.在nginx-1.15.5文件夹下,运行nginx.exe启动nginx; 6.在当前目录下打开shell环境,输入java -jar server.jar启动DEMO服务; 7.在浏览器上输入 [http://demo.cn/wpspaydemo](http://demo.cn/wpspaydemo) 即可进入首页,如图所示:![image](/projects/wps-doc/7bc1254444f0c9ea1d875c82b485051c.png) **Mac版的使用方式除了更换适应平台的nginx外,其余步骤基本一致,详情请参考压缩包中的使用指南。如若不能正常运行,请联系open@wps.cn.**
第四步:应用开发
该模块将介绍demo的集成和涉及的SDK接口调用详解,可参考该部分打造属于您自己的应用,剖析如下:
集成开发环境
进入压缩包的的源码文件夹,用IntelliJ IDEA开发工具导入OpenWpsDoc文件夹下代码即可。其中: 1. Gradle版本用gradle-2.2.1及以上版本,JDK使用JDK1.7及以上版本, 2. 依赖Jar包opensdk-1.0.jar在工程的libs目录下,导入工程时会自动导入, 3. Demo前端代码在src\main\resources\static\wpsdoc目录下,前端代码建议使用JetBrains WebStorm导入后再编辑, 4. 在application.properties中配置好server.port、appid、appkey、spring.http.multipart.maxFileSize以及spring.http.multipart.maxRequestSize参数, 5. 在Application.java文件中启动工程, 6. 控制台出现类似如下信息表示工程启动成功:Started Application in 3.489 seconds (JVM running for 4.135)。
DEMO中涉及到的API接口皆已在SDK中封装完成,详细的调用方式请参考以下SDK接口说明。
SDK相关接口调用
注意: 在调用SDK的支付相关接口前,需要先配置SDK的应用信息:
public static void setConfig(String appid, String appKey);
参数说明
参数 | 参数类型 | 说明 |
---|---|---|
appid | string | 应用唯一标识 |
appKey | string | 应用秘钥 |
调用方式:Config.setConfig(appId, appKey);
SDK接口说明如下:
1, 判断用户是否有相关权益2, 预下单接口3, 使用用户自身权益4, 零售下单
1, 判断用户是否有相关权益
public static boolean getUsableService(String access_token, String openid, String service_id, long total_num);
参数说明
参数 | 参数类型 | 说明 |
---|---|---|
access_token | string | access_token |
openid | string | 用户标识openid |
service_id | string | 服务id,开发者对接后可用的服务 |
total_num | int64 | 查询数量,仅消耗类型的服务需要传对应的数量,其他的传0 |
调用方式:boolean result = Payment.getUsableService(accessToken, openId, serviceId, totalNum);
2, 预下单接口
public static String preorderPay(String access_token, String openid, String service_id, long total_num, String billno, String subject, String csource, String client_ip);
参数说明
参数 | 参数类型 | 说明 |
---|---|---|
access_token | string | access_token |
openid | string | 用户标识openid |
service_id | string | 服务id,开发者对接后可用的服务 |
total_num | int64 | 查询数量,仅消耗类型的服务需要传对应的数量,其他的传0 |
billno | string | 合作方自己的订单号,需要合作方每次下单时保证唯一未使用的订单号,长度不超过32位字符 |
subject | string | 购买内容,当服务类型为第三方自己的服务时传对应的服务id |
csource | string | 购买来源 |
client_ip | string | 客户端IP,由接入方获取客户端ip后传过来 |
调用方式:String billno = Payment.preorderPay(accessToken, openId, serviceId, totalNum, billNo, subject, csource, clientIp);
3, 使用用户自身权益
public static boolean useService(String access_token, String openid, String service_id, long total_num, String billno);
参数说明
参数 | 参数类型 | 说明 | |
---|---|---|---|
access_token | string | required | access_token |
openid | string | required | 用户标识openid |
service_id | string | required | 服务id,开发者对接后可用的服务 |
total_num | int64 | required | 查询数量,仅消耗类型的服务需要传对应的数量,其他的传0 |
billno | string | required | 合作方自己的订单号,需要合作方每次下单时保证唯一未使用的订单号,长度不超过32位字符 |
调用方式:boolean result = Payment.useService(accessToken, openId, serviceId, totalNum, billNo);
4, 零售下单
public static String customOrderPay(String access_token, String billno, String openid, String payment, String service_id, String subject, String csource, long total_fee, long count);
参数说明
参数 | 参数类型 | 说明 |
---|---|---|
access_token | string | access_token |
billno | string | 合作方自己的订单号,需要合作方每次下单时保证唯一未使用的订单号,长度不超过32位字符 |
openid | string | 用户标识openid |
payment | string | 支付方式,目前只支持 qrcode: 二维码支付 ios: ios支付 (预下单) android_wechat: 安卓微信支付 (预下单) android_alipay: 安卓支付宝支付 (预下单) |
service_id | string | 服务id,开发者对接后可用的服务 |
subject | string | 购买内容,当服务类型为第三方自己的服务时传对应的服务id |
csource | string | 购买来源 |
total_fee | int64 | 订单金额(单位: 分) |
count | int64 | 购买数量 |
调用方式:String billNo = Payment.customOrderPay(accessToken, billNo, openId, payment, serviceId, cSource, totalFee, count);
支付回调服务封装
1 支付回调分为客户端回调和服务端回调,服务端回调为异步回调,客户端回调为异步回调。2 支付的最终结果以服务端异步回调为准。3 支付回调接口需要直接输出”ok”字符串,代表通知处理业务成功,其他输出都会视为回调失败。4 支付回调接口失败后前三次间隔1s左右,失败三次后间隔半小时重试一次。
@RequestMapping(value = "/demo/pay/callback", method = RequestMethod.POST)
@ResponseBody
public String payCallback(
@RequestParam(value = "billno", required = false) String billno,
@RequestParam(value = "app_id", required = false) String app_id,
@RequestParam(value = "service_id", required = false) String service_id,
@RequestParam(value = "sig", required = false) String sig) {
System.out.println("billno : " + billno + " , app_id : " + app_id + " , service_id : " + service_id + " , sig : " + sig);
// TODO 第三方应用处理逻辑
return "ok";
}
有任何疑问,请加入QQ群: 732130805 或者联系open@wps.cn获取帮助。