Laravel, PHP, Thông tin chung

Tài liệu thành toán GMO

GMO là một cổng dịch vụ thanh toán số 1 của Nhật, Nó hỗ trợ nhiều hình thức thanh toán (credit card, multipayment như pay-easy convenience-store …). Nó cung cấp đầy đủ các phương thức thanh toán chính của Nhật.
Để bắt đầu làm việc với GMO api, thì bạn chỉ cần phải đăng kí một tài khoản test trên website của GMO.
Vào đây để tạo một tài khoản test: https://service.gmo-pg.com/cyllene/entry/trialStart.htm sau khi điền đủ các thông tin nó sẽ gởi cho bạn 1 email confirm, sau khi confirm bạn sẽ có 1 tài khoản như thế này:

Khi nhận đươc mail trên thì GMO sẽ cung cấp cho người dùng 2 link và 2 tk tương ứng để đăng nhập vào 2 link trên

GMO có 1 số thuật ngữ như sau:
1 Merchant: Là cá nhân hoặc công ty bán sản phẩm hoặc dịch vụ, là nơi cung cấp các dịch vụ đến người dùng, ở đây là web của chúng ta.
2 Credit Card – Thẻ tín dụng được sử dụng để mua sản phẩm hoặc dịch vụ thông qua tài khoản tín dụng. Thẻ này có số thẻ gồm 16 số.
3 Pay-Easy: là hình thức đăng kí mua sản phẩm rồi tiến hành trả tiền qua các ATM, Internet Banking, …
4 Transaction – Giao dịch: là thực hiện 1 là thanh toán, kết thúc quá trình nếu thành công thì merchant nhận được tiền, endUser nhận được service
5 Site: là một trang quản lý các shop và member
6 Shop là nơi quản lý các transaction
7 OrderID: là giá trị để merchant nhận biết về giao dịch, là duy nhất
8 ShopID, ShopPass, SiteID, SitePass là các giá trị do GMO cung cấp khi đăng kí.
9 AccessID, AccessPass là các giá trị được GMO trả về khi thực hiện 1 entry Transaction.

Giao diện sau khi đăng nhập sẽ như trên
Sau khi có hoàn tất việc đăng ký để sử dụng các API thì cần lưu ý các thông tin sau
SiteId, SitePass, ShopId, ShopPass

SiteId và SitePass sẽ đươc lấy từ mục サイト管理 của site. ShopId và ShopPass sẽ được lấy từ mục サイト管理 của shop (2 link ở trong mail)
GMO sẽ cung cấp 1 số API để người dùng có thể sử dụng để thanh toán. Mọi tài liệu liên quan đến GMO API có thể được tìm thấy ở mục ドキュメント

Để thuận tiện cho việc thực hiện các thanh toán thì có thể lưu thông tin của member và credit card cho user đó lên GMO.
– Có thể sử dụng thông tin của member để có thể thực hiện thanh toán mà không cần phải nhập đi nhập lại thông tin user và số thẻ credit mỗi lần thanh toán.
1 API lưu thông tin member
– link nghiên cứu: https://gmopg_docs:PF%cwa$GmCC@docs.mul-pay.jp/payment/credit/apimember
– Url API: https://pt01.mul-pay.jp/payment/SaveMember.idPass
– Method: POST
– Request:
+ SiteID: là site id lấy từ サイト管理 của site (bắt buộc phải có)
+ SitePass: là site password lấy từ サイト管理 của site (bắt buộc phải có)
+ MemberID: là id của user mình sẽ lưu vào trong site. Tối đa sẽ là 60 ký tự 1 byte không được phép trùng và MemberID này sẽ do mình tự đặt cho user vậy nên hãy lưu ý tránh đặt trùng (bắt buộcphải có)
+ MemberName: là tên của user (không bắt buộc phải có)
– Respone:
+ Khi thành công thì sẽ trả về MemberID mà mình vừa gửi lên API
+ Nếu thất bại sẽ trả về 2 mã lỗi ErrCode và ErrInfo. Nếu như có mã lỗi xảy ra có thể thêm chi tiết ở link https://gmopg_docs:PF%cwa$GmCC@docs.mul-pay.jp/payment/credit/errorcode

Lưu thông tin Member thành công
Lưu thông tin Member thất bại

