1. ก่อนเริ่มต้น
นี่คือ Codelab แบบแนะนำตนเองที่จะอธิบายวิธีสร้างการเชื่อมต่อกับ Standard Payments API
ข้อกำหนดเบื้องต้น
- คุณทำตามขั้นตอนที่ 1 และ 2 ของกระบวนการติดตั้งใช้งานเสร็จแล้ว
- คุณสามารถโฮสต์เซิร์ฟเวอร์ Node.js ที่ระบุพร้อมการสิ้นสุด TLS ได้โดยใช้ Google App Engine หรือโซลูชันของคุณเองที่โดเมนซึ่งกำหนดค่าด้วย Google
- ติดตั้ง Node.js ในสภาพแวดล้อมของคุณ
สิ่งที่คุณจะได้เรียนรู้
- วิธีตรวจสอบการเชื่อมต่อโดยส่งคำขอที่ถูกต้องไปยัง Google Standard Payments Echo API
- วิธีรับ ถอดรหัส และแยกวิเคราะห์คำขอจาก Google ไปยัง Partner Hosted Echo API
2. การตั้งค่าและข้อกำหนด
ดาวน์โหลดแอปพลิเคชัน
ดาวน์โหลดโค้ดตัวอย่าง Node.js
ติดตั้งการอ้างอิง
ไปที่ไดเรกทอรีโปรเจ็กต์แล้วเรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งการอ้างอิงที่จำเป็น หากใช้ App Engine คุณสามารถข้ามขั้นตอนนี้ได้
npm install
3. กำหนดค่ารหัสบัญชีผู้ผสานรวมการชำระเงิน (PIAID)
รหัสบัญชีผู้ให้บริการชำระเงิน (PIAID) คือตัวระบุที่ใช้เพื่อระบุการผสานรวมของคุณโดยไม่ซ้ำกัน คุณควรได้รับ PIAID จาก Google โดยทำตามข้อกำหนดเบื้องต้นก่อนเริ่มบทแนะนำนี้
- ไปที่ไฟล์
server.jsในไดเรกทอรีโปรเจ็กต์ - ตั้งค่าตัวแปร
PIAIDเป็น PIAID ที่ Google ออกให้คุณ
const PIAID = '{PAYMENT_INTEGRATOR_ACCOUNT_ID}';
4. เพิ่มคีย์ PGP
สร้างไฟล์ต่อไปนี้ในโครงสร้างโปรเจ็กต์และเพิ่มคีย์ PGP เพื่อเปิดใช้การเข้ารหัส PGP
- สร้างไฟล์ชื่อ
public.keyแล้วเพิ่มคีย์สาธารณะที่หุ้มด้วย ASCII ลงในไฟล์ - สร้างไฟล์ชื่อ
private.keyแล้วเพิ่มคีย์ส่วนตัวที่แปลงเป็น ASCII ลงในไฟล์ - สร้างไฟล์ชื่อ
passphrase.txtแล้วเพิ่มรหัสผ่านลับลงในไฟล์

