文档管理中心
示例代码华为支付服务(非虚拟类)服务端示例代码

服务端示例代码

Java示例代码

PaymentService服务端示例代码包含了PaymentService的服务端接口的使用示例,接口调用demo入口在com.example.paydemo.example包名下。

在使用示例代码前请详细阅读示例工程中的“README”文件。

Java示例代码对华为支付(PaymentService)的服务端接口进行封装,包含丰富的示例程序,方便开发者参考或直接使用。

展开

名称

下载

java支付相关示例代码

华为支付源码服务器demo源码下载.zip

java券相关示例代码

券相关demo示例下载.zip

预下单调用demo示例代码

收起
自动换行
深色代码主题
复制
  1. /**
  2. * 商户信息初始化配置
  3. */
  4. private static PetalPayClient payClient = new DefaultPetalPayClient(MercConfigUtil.getMercConfig());
  5. /**
  6. * 预下单接口调用
  7. */
  8. public CommonResponse aggrPreOrderForAppV2() {
  9. // 组装对象
  10. PreOrderCreateRequestV2 preOrderReq = getPreOrderCreateRequestV2();
  11. PreOrderCreateResponse response = null;
  12. try {
  13. response = payClient.execute("POST", "/api/v2/aggr/preorder/create/app", PreOrderCreateResponse.class,
  14. preOrderReq);
  15. } catch (Exception e) {
  16. // todo 异常处理
  17. log.error("request error ", e);
  18. return CommonResponse.buildErrorRsp(e.getMessage());
  19. }
  20. if (!validResponse(response)) {
  21. // todo 异常处理
  22. log.error("response is invalid ", response);
  23. return CommonResponse.buildFailRsp(response);
  24. }
  25. // orderStr返回给端侧
  26. return CommonResponse.buildSuccessRsp(payClient.buildOrderStr(response.getPrepayId()));
  27. }
  28. public static boolean validResponse(BaseGwRspWithSign rsp) {
  29. return rsp != null && "000000".equals(rsp.getResultCode());
  30. }
  31. /**
  32. * 预下单接口请求参数组装
  33. */
  34. public static PreOrderCreateRequestV2 getPreOrderCreateRequestV2() {
  35. return PreOrderCreateRequestV2.builder()
  36. .mercOrderNo("pay-example-" + System.currentTimeMillis()) // 每次订单号都要变,请将pay-example-修改为商户自己的订单前缀
  37. .appId(MercConfigUtil.APP_ID) // appId,需要配置为与商户绑定的正确的appId
  38. .mercNo(MercConfigUtil.MERC_NO) // 商户的商户号
  39. .tradeSummary("请修改为对应的商品简称") // 请修改为商品简称
  40. .bizType("100002") // (100001:虚拟商品购买,100002:实物商品购买,100003:预付类账号充值,100004:航旅交通服务,100005:活动票务订购,100006:商业服务消费,100007:生活服务消费,100008:租金缴纳,100009:会员费缴纳,100011:其他商家消费,100037:公共便民服务)
  41. .totalAmount(2L)
  42. .callbackUrl("https://www.abc.com") //回调通知地址,通知URL必须为直接可访问的URL,要求为https地址。最大长度为512。请替换为格式正确的结果通知回调地址。
  43. .build();
  44. }

支付结果回调通知示例代码

收起
自动换行
深色代码主题
复制
  1. /**
  2. * 通知回调示例代码类
  3. *
  4. * @author *****
  5. * @since 2023-10-28
  6. */
  7. public class CallbackController {
  8. /**
  9. * 华为支付通知回调签名公钥
  10. */
  11. public static final String HW_PAY_PUBLIC_KEY_FOR_CALLBACK = "";
  12. /**
  13. * 支付回调模拟接口(不同的场景,用不同的接口处理)
  14. *
  15. * @param callbackRequest 入参
  16. * @return CallBackBaseResponse
  17. */
  18. @PostMapping(value = "/v1/transation/result", produces = MediaType.APPLICATION_JSON_VALUE)
  19. public CallBackBaseResponse transationResultNotify(@RequestBody Object callbackRequest) {
  20. String callbackStr = JSONObject.toJSONString(callbackRequest);
  21. // TransResultCallbackReq-支付回调实体类
  22. return VerifyTools.getCallbackResult(callbackStr, HW_PAY_PUBLIC_KEY_FOR_CALLBACK, reqString -> {
  23. NotifyPaymentReq callbackReq = JSONObject.parseObject(reqString, NotifyPaymentReq.class);
  24. // 商户自行业务处理
  25. doProcess(callbackReq);
  26. });
  27. }
  28. /**
  29. * 业务处理
  30. *
  31. * @param reqBody
  32. */
  33. private void doProcess(Object reqBody) {
  34. log.info("Please write merchant business process here");
  35. }
  36. }

在 示例代码 中进行搜索
请输入您想要搜索的关键词