Ngoài ra còn 1 số API liên quan đến thông tin Member như là update thông tin member hay tìm kiếm thông tin member, xóa Member. 3 API này chỉ khác với API lưu thông tin là url API
– update thông tin member => https://pt01.mul-pay.jp/payment/UpdateMember.idPass
– tìm kiếm thông tin member => https://pt01.mul-pay.jp/payment/SearchMember.idPass
– xóa member => https://pt01.mul-pay.jp/payment/DeleteMember.idPass
3 API trên để có thể thành công thì cần phải có MemberID đã được lưu thành công ở site của GMO


2 API lưu thông tin thẻ credit cho Member sử dụng token
– link nghiên cứu: https://gmopg_docs:PF%cwa$GmCC@docs.mul-pay.jp/payment/credit/apimember
– Url API: https://pt01.mul-pay.jp/payment/SaveCard.idPass
– Method: POST
– Request:
+ SiteID: là site id lấy từ サイト管理 của site (bắt buộc phải có)
+ SitePass: là site password lấy từ サイト管理 của site (bắt buộc phải có)
+ MemberID: là id của user mình sẽ lưu vào trong site. Tối đa sẽ là 60 ký tự 1 byte không được phép trùng và MemberID này sẽ do mình tự đặt cho user vậy nên hãy lưu ý tránh đặt trùng (bắt buộcphải có)
+ MemberName: là tên của user (không bắt buộc phải có)
+ CardSeq: Số thứ tự thẻ của member. Vì 1 member có thể có nhiều card nên CardSeq sẽ thứ giúp cho việc lấy thông tin thẻ dễ dàng hơn. (khi đăng ký thẻ mới cho 1 user thì sẽ không bắt buộc còn nếu như chỉnh sửa thông tin card thì cần có CardSeq)
+ UpdateType: là 1 hoặc 2 (mặc định là 1)
. 1: Update all (update tất cả thông tin card bao gồm số thẻ, ngày hết hạn, ccv)
. 2: Update other than the card number. (thay đổi các thông tin khác ngoài số thẻ sử dụng cho trường hợp đã gia hạn thẻ credit mà không cần đổi số thẻ)
+ Token: là token được GMO trả về
– Respone:
+ Khi thành công thì sẽ trả về 1 số thông tin như CardSeq, CardNo, Forward, Brand, ….
+ Nếu thất bại sẽ trả về 2 mã lỗi ErrCode và ErrInfo. Nếu như có mã lỗi xảy ra có thể thêm chi tiết ở link https://gmopg_docs:PF%cwa$GmCC@docs.mul-pay.jp/payment/credit/errorcode
1.1 Về token trong request của GMO đây là 1 chuỗi ký tự ngẫu nhiên được GMO trả về khi gửi thông tin của thẻ lên GMO. Để có thể lấy được token này thì sẽ sử dụng javascript
Bước 1: Thêm thư viện https://stg.static.mul-pay.jp/ext/js/token.js vào dự án nếu đang kết nối với môi trường test của GMO hoặc là thư viện https://stg.static.mul-pay.jp/ext/js/token.js vào dự án nếu đang kết nối với môi trường product của GMO
Bước 2: Lấy thông tin số thẻ, ngày hết hạn, ccv rồi gửi lên cho GMO
* code mẫu

$('#btnSubmit').on('click', function() {
Multipayment.init('{{ SHOP_ID }}'); // thực hiện liên kết với shop id của mình
var formId = $(this).data('form_id');
// lấy thông tin thẻ user đã nhập
var credit_number = $(formId + ' input[name="credit_number"]').val(); 
var security_code = $(formId + ' input[name="security_code"]').val();
var credit_expired_at_month = $(formId + ' select[name="credit_expired_at_month"]').val();
var credit_expired_at_year = $(formId + ' select[name="credit_expired_at_year"]').val();
var month = parseInt(credit_expired_at_month);
if (month < 10) {
    month = '0' + credit_expired_at_month;
}
var expire = '';
if (credit_expired_at_month && credit_expired_at_year) {
    expire = credit_expired_at_year + month;
}
// Tạo 1 object cho thẻ credit để đưa thông tin cho GMO
let cardObj = {
    cardno : credit_number,
    expire : expire,
    securitycode : security_code
};
// Thực hiện lấy token 
Multipayment.getToken(cardObj, execPurchase);
});
// function call back
function execPurchase(response) {
// GMO sẽ trả về thông tin nếu thành công response.resultCode = '000' và token = response.tokenObject.token
if (response.resultCode == '000') {
$('#form-register-card #tokenGMO').val(response.tokenObject.token);
setTimeout(function() {
$('#form-register-card').submit();
}, 500);
} else {
// GMO sẽ trả về thông tin nếu thất bại response.resultCode != '000'
alert('購入処理中にエラーが発生しました。クレジットカード情報の入力をお確かめください。');
}
}


