智能客服
你问我答,随时在线为你解决问题
PaymentService服务端示例代码包含了PaymentService的服务端接口的使用示例,接口调用demo入口在com.example.paydemo.example包名下。
在使用示例代码前请详细阅读示例工程中的“README”文件。
Java示例代码对华为支付(PaymentService)的服务端接口进行封装,包含丰富的示例程序,方便开发者参考或直接使用。
名称 | 下载 |
|---|---|
java支付相关示例代码 | |
java券相关示例代码 |
- /**
- * 商户信息初始化配置
- */
- private static PetalPayClient payClient = new DefaultPetalPayClient(MercConfigUtil.getMercConfig());
-
- /**
- * 预下单接口调用
- */
- public CommonResponse aggrPreOrderForAppV2() {
- // 组装对象
- PreOrderCreateRequestV2 preOrderReq = getPreOrderCreateRequestV2();
- PreOrderCreateResponse response = null;
- try {
- response = payClient.execute("POST", "/api/v2/aggr/preorder/create/app", PreOrderCreateResponse.class,
- preOrderReq);
- } catch (Exception e) {
- // todo 异常处理
- log.error("request error ", e);
- return CommonResponse.buildErrorRsp(e.getMessage());
- }
- if (!validResponse(response)) {
- // todo 异常处理
- log.error("response is invalid ", response);
- return CommonResponse.buildFailRsp(response);
- }
- // 组orderStr返回给端侧
- return CommonResponse.buildSuccessRsp(payClient.buildOrderStr(response.getPrepayId()));
- }
-
- public static boolean validResponse(BaseGwRspWithSign rsp) {
- return rsp != null && "000000".equals(rsp.getResultCode());
- }
-
- /**
- * 预下单接口请求参数组装
- */
- public static PreOrderCreateRequestV2 getPreOrderCreateRequestV2() {
- return PreOrderCreateRequestV2.builder()
- .mercOrderNo("pay-example-" + System.currentTimeMillis()) // 每次订单号都要变,请将pay-example-修改为商户自己的订单前缀
- .appId(MercConfigUtil.APP_ID) // appId,需要配置为与商户绑定的正确的appId
- .mercNo(MercConfigUtil.MERC_NO) // 商户的商户号
- .tradeSummary("请修改为对应的商品简称") // 请修改为商品简称
- .bizType("100002") // (100001:虚拟商品购买,100002:实物商品购买,100003:预付类账号充值,100004:航旅交通服务,100005:活动票务订购,100006:商业服务消费,100007:生活服务消费,100008:租金缴纳,100009:会员费缴纳,100011:其他商家消费,100037:公共便民服务)
- .totalAmount(2L)
- .callbackUrl("https://www.abc.com") //回调通知地址,通知URL必须为直接可访问的URL,要求为https地址。最大长度为512。请替换为格式正确的结果通知回调地址。
- .build();
- }
- /**
- * 通知回调示例代码类
- *
- * @author *****
- * @since 2023-10-28
- */
- public class CallbackController {
- /**
- * 华为支付通知回调签名公钥
- */
- public static final String HW_PAY_PUBLIC_KEY_FOR_CALLBACK = "";
- /**
- * 支付回调模拟接口(不同的场景,用不同的接口处理)
- *
- * @param callbackRequest 入参
- * @return CallBackBaseResponse
- */
- @PostMapping(value = "/v1/transation/result", produces = MediaType.APPLICATION_JSON_VALUE)
- public CallBackBaseResponse transationResultNotify(@RequestBody Object callbackRequest) {
- String callbackStr = JSONObject.toJSONString(callbackRequest);
- // TransResultCallbackReq-支付回调实体类
- return VerifyTools.getCallbackResult(callbackStr, HW_PAY_PUBLIC_KEY_FOR_CALLBACK, reqString -> {
- NotifyPaymentReq callbackReq = JSONObject.parseObject(reqString, NotifyPaymentReq.class);
- // 商户自行业务处理
- doProcess(callbackReq);
- });
- }
- /**
- * 业务处理
- *
- * @param reqBody
- */
- private void doProcess(Object reqBody) {
- log.info("Please write merchant business process here");
- }
- }