เยี่ยม คุณพร้อมที่จะเรียกใช้แอปพลิเคชันแล้ว
5. เรียกใช้แอปพลิเคชัน
หากต้องการเริ่มแอปพลิเคชัน ให้เรียกใช้คำสั่งต่อไปนี้
$ node server.js Server listening on port 8080...
หากคุณเรียกใช้อินสแตนซ์ App Engine ที่กำหนดค่าไว้ล่วงหน้า ให้เรียกใช้คำสั่งนี้แทน
$ gcloud app deploy
โดยค่าเริ่มต้น เซิร์ฟเวอร์จะรับฟังบนพอร์ต 8080
6. ทดสอบการเชื่อมต่อ Google Standard Payments API
ตอนนี้แอปพลิเคชันทำงานแล้ว ก็ถึงเวลาทดสอบการเชื่อมต่อด้วย API การตอบกลับการชำระเงินมาตรฐานของ Google
เรียกใช้คำสั่งต่อไปนี้เพื่อเริ่มการโทรจากอินสแตนซ์ของแอปพลิเคชันตัวอย่างไปยังเซิร์ฟเวอร์ของ Google แอปพลิเคชันตัวอย่าง echo API ยอมรับคำขอ POST ในข้อความธรรมดา หลังจากได้รับคำขอแล้ว ระบบจะส่งคำขอที่ตามมาไปยัง API ที่ Google โฮสต์
$ curl -X POST -H 'Content-Type: text/plain' -d 'Hello from Little Bear' https://{HOSTNAME}/echo
คำขอ API ที่สำเร็จจะส่งผลให้ Google ตอบกลับดังต่อไปนี้
{
"responseHeader":{
"responseTimestamp":"1606710026723"
},
"clientMessage":"Hello from Little Bear",
"serverMessage":"Server message."
}
ทีละขั้นตอน
ตอนนี้เซิร์ฟเวอร์ของคุณส่งคำขอเรียบร้อยแล้ว มาดูวิธีการทำงานกัน
สร้างคำขอ
buildEchoRequestBody ใน bodyHelpers.js จะสร้างคำขอ echo ที่ส่งไปยัง API ของ Google
const message = bodyHelpers.buildEchoRequestBody(req.body);
คำขอที่สร้างขึ้นจะมี clientMessage รวมถึงช่องค่าเริ่มต้นหลายช่อง
{
"requestHeader":{
"protocolVersion":{
"major":1,
"minor":0,
"revision":0
},
"requestId":"ddfe0fd0-ffdc-4fcf-991a-f0611ec83970",
"requestTimestamp":"1606715389040"
},
"clientMessage":"Hello from Little Bear"
}
เข้ารหัสคำขอ
คำขอทั้งหมดจะได้รับการเข้ารหัสและเข้ารหัส Base64URL ในตัวอย่างนี้ crypto.js มีเมธอดตัวช่วยที่ทำการเข้ารหัสและถอดรหัสให้คุณ เมธอด crypto.encrypt จะทำการเข้ารหัสโดยใช้คีย์สาธารณะของ Google
const encrypted = await crypto.encrypt(message);
ส่งคำขอ POST ที่เข้ารหัส base64url
ข้อความที่เข้ารหัสจะได้รับการเข้ารหัส base64url โดยใช้แพ็กเกจ base64url และส่งผ่านคำขอ POST โดยใช้ axios
const response = await axios.post(ECHO_URL, base64url(encrypted), AXIOS_CONFIG);
ถอดรหัสและส่งคืนการตอบกลับ
การตอบกลับที่สำเร็จของ Google จะได้รับการเข้ารหัส base64url และเข้ารหัส ดังนั้นจึงต้องถอดรหัสและถอดการเข้ารหัสด้วยก่อนที่จะส่งคืนเป็นข้อความธรรมดาได้
const encryptedMessage = base64url.toBuffer(response.data);
const decryptedResponse = await crypto.decrypt(encryptedMessage);
res.status(200);
res.send(decryptedResponse);
7. ทดสอบการเชื่อมต่อ API ของพาร์ทเนอร์
Google จะส่งคำขอไปยัง Partner Hosted Echo API เพื่อทดสอบการเชื่อมต่อ Partner Echo API
เมื่อพร้อมแล้ว โปรดติดต่อผู้ติดต่อของ Google เพื่อทริกเกอร์คำขอนี้จาก Google
การทดสอบการวนรอบจะเสร็จสมบูรณ์เมื่อคุณอ่านคำขอการวนรอบขาเข้าจาก Google และตอบกลับด้วยการตอบกลับการวนรอบที่ถูกต้องได้
ทีละขั้นตอน
ตอนนี้เซิร์ฟเวอร์ของคุณได้รับและจัดการคำขอเรียบร้อยแล้ว มาดูวิธีการทำงานกัน
ถอดรหัสคำขอ Base64url
เมื่อได้รับคำขอ คุณจะต้องถอดรหัส base64url ก่อน
const encryptedRequest = base64url.toBuffer(req.body);
ถอดรหัสคำขอ
เมื่อถอดรหัส base64url ของคำขอแล้ว คุณจะต้องถอดรหัส
const decryptedRequest = await crypto.decrypt(encryptedRequest);
รับคำขอ
Google ได้ส่งเพย์โหลดข้อความที่คล้ายกับตัวอย่างต่อไปนี้เมื่อถอดรหัสและถอดข้อมูลแล้ว
{
"requestHeader": {
"protocolVersion": {
"major": 1
},
"requestId": "G1MQ0YERJ0Q7LPM",
"requestTimestamp": {
"epochMillis":1481899949606
},
"paymentIntegratorAccountId": "abcdef123456"
},
"clientMessage": "echo Me"
}
สร้างคำตอบ
เมื่ออ่านคำขอ Echo ขาเข้าเรียบร้อยแล้ว คุณก็พร้อมที่จะสร้างการตอบกลับ
clientMessage = JSON.parse(decryptedRequest).clientMessage;
responseBody = bodyHelpers.buildEchoResponseBody(clientMessage);
การตอบกลับจะมีข้อความจาก Google รวมถึงการประทับเวลาและข้อความจากเซิร์ฟเวอร์
{
"responseHeader": {
"responseTimestamp": {
"epochMillis":1481899950236
}
},
"clientMessage": "echo Me",
"serverMessage": "Debug ID 12345"
}
เข้ารหัสและเข้ารหัส Base64 คำตอบ
เมื่อสร้างข้อความตอบกลับแล้ว คุณก็พร้อมที่จะเข้ารหัสและเข้ารหัส base64url
encryptedResponse = await crypto.encrypt(responseBody);
const encodedResponse = base64url(encryptedResponse);
ส่งคืนการตอบกลับ
และสุดท้าย คุณก็พร้อมที่จะส่งการตอบกลับ POST แล้ว
res.send(encodedResponse);
8. ยินดีด้วย
ใน Codelab นี้ คุณได้สร้างการเชื่อมต่อกับ Echo API เรียบร้อยแล้ว