Sau khi lấy được token thành công thì sẽ chuyển token này theo request đã ở trên để lưu thông tin thẻ cho user.
* Lưu ý mỗi lần thay đổi số thẻ sẽ cần phải lấy token lại và chuyển lên GMO còn nếu chỉ update ngày đã gia hạn thẻ thì chỉ cần UpdateType = 2 và không cần phải lấy token

3 API thanh toán bằng thẻ credit
link nghiên cứu: https://gmopg_docs:PF%cwa$GmCC@docs.mul-pay.jp/payment/credit/api
GMO cung cấp API thanh toán 1 lần như sau:
Trước khi thực hiện thanh toán 1 lần thì sẽ cần phải đăng ký 1 order
3.1 API đăng ký order
– Url API: https://pt01.mul-pay.jp/payment/EntryTran.idPass
– Method: POST
– Request cần thiết:
+ ShopID: là shop id lấy từ サイト管理 của shop (bắt buộc phải có)
+ ShopPass: là shop password lấy từ サイト管理 của shop (bắt buộc phải có)
+ OrderID: là id của order mình sẽ lưu vào trong shop và site. Tối đa sẽ là 27 ký tự 1 byte không được phép trùng và OrderID này sẽ do mình tự đặt cho user vậy nên hãy lưu ý tránh đặt trùng (bắt buộcphải có)
+ JobCd: là loại xử lý được thực hiện trên giao dịch
. Có 4 loại và nên chọn CAPTURE: Instant capture
CHECK: Validity check
CAPTURE: Instant capture
AUTH: Authorization
SAUTH: Simple authorization
+ Amount: là số tiền cần thanh toán (từ 1 đến 9,999,999 không đc phép để là 0)
+ Tax: số tiền thuế vận chuyển (tiền ship; từ 1 đến 9,999,999 không đc phép để là 0)
– Respone:
+ Khi thành công thì sẽ trả về AccessId và AccessPass sử dụng để thực hiện thanh toán
+ Nếu thất bại sẽ trả về 2 mã lỗi ErrCode và ErrInfo. Nếu như có mã lỗi xảy ra có thể thêm chi tiết ở link https://gmopg_docs:PF%cwa$GmCC@docs.mul-pay.jp/payment/credit/errorcode

Khi thực hiện thành công đăng ký order
Khi thực hiện đăng ký lỗi

3.2 API thực hiện thanh toán order
– Url API: https://pt01.mul-pay.jp/payment/ExecTran.idPass
– Method: POST
– Request cần thiết:
+ AccessID: là AccessID đã lấy từ phần đăng ký order ở trên
+ AccessPass: là AccessPass đã lấy từ phần đăng ký order ở trên
+ OrderID: là OrderID đã đăng ký ở trên
+ Method: là phương thức thanh toán (sẽ là số từ 1 đến 5 tương ứng vs các phương thức)
. Có 4 phương thức
1: Bulk
2: Installment – Trả góp
3: Bonus (One time) – Trả 1 lần
4: Bonus Installment – Trả góp
5: Revolving
+ PayTimes: là số lần trả góp (sẽ cần thiết nếu Method là Installment (2) hoặc Bonus Installment(4))
+ SiteID: là site id lấy từ サイト管理 của site (bắt buộc phải có)
+ SitePass: là site password lấy từ サイト管理 của site (bắt buộc phải có)
+ MemberID: là id của user mình sẽ lưu vào trong site. Tối đa sẽ là 60 ký tự 1 byte không được phép trùng và MemberID này sẽ do mình tự đặt cho user vậy nên hãy lưu ý tránh đặt trùng (bắt buộcphải có)
+ CardSeq: Số thứ tự thẻ của member. Vì 1 member có thể có nhiều card nên CardSeq sẽ thứ giúp cho việc lấy thông tin thẻ dễ dàng hơn. (khi đăng ký thẻ mới cho 1 user thì sẽ không bắt buộc còn nếu như chỉnh sửa thông tin card thì cần có CardSeq)
– Respone: Khi thành công thì sẽ trả về các thông tin của order đã đăng ký như OrderID, Method, ….
Nếu thất bại sẽ trả về 2 mã lỗi ErrCode và ErrInfo. Nếu như có mã lỗi xảy ra có thể thêm chi tiết ở link https://gmopg_docs:PF%cwa$GmCC@docs.mul-pay.jp/payment/credit/errorcode

