这是一个基于Spring Boot的越南支付对接Demo项目,提供了完整的支付接口示例和测试方法。
# 进入项目目录
cd springboot-vnpay-demo
# 编译项目
mvn clean package
# 运行项目
mvn spring-boot:run
# 或者直接运行JAR包
java -jar target/springboot-vnpay-demo-1.0.0.jar
启动成功后,访问以下地址:
GET /demo/test
用于测试服务是否正常运行。
POST /demo/apiPay
Content-Type: application/x-www-form-urlencoded
请求参数:
参数名 | 必填 | 说明 | 示例值 |
---|---|---|---|
tradeType | 是 | 支付类型 | SCAN_PAY |
version | 是 | 版本号 | 1.0 |
channel | 是 | 支付渠道 | ALI_PAY |
mchNo | 是 | 商户号 | M1234567890 |
mchOrderNo | 是 | 商户订单号 | ORDER20240130001 |
body | 是 | 商品描述 | 测试商品 |
amount | 是 | 金额(分) | 10000 |
currency | 是 | 货币类型 | VND |
timePaid | 是 | 支付时间 | 20240130120000 |
notifyUrl | 是 | 异步通知地址 | http://your-server.com/notify |
paySecret | 是 | 支付密钥 | bf183091a6 |
POST /demo/notify/getPayInfo
Content-Type: application/json
请求体示例:
{
"mchNo": "M1234567890",
"mchOrderNo": "ORDER20240130001",
"amount": "10000",
"status": "1",
"sign": "XXXXXXXXXXXXXXXXXXXXX"
}
http://localhost:8080/demo/apiPay
x-www-form-urlencoded
# 使用curl测试
curl -X POST http://localhost:8080/demo/apiPay \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "tradeType=SCAN_PAY&version=1.0&channel=ALI_PAY&mchNo=M1234567890&mchOrderNo=ORDER$(date +%Y%m%d%H%M%S)&body=测试商品&amount=10000¤cy=VND&timePaid=$(date +%Y%m%d%H%M%S)¬ifyUrl=http://localhost:8080/demo/notify/getPayInfo&paySecret=bf183091a6654c339b7b452a996c4ce5"
配置文件位置:src/main/resources/application.properties
主要配置项:
# 服务端口
server.port=8080
# 商户支付KEY
payKey=64efebf7eb5b439d8fa213de9028392e
# 商户密钥
paySecret=bf183091a6654c339b7b452a996c4ce5
# API支付请求地址
apiPayUrl=http://localhost:8080/gateway/api/trade
springboot-vnpay-demo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/vnpay/demo/
│ │ │ ├── VnPayDemoApplication.java # 启动类
│ │ │ ├── controller/ # 控制器
│ │ │ │ ├── BaseController.java
│ │ │ │ └── DemoPayController.java
│ │ │ └── utils/ # 工具类
│ │ │ ├── HttpUtil.java
│ │ │ ├── MD5Util.java
│ │ │ ├── MerchantApiUtil.java
│ │ │ ├── PayConfigUtil.java
│ │ │ └── StringUtil.java
│ │ └── resources/
│ │ ├── application.properties # 配置文件
│ │ └── static/
│ │ └── index.html # API文档页面
├── pom.xml # Maven配置
└── README.md # 本文件
application.properties
中的配置notifyUrl
可以被支付平台访问到paySecret
密钥A: 修改application.properties
中的server.port
配置
A: 检查参数排序和密钥是否正确,可以查看控制台日志中的签名前字符串
A: 日志文件位于logs/vnpay-demo.log
,或查看控制台输出
如有问题,请参考项目中的API文档文件:
Api-V1.8.13 (19) (2).docx
Api-V1.8.13EN.docx
版本: 1.0.0
更新时间: 2024-01-30