• Java版SDK&DEMO
    • 第一步:创建应用及相关权限申请
    • 第二步:下载SDK
      • SDK获取
      • DEMO获取
    • 第三步:DEMO试用
      • 以Windows为例:
  • 第四步:应用开发
    • 集成开发环境
      • DEMO中涉及到的API接口皆已在SDK中封装完成,详细的调用方式请参考以下SDK接口说明。
  • SDK相关接口调用
  • SDK接口说明如下:
    • 1, 判断用户是否有相关权益
    • 2, 预下单接口
    • 3, 使用用户自身权益
    • 4, 零售下单
  • 支付回调服务封装

    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](uploads/projects/439/6639.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获取帮助。