Java版SDK&DEMO

第一步:创建应用及相关权限申请

请先阅读快速接入模块,开展相关环节。

第二步:下载SDK

SDK获取

开发语言资源下载环境要求
JavaSDK适用于Java语言、jdk版本1.7以上的环境

DEMO获取

开发语言资源下载开发平台
JavaDEMOWindows
JavaDEMOMac

第三步: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. 1.解压压缩包,进入demo-wpspay下的exec目录,试用DEMO所需的文件都放在这里: 其中nginx-1.15.5nginx启动及配置目录,server.jar为打包好的DEMO服务,application.Propertiesjar包的配置文件,wpsdocdemo调起DEMO首页。 2.需要在Application.properites文件中填写已申请的appIdappKeyserviceid; 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的应用信息:

  1. public static void setConfig(String appid, String appKey);

参数说明

参数参数类型说明
appidstring应用唯一标识
appKeystring应用秘钥

调用方式:Config.setConfig(appId, appKey);

SDK接口说明如下:

1, 判断用户是否有相关权益2, 预下单接口3, 使用用户自身权益4, 零售下单

1, 判断用户是否有相关权益

  1. public static boolean getUsableService(String access_token, String openid, String service_id, long total_num);

参数说明

参数参数类型说明
access_tokenstringaccess_token
openidstring用户标识openid
service_idstring服务id,开发者对接后可用的服务
total_numint64查询数量,仅消耗类型的服务需要传对应的数量,其他的传0

调用方式:boolean result = Payment.getUsableService(accessToken, openId, serviceId, totalNum);

2, 预下单接口

  1. 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_tokenstringaccess_token
openidstring用户标识openid
service_idstring服务id,开发者对接后可用的服务
total_numint64查询数量,仅消耗类型的服务需要传对应的数量,其他的传0
billnostring合作方自己的订单号,需要合作方每次下单时保证唯一未使用的订单号,长度不超过32位字符
subjectstring购买内容,当服务类型为第三方自己的服务时传对应的服务id
csourcestring购买来源
client_ipstring客户端IP,由接入方获取客户端ip后传过来

调用方式:String billno = Payment.preorderPay(accessToken, openId, serviceId, totalNum, billNo, subject, csource, clientIp);

3, 使用用户自身权益

  1. public static boolean useService(String access_token, String openid, String service_id, long total_num, String billno);

参数说明

参数参数类型说明
access_tokenstringrequiredaccess_token
openidstringrequired用户标识openid
service_idstringrequired服务id,开发者对接后可用的服务
total_numint64required查询数量,仅消耗类型的服务需要传对应的数量,其他的传0
billnostringrequired合作方自己的订单号,需要合作方每次下单时保证唯一未使用的订单号,长度不超过32位字符

调用方式:boolean result = Payment.useService(accessToken, openId, serviceId, totalNum, billNo);

4, 零售下单

  1. 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_tokenstringaccess_token
billnostring合作方自己的订单号,需要合作方每次下单时保证唯一未使用的订单号,长度不超过32位字符
openidstring用户标识openid
paymentstring支付方式,目前只支持 qrcode: 二维码支付 ios: ios支付 (预下单) android_wechat: 安卓微信支付 (预下单) android_alipay: 安卓支付宝支付 (预下单)
service_idstring服务id,开发者对接后可用的服务
subjectstring购买内容,当服务类型为第三方自己的服务时传对应的服务id
csourcestring购买来源
total_feeint64订单金额(单位: 分)
countint64购买数量

调用方式:String billNo = Payment.customOrderPay(accessToken, billNo, openId, payment, serviceId, cSource, totalFee, count);

支付回调服务封装

1 支付回调分为客户端回调和服务端回调,服务端回调为异步回调,客户端回调为异步回调。2 支付的最终结果以服务端异步回调为准。3 支付回调接口需要直接输出”ok”字符串,代表通知处理业务成功,其他输出都会视为回调失败。4 支付回调接口失败后前三次间隔1s左右,失败三次后间隔半小时重试一次。

  1. @RequestMapping(value = "/demo/pay/callback", method = RequestMethod.POST)
  2. @ResponseBody
  3. public String payCallback(
  4. @RequestParam(value = "billno", required = false) String billno,
  5. @RequestParam(value = "app_id", required = false) String app_id,
  6. @RequestParam(value = "service_id", required = false) String service_id,
  7. @RequestParam(value = "sig", required = false) String sig) {
  8. System.out.println("billno : " + billno + " , app_id : " + app_id + " , service_id : " + service_id + " , sig : " + sig);
  9. // TODO 第三方应用处理逻辑
  10. return "ok";
  11. }

有任何疑问,请加入QQ群: 732130805 或者联系open@wps.cn获取帮助。