1. Trước khi bắt đầu
Đây là lớp học lập trình tự hướng dẫn sẽ hướng dẫn bạn cách thiết lập khả năng kết nối với Stanadard Payments API.
Điều kiện tiên quyết
- Bạn đã hoàn tất bước 1 và 2 của Quy trình triển khai.
- Bạn có thể lưu trữ máy chủ Node.js được cung cấp bằng cách sử dụng Google App Engine hoặc giải pháp của riêng bạn tại miền được định cấu hình với Google.
- Node.js đã được cài đặt trên môi trường của bạn.
Kiến thức bạn sẽ học được
- Cách xác minh khả năng kết nối bằng cách tạo một yêu cầu hợp lệ cho API phản hồi Thanh toán chuẩn của Google.
- Cách nhận, giải mã và phân tích cú pháp yêu cầu từ Google đến API Echo do đối tác lưu trữ.
2. Thiết lập và yêu cầu
Tải ứng dụng xuống
Tải mã mẫu Node.js xuống.
Cài đặt phần phụ thuộc
Chuyển đến thư mục dự án và chạy lệnh sau để cài đặt các phần phụ thuộc bắt buộc. Nếu đang sử dụng App Engine, bạn có thể bỏ qua bước này.
npm install
3. Định cấu hình Mã tài khoản của trình tích hợp thanh toán (PIAID)
Mã tài khoản của trình tích hợp thanh toán (PIAID
) là giá trị nhận dạng dùng để xác định duy nhất các dịch vụ tích hợp của bạn. Bạn phải đã nhận được PIAID từ Google bằng cách hoàn thành các điều kiện tiên quyết trước khi bắt đầu hướng dẫn này.
- Chuyển đến tệp
server.js
trong thư mục dự án. - Đặt biến
PIAID
thành PIAID mà Google đã cấp cho bạn.
const PIAID = '{PAYMENT_INTEGRATOR_ACCOUNT_ID}';
4. Thêm khoá PGP
Tạo các tệp sau trong cấu trúc dự án và thêm khoá PGP để bật tính năng mã hoá PGP.
- Tạo một tệp có tên là
public.key
rồi thêm khoá công khai được bảo vệ bằng khoá ASCII vào tệp đó. - Tạo một tệp có tên là
private.key
rồi thêm khoá riêng tư được bảo vệ bằng khoá ASCII vào tệp đó. - Tạo một tệp có tên
passphrase.txt
rồi thêm cụm mật khẩu bí mật vào tệp đó.
Tuyệt vời, bạn đã sẵn sàng chạy ứng dụng!
5. Chạy ứng dụng
Để khởi động ứng dụng, hãy thực thi lệnh sau.
$ node server.js Server listening on port 8080...
Nếu bạn đang chạy một phiên bản App Engine được định cấu hình trước, hãy chạy lệnh này.
$ gcloud app deploy
Theo mặc định, máy chủ sẽ nghe trên cổng 8080.
6. Kiểm thử khả năng kết nối của API Thanh toán chuẩn của Google
Bây giờ ứng dụng đang chạy, đã đến lúc kiểm tra khả năng kết nối với API phản hồi thanh toán chuẩn của Google.
Chạy lệnh sau để bắt đầu một lệnh gọi từ thực thể của ứng dụng mẫu đến máy chủ của Google. API Echo ứng dụng mẫu chấp nhận yêu cầu POST trong văn bản thuần tuý. Sau khi nhận được yêu cầu, yêu cầu tiếp theo sẽ được gửi tới API do Google lưu trữ.
$ curl -X POST -H 'Content-Type: text/plain' -d 'Hello from Little Bear' https://{HOSTNAME}/echo
Khi yêu cầu API thành công, Google sẽ phản hồi như sau.
{ "responseHeader":{ "responseTimestamp":"1606710026723" }, "clientMessage":"Hello from Little Bear", "serverMessage":"Server message." }
Từng bước
Giờ đây, khi một yêu cầu đã được máy chủ của bạn gửi thành công, hãy cùng xem cách yêu cầu đó hoạt động.
Xây dựng yêu cầu
buildEchoRequestBody
trong bodyHelpers.js
tạo yêu cầu echo
được gửi đến API của Google.
const message = bodyHelpers.buildEchoRequestBody(req.body);
Yêu cầu được tạo bao gồm clientMessage
cũng như một số trường giá trị mặc định.
{
"requestHeader":{
"protocolVersion":{
"major":1,
"minor":0,
"revision":0
},
"requestId":"ddfe0fd0-ffdc-4fcf-991a-f0611ec83970",
"requestTimestamp":"1606715389040"
},
"clientMessage":"Hello from Little Bear"
}
Mã hoá yêu cầu
Tất cả các yêu cầu đều được mã hoá và mã hoá base64url. Trong mẫu này, crypto.js
chứa các phương thức trợ giúp giúp mã hoá và giải mã cho bạn. Phương thức crypto.encrypt
mã hoá bằng khoá công khai của Google.
const encrypted = await crypto.encrypt(message);
Gửi yêu cầu POST được mã hoá base64url
Thông báo được mã hóa được base64url mã hóa bằng gói base64url và được gửi qua yêu cầu POST bằng axios.
const response = await axios.post(ECHO_URL, base64url(encrypted), AXIOS_CONFIG);
Giải mã và trả lại phản hồi
Phản hồi thành công của Google được mã hoá và mã hoá base64url, vì vậy, phản hồi này cũng cần được giải mã và giải mã trước khi có thể trả về dưới dạng văn bản thuần tuý.
const encryptedMessage = base64url.toBuffer(response.data);
const decryptedResponse = await crypto.decrypt(encryptedMessage);
res.status(200);
res.send(decryptedResponse);
7. Kiểm thử khả năng kết nối của API Đối tác
Để kiểm tra Khả năng kết nối API tiếng vang của đối tác, Google sẽ gửi yêu cầu tới API tiếng vọng do đối tác lưu trữ.
Khi bạn đã sẵn sàng, vui lòng làm việc với đầu mối liên hệ của bạn tại Google để kích hoạt yêu cầu này từ Google.
Kiểm thử phản hồi hoàn tất khi bạn có thể đọc yêu cầu phản hồi đến từ Google và phản hồi bằng một phản hồi phản hồi hợp lệ.
Từng bước
Máy chủ của bạn hiện đã nhận và xử lý thành công một yêu cầu, hãy cùng xem lại cách yêu cầu đó hoạt động.
Base64url giải mã yêu cầu
Khi nhận được yêu cầu, trước tiên, bạn cần giải mã yêu cầu đó bằng base64url.
const encryptedRequest = base64url.toBuffer(req.body);
Giải mã yêu cầu
Sau khi base64url giải mã yêu cầu, bạn cần giải mã yêu cầu đó.
const decryptedRequest = await crypto.decrypt(encryptedRequest);
Nhận yêu cầu
Google đã gửi trọng tải thư tương tự như nội dung sau khi thư đã được giải mã và giải mã.
{ "requestHeader": { "protocolVersion": { "major": 1 }, "requestId": "G1MQ0YERJ0Q7LPM", "requestTimestamp": { "epochMillis":1481899949606 }, "paymentIntegratorAccountId": "abcdef123456" }, "clientMessage": "echo Me" }
Tạo phản hồi
Sau khi đọc thành công yêu cầu về tiếng vọng đến, bạn đã sẵn sàng tạo phản hồi.
clientMessage = JSON.parse(decryptedRequest).clientMessage;
responseBody = bodyHelpers.buildEchoResponseBody(clientMessage);
Nội dung phản hồi bao gồm thông báo của Google, cũng như dấu thời gian và thông báo của máy chủ.
{ "responseHeader": { "responseTimestamp": { "epochMillis":1481899950236 } }, "clientMessage": "echo Me", "serverMessage": "Debug ID 12345" }
Mã hoá và mã hoá phản hồi base64
Sau khi tạo thông báo phản hồi, bạn có thể mã hoá và mã hoá base64url.
encryptedResponse = await crypto.encrypt(responseBody);
const encodedResponse = base64url(encryptedResponse);
Trả về phản hồi
Cuối cùng, bạn đã sẵn sàng gửi phản hồi POST.
res.send(encodedResponse);
8. Xin chúc mừng!
Trong lớp học lập trình này, bạn đã thiết lập thành công kết nối với Echo API!