Thực hiện thanh toán thành công
Thực hiện thanh toán thất bại

Ngoài ra thì còn 1 số API liên quan đến thanh toán bằng thẻ credit như tìm kiếm order, thay đổi số tiền của order, … có thể tham khảo thêm ở link tham khảo đã gắn ở trên.
4 Thanh toán tự động hàng tháng bằng thẻ credit
Là thanh toán tự động. Vào ngày và tháng đã đăng ký trong thanh toán sẽ thực hiện tự động trừ tiền
– Url API: https://pt01.mul-pay.jp/payment/RegisterRecurringCredit.idPass
– Method: POST
– Request cần thiết:
+ ShopID: là shop id lấy từ サイト管理 của shop (bắt buộc phải có)
+ ShopPass: là shop password lấy từ サイト管理 của shop (bắt buộc phải có)
+ RecurringID: là ID của thánh toán tự động cần phải tự đăng ký và ID của thanh toán này cũng sẽ phải là duy nhất
+ Amount: là số tiền thanh toán
+ Tax: là số tiền thuế
+ ChargeDay: là ngày thực hiện trả tiền tự động (sẽ là 2 ký tự từ 01 đến 31 tương ứng các ngày trong tháng)
+ ChargeMonth: là tháng thực hiện trừ tiền tự động (từ 01 đến 12 nếu có nhiều tháng thì sẽ cách nhau bởi dấu “|”)
+ ChargeStartDate: là ngày thanh toán tự động bắt đầu thực hiện (sẽ bắt buộc phải là ngày trong tương lai, định dạng là yyyyMMdd)
+ ChargeStopDate: là ngày kết thúc thanh toán tự động. Nếu để rỗng thì sẽ không có ngày kết thúc trừ khi người dùng xóa thanh toán đi (định dạng là yyyyMMdd)
+ SiteID: là site id lấy từ サイト管理 của site (bắt buộc phải có)
+ SitePass: là site password lấy từ サイト管理 của site (bắt buộc phải có)
+ MemberID: là id của user mình sẽ lưu vào trong site. Tối đa sẽ là 60 ký tự 1 byte không được phép trùng và MemberID này sẽ do mình tự đặt cho user vậy nên hãy lưu ý tránh đặt trùng (bắt buộcphải có)
+ CardSeq: Số thứ tự thẻ của member. Vì 1 member có thể có nhiều card nên CardSeq sẽ thứ giúp cho việc lấy thông tin thẻ dễ dàng hơn. (khi đăng ký thẻ mới cho 1 user thì sẽ không bắt buộc còn nếu như chỉnh sửa thông tin card thì cần có CardSeq)
– Respone: Khi thành công thì sẽ trả về các thông tin của thanh toán tự động đã đăng ký
Nếu thất bại sẽ trả về 2 mã lỗi ErrCode và ErrInfo.
– Hiện tại phần thanh toán tự động sẽ là các file doc pdf nên người dùng sẽ phải download về và xem. Và chỉ có bản tiếng Nhật (https://gmopg_docs:PF%cwa$GmCC@docs.mul-pay.jp/service/doclist) mục automatic sales
– Account đăng nhập vào
ID              :gmopg_docs
パスワード:PF%cwa$GmCC

Tài liệu liên quan đến API thanh toán tự động

Ngoài ra còn 1 số API như là tìm kiếm thanh toán, thay đổi thông tin thanh toán, hủy thanh toán tự động… và mọi API lên quan đến thanh toán tự động thì đều có thể tham khảo ở tài liệu ở trên