合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
大家好,我是飘渺。在今天的DailyMart项目实战中,我们将探讨如何在领域驱动设计(DDD)开发中集成支付宝的网页支付功能,以及相关的步骤和注意事项。
首先,我们需要申请阿里沙箱支付环境,以便于方便地进行支付集成测试。以下是申请沙箱环境的简要流程:
1.访问支付宝沙箱环境,https://open.alipay.com/develop/sandbox/app,注册并登录。
图片
2.设置接口加签方式,并记录对应的公钥和私钥。
图片
支付宝支付完成后,支付结果将通过回调通知到您的应用程序(在发起支付时通过NotifyUrl参数指定)。为了确保在开发时接口能够在外网进行访问,我们可以借助内网穿透工具,将本地IP与端口映射成外网可访问地址。
作为示例,我选择使用花生壳进行内网穿透。你也可以根据需求选择其他工具。
注册并登录https://hsk.oray.com,下载最新客户端。
图片
登录以后配置外网映射,如上所示,我将本地ip+端口9090 (网关服务)映射成了外网访问,红框部分就是对外的访问地址。
完成上述操作后,我们可以借助Alipay提供的SDK,进行支付单元测试。代码位置:
com.jianzh5.dailymart.module.order.infrastructure.alipay.AliPayTest
@Test
public void test_AliPay() throws AlipayApiException {
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setAppId(app_id);
// 其他配置参数...
...
// 创建AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
// 创建支付请求
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
// 设置回调地址
request.setNotifyUrl(notify_url);
Map<String,Object> requestMap = Maps.newHashMap();
requestMap.put("out_trade_no", "ddd20240221-001"); // 我们自己生成的订单编号
...
request.setBizContent(JsonUtils.obj2String(requestMap));
//调用SDK生成表单
String form = alipayClient.pageExecute(request).getBody();
log.info("测试结果:{}", form);
}
TOP