はじめに
safaricom開発者ポータルとは
M-PesaのB2C、C2B、B2B取引向けREST APIエンドポイントを提供します。Curl、Ruby、PHP、Python、Node.js、Javaなどのサンプルコードと、APIリクエストごとのJSONレスポンス例が用意されており、利用開始をサポートします。
用語
M-PESA: ケニアで提供されているモバイル送金サービスで、ユーザーが携帯電話を通じてお金を保管したり送金したりできるサービス。
Daraja API: safaricomの提供するM-PESAの支払い中心のREST APIの総称。
Command IDs: 取引の種類を指定するための一意のコマンド。
Salary Payment: 登録済みおよび未登録のM-PESAユーザーの両方に送金をサポートする給与支払い機能。
Business Payment: 一般的な企業から顧客への支払いで、M-PESA登録ユーザーのみをサポート。Promotion Payment: 顧客へのプロモーション支払い。M-PESAの通知メッセージはお祝いのメッセージで構成され、M-PESA登録ユーザーのみをサポート。
Short Code: ショートコードは、Pay Bill(支払コード)やBuy Goods(購入コード)などの組織に割り当てられる固有の番号で、顧客からの支払いを受け取るために使用される。
Pay Bill: 組織が顧客から定期的にお金を集めることができるM-PESAを利用した現金回収サービス。Buy Goods: 主に商品の購入やサービスの支払いに使用される機能。これらの近接支払いは、両当事者がすぐにテキストメッセージで確認を受け取る仕組みで、購入者と組織またはアカウント番号との関係は必要ありません。
Till Number: 店番号に紐づけられた番号で、顧客が支払いを行う際に使用される。
M-PESA STK Push: 「Lipa na M-PESA」支払いを簡単に行う方法で、リクエストはUSSD、携帯、WEBから開始でき、ユーザーは、自分のM-PESA PINを入力することだけで、支払いが完了する。Lipa na M-PESA online API や M-PESA express (STK Push/NI push)とも呼ぶ。
safaricomの開発者用ポータルへの登録
https://developer.safaricom.co.ke
アプリを作成
名前を入力し、APIを選択し、作成する
Consumer Key, Consumer Secretが付与される
Authorization APIの使用
アクセストークンの取得 (curl)
CONSUMER_KEY=
CONSUMER_SECRET=
curl -u "${CONSUMER_KEY}:${CONSUMER_SECRET}" \
--request GET \
--url "https://sandbox.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials" \
--header "Content-Type: application/json"
Response:
{
"access_token": "xxxxx",
"expires_in": "3599"
}
M-PESA Express Simulatorの使用
Lipa na M-PESA Online API(別名M-PESA Express)は、企業が顧客からの支払いを簡単かつ効率的に受け取るためのC2B(顧客からビジネスへの)支払いAPIです。 このAPIを利用することで、企業は顧客のM-PESA登録済み電話番号に対して支払いリクエストを送信し、顧客はそのリクエストに従って自分のM-PESA PINを入力するだけで支払いを承認できます。
この仕組みにより、顧客はビジネスのPay Bill番号やアカウント番号を覚える必要がなくなり、簡単に取引を完了できます。また、企業側は支払いリクエストに必要な情報を事前に正確に設定できるため、誤送金のリスクを大幅に削減できます。このAPIは、顧客がリクエストを送信する従来のC2Bトランザクションとは異なり、企業がトランザクションを主導する点が特徴です。
さらに、通常のC2B APIで必要な検証・確認プロセス(Validation-Confirmation)が不要であるため、迅速な取引が可能です。「STK Push」(Sim Tool Kit Push)として知られるこの機能は、現在では「NI Push」(Network Initiated Push)に進化し、さらに使いやすくなっています。
このAPIは、企業と顧客の間での支払い手続きを簡略化し、効率的で安全な取引を実現する重要なツールです。
Simulatorで作成したアプリを選択すると以下が取得できる)
- Amount
- Phone number – Customer
- Party A (Phone number) – Customer
- Party B (Short code) – Merchant
- Passkey
また、Passwordは、base64.encode(Shortcode+Passkey+Timestamp)で作成する
以下で使用する値は、Simulatorが提供するテスト用の値
ACCESS_TOKEN=
SHORT_CODE=174379
PASSKEY=
TIMESTAMP=$(date '+%Y%m%d%H%M%S')
KEY=${SHORT_CODE}${PASSKEY}${TIMESTAMP}
PASSWORD=$(/bin/echo -n ${KEY} | base64)
CMD=$(cat <<EOF
curl --request POST \
--url https://sandbox.safaricom.co.ke/mpesa/stkpush/v1/processrequest \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"BusinessShortCode": "${SHORT_CODE}",
"Password": "${PASSWORD}",
"Timestamp": "${TIMESTAMP}",
"TransactionType": "CustomerPayBillOnline",
"Amount": "1",
"PartyA": "254708374149",
"PartyB": "174379",
"PhoneNumber": "254708374149",
"CallBackURL": "https://admin.kings-and-queens.co.ke/safaricom/callback",
"AccountReference": "CompanyXLTD",
"TransactionDesc": "Payment of X"
}'
EOF
)
echo "$CMD"
eval "$CMD"
参考