{"id":6030,"date":"2020-02-10T08:57:59","date_gmt":"2020-02-09T23:57:59","guid":{"rendered":"http:\/\/blog.jansnap.com\/?p=6030"},"modified":"2021-12-15T01:46:00","modified_gmt":"2021-12-14T16:46:00","slug":"m-pesa%20c2b%20api%e3%81%ae%e8%a7%a3%e8%aa%ac%e3%83%9a%e3%83%bc%e3%82%b8%e3%82%92%e5%8f%82%e8%80%83%e3%81%ab%e3%80%81%e5%8b%95%e4%bd%9c%e3%81%ae%e9%9b%b0%e5%9b%b2%e6%b0%97%e3%82%92%e3%81%a4%e3%81%8b%e","status":"publish","type":"post","link":"https:\/\/blog.jansnap.com\/?p=6030","title":{"rendered":"M-Pesa C2B API\u306e\u89e3\u8aac\u30da\u30fc\u30b8\u3092\u53c2\u8003\u306b\u3001\u52d5\u4f5c\u306e\u96f0\u56f2\u6c17\u3092\u3064\u304b\u3080"},"content":{"rendered":"\n<h2><span class=\"ez-toc-section\" id=\"%E8%83%8C%E6%99%AF\"><\/span>\n\u80cc\u666f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>M-Pesa\u306e<a href=\"https:\/\/developer.safaricom.co.ke\/\" rel=\"nofollow noopener\" target=\"_blank\">\u516c\u5f0f\u30b5\u30a4\u30c8\u306e\u958b\u767a\u8005\u5411\u3051\u30da\u30fc\u30b8<\/a> \u306b\u306f\u3001\u8a8d\u8a3c\u3084\u30b3\u30de\u30f3\u30c9ID\u3001API\u4ed5\u69d8\u66f8\u304c\u3042\u308a\u307e\u3059\u3002\u958b\u767a\u3092\u9032\u3081\u308b\u306b\u306f\u4fbf\u5229\u3067\u3059\u304c\u3001\u6700\u521d\u306e\u4e00\u6b69\u3068\u3057\u3066\u306f\u6577\u5c45\u304c\u9ad8\u3044\u3067\u3059\u3002<br>\n\u305d\u3053\u3067\u3001\u30b1\u30cb\u30a2\u306e\u6280\u8853\u8005\u306e\u65b9\u304c\u66f8\u3044\u305f\u4e0b\u8a18\u306e\u89e3\u8aac\u30da\u30fc\u30b8\u3092\u898b\u306a\u304c\u3089\u3001C2B\u306eAPI\u3092\u547c\u3073\u51fa\u3057\u3066\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u751f\u6210\u3092\u3057\u3066\u3001\u3069\u3093\u306a\u30c7\u30fc\u30bf\u304c\u9001\u4fe1\u3055\u308c\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n<ul>\n<li><a href=\"https:\/\/www.tekfansworld.com\/how-to-develop-mpesa-integration-to-website-using-c2b-api.html\" rel=\"nofollow noopener\" target=\"_blank\">How to Develop Mpesa Integration to Website Using Safaricom C2B API<\/a><\/li>\n<\/ul>\n\n<h2><span class=\"ez-toc-section\" id=\"%E7%92%B0%E5%A2%83\"><\/span>\n\u74b0\u5883<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<ul>\n<li>\u30ec\u30f3\u30bf\u30eb\u30b5\u30fc\u30d0\n\n<ul>\n<li>PHP 7.3<\/li>\n<li>MySQL 5.7<\/li>\n<li>\u516c\u958b\u3067\u304d\u308b\u30da\u30fc\u30b8(\u5916\u90e8\u304b\u3089\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u3067php\u3092\u547c\u3073\u51fa\u3055\u308c\u308b\u306e\u3067)\n\n<ul>\n<li>SSL(https\u63a5\u7d9a\u304c\u5fc5\u8981)<\/li>\n<li>.htaccess\u30d5\u30a1\u30a4\u30eb (\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3001\u5916\u90e8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u8a2d\u5b9a)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n<h2><span class=\"ez-toc-section\" id=\"%E3%83%86%E3%82%B9%E3%83%88%E7%94%A8%E3%81%AEshortcode%E3%81%A8credentials%E3%81%AE%E5%8F%96%E5%BE%97\"><\/span>\n\u30c6\u30b9\u30c8\u7528\u306eshortcode\u3068credentials\u306e\u53d6\u5f97<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<ul>\n<li>Initiator\u7528\u306e\u30d1\u30b9\u30ef\u30fc\u30c9(\u6700\u592720\u6587\u5b57)\u3092\u6c7a\u3081\u3066\u304a\u304f<\/li>\n<li>\n<a href=\"https:\/\/developer.safaricom.co.ke\/\" rel=\"nofollow noopener\" target=\"_blank\">\u958b\u767a\u8005\u30b5\u30a4\u30c8<\/a>\u306b\u30ed\u30b0\u30a4\u30f3<\/li>\n<li>\n<a href=\"https:\/\/developer.safaricom.co.ke\/test_credentials\" rel=\"nofollow noopener\" target=\"_blank\">Test Credentials \u751f\u6210\u30da\u30fc\u30b8<\/a>\u3092\u958b\u304f<\/li>\n<li>\u300c<code>Shortcode 1<\/code>\u300d\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u3001\u30e1\u30e2\u3057\u3066\u304a\u304f\n\n<ul>\n<li>\u6709\u52b9\u671f\u9593\u306f3\u65e5\u9593\u3067\u3059<\/li>\n<li>\u305f\u307e\u306b<code>Shortcode 1<\/code>\u3082<code>Shortcode 2<\/code>\u3082\u7a7a\u6b04\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u5834\u5408\u306f\u3001\u300c<code>Initiator Security Password<\/code>\u300d\u3092 <strong>\u5165\u308c\u305a\u306b<\/strong> Refresh\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u3001\u8868\u793a\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u4e0b\u306e\u65b9\u306e\u300c<code>Initiator Security Password For? *<\/code>\u300d\u3067\u300c<code>Test<\/code>\u300d\u3092\u9078\u3073\u3001<code>Initiator\u7528\u306e\u30d1\u30b9\u30ef\u30fc\u30c9<\/code>\u3092\u5165\u308c\u3066\u300c<code>Generae Credentrials<\/code>\u300d\u3092\u30af\u30ea\u30c3\u30af<\/li>\n<li>\u300c<code>Generated Initiator Security Credential:<\/code>\u300d\u306e\u4e0b\u306b\u3001\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u3001\u4fdd\u5b58\u3057\u3066\u304a\u304f<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/camo.qiitausercontent.com\/91613bf647579b3752678d0e58a238e9eff95ad4\/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3134323537372f31363337643666642d343164652d326362332d663733622d3934616339393837383565362e706e67\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F142577%2F1637d6fd-41de-2cb3-f73b-94ac998785e6.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=4ac33bcf7d312f618896f5462c4b67a6\" alt=\"02_1_test_credential.png\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/142577\/1637d6fd-41de-2cb3-f73b-94ac998785e6.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F142577%2F1637d6fd-41de-2cb3-f73b-94ac998785e6.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=086e6b0939e30d98050a8af806431f94 1x\" loading=\"lazy\"><\/a><\/p>\n\n<h2><span class=\"ez-toc-section\" id=\"DB%E3%81%AB%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90\"><\/span>\nDB\u306b\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u6210<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"text\" class=\"language-text\">CREATE TABLE mpesa_payments (\n  id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,\n  Auto double,\n  TransactionType VARCHAR(40),\n  TransID  VARCHAR(40),\n  TransTime VARCHAR(40),\n  TransAmount double,\n  BusinessShortCode VARCHAR(15),\n  BillRefNumber VARCHAR(40),\n  InvoiceNumber VARCHAR(40),\n  ThirdPartyTransID VARCHAR(40),\n  MSISDN VARCHAR(20),\n  FirstName VARCHAR(60),\n  MiddleName VARCHAR(60),\n  LastName VARCHAR(60),\n  OrgAccountBalance double\n) DEFAULT CHARSET= utf8mb4\n;<\/code><\/pre>\n\n\n\n<h2><span class=\"ez-toc-section\" id=\"validation%E7%94%A8%E3%81%A8confirmation%E7%94%A8%E3%81%AEURL%E3%81%A8%E3%82%B5%E3%83%BC%E3%83%90%E3%82%92%E7%94%A8%E6%84%8F%E3%81%99%E3%82%8B\"><\/span>\nvalidation\u7528\u3068confirmation\u7528\u306eURL\u3068\u30b5\u30fc\u30d0\u3092\u7528\u610f\u3059\u308b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<ul>\n<li>\u30ec\u30f3\u30bf\u30eb\u30b5\u30fc\u30d0\u306a\u3069\u3067\u3001https\u3067\u5916\u90e8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u3002(Let\u2019s Encrypt\u3068\u304b)\n\n<ul>\n<li>URL(\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u540d\u306a\u3069)\u306b\u300cmpesa\u300d\u304c\u5165\u3063\u3066\u3044\u308b\u3068\u5f8c\u8ff0\u306eURL\u767b\u9332\u3067\u5931\u6557\u3059\u308b\u306e\u3067\u3001mps\u3068\u304b\u306b\u3057\u3066\u304a\u304f<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n<h2><span class=\"ez-toc-section\" id=\"%E8%A7%A3%E8%AA%AC%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E3%81%82%E3%82%8B2%E3%81%A4%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%85%8D%E7%BD%AE\"><\/span>\n\u89e3\u8aac\u30da\u30fc\u30b8\u306b\u3042\u308b2\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u914d\u7f6e<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<ul>\n<li>validation.php \u3092\u914d\u7f6e\u3059\u308b(\u89e3\u8aac\u30da\u30fc\u30b8\u306e\u300cStep 6:  Creating a C2B validation Callback URL\u300d)\n\n<ul>\n<li>\u305d\u306e\u307e\u307e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b<\/li>\n<li>WEB\u30d6\u30e9\u30a6\u30b6\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u300c<code>Technical error<\/code>\u300d\u3068\u8868\u793a\u3055\u308c\u308c\u3070OK\u3002\n\n<ul>\n<li>\u4f8b\uff1a <a href=\"https:\/\/www.example.com\/mps\/validation.php\" class=\"autolink\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/www.example.com\/mps\/validation.php<\/a>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>confirmation.php \u3092\u914d\u7f6e\u3059\u308b(\u89e3\u8aac\u30da\u30fc\u30b8\u306e\u300cStep 7:  Creating a C2B Confirmation Callback URL on Your Website\u300d)\n\n<ul>\n<li>\u30a2\u30af\u30bb\u30b9\u7528\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u6c7a\u3081\u3066\u304a\u304d\u30018\u884c\u76ee\u4ed8\u8fd1\u306e<code>'yourPU_RstrongPasswordSample$'<\/code>\u306e\u90e8\u5206\u3092\u7f6e\u63db\u3057\u3066\u5165\u308c\u308b<\/li>\n<li>19-22\u884c\u76ee\u4ed8\u8fd1\u306e\u3001<code>$servername<\/code>, <code>$username<\/code>, <code>$password<\/code>, <code>$dbname<\/code> \u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b5\u30fc\u30d0\u540d\u306a\u3069\u3092\u8a2d\u5b9a\u3059\u308b<\/li>\n<li>\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b<\/li>\n<li>WEB\u30d6\u30e9\u30a6\u30b6\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u300c<code>Technical error<\/code>\u300d\u3068\u8868\u793a\u3055\u308c\u308c\u3070OK\u3002\n\n<ul>\n<li>\u4f8b\uff1a <a href=\"https:\/\/www.example.com\/mps\/confirmation.php\" class=\"autolink\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/www.example.com\/mps\/confirmation.php<\/a>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n<h2><span class=\"ez-toc-section\" id=\"M-pesa_payment_gateway%E3%81%AB%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AFURL%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%A8%AD%E7%BD%AE%E3%81%99%E3%82%8B\"><\/span>\nM-pesa payment gateway\u306b\u30b3\u30fc\u30eb\u30d0\u30c3\u30afURL\u3092\u767b\u9332\u3059\u308b\u305f\u3081\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8a2d\u7f6e\u3059\u308b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<ul>\n<li>register.php \u3092\u914d\u7f6e\u3059\u308b(\u89e3\u8aac\u30da\u30fc\u30b8\u306e\u300cStep 8:  Registering Validation and Confirmation Callback URLs on Safaricom API\u300d)<\/li>\n<li>\n<a href=\"https:\/\/developer.safaricom.co.ke\/user\/me\/apps\" rel=\"nofollow noopener\" target=\"_blank\">MY APPS<\/a>\u306e\u30da\u30fc\u30b8\u3067\u3001<code>Consumer Key<\/code>\u3068<code>Consumer Secret<\/code>\u3092\u30e1\u30e2\u3057\u3066\u304a\u304f<\/li>\n<li>\n<code>$shortcode<\/code>, <code>$consumerkey<\/code>, <code>$consumersecret<\/code> \u306b\u30d1\u30b9\u30ef\u30fc\u30c9\u306a\u3069\u3092\u8a2d\u5b9a\u3059\u308b<\/li>\n<li>\n<code>$validationurl<\/code>, <code>$confirmationurl<\/code> \u306b\u4e0a\u8a18\u3067\u914d\u7f6e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306eURL\u3092\u8a2d\u5b9a\u3002\n\n<ul>\n<li>(<code>https:\/\/www.example.com\/mps\/validation.php?token='yourPU_RstrongPasswordSample$'<\/code>\n\u306e\u3088\u3046\u306b\u306a\u308b\u3002\u89e3\u8aac\u30da\u30fc\u30b8\u306b\u3042\u308b\u30b5\u30f3\u30d7\u30eb\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u5fae\u5999\u306b\u9055\u3046\u306e\u3067\u6ce8\u610f\u3002)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n<h2><span class=\"ez-toc-section\" id=\"%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AFURL%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%A6%E3%80%81URL%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B\"><\/span>\n\u30b3\u30fc\u30eb\u30d0\u30c3\u30afURL\u3092\u547c\u3073\u51fa\u3057\u3066\u3001URL\u3092\u767b\u9332\u3059\u308b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<ul>\n<li>WEB\u30d6\u30e9\u30a6\u30b6\u3067\u3001\u4e0a\u8a18\u3067\u8a2d\u7f6e\u3057\u305fregister.php\u3092\u958b\u304f\u3068\u3001\u4e2d\u3067curl\u304c\u52d5\u3044\u3066\u3001URL\u304c\u767b\u9332\u3055\u308c\u308b\n\n<ul>\n<li>\u4f8b\uff1a <a href=\"https:\/\/www.example.com\/mps\/register.php\" class=\"autolink\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/www.example.com\/mps\/register.php<\/a>\n<\/li>\n<li>\u300c<code>\"ResponseDescription\": \"success\"<\/code>\u300d\u304c\u8fd4\u3063\u3066\u304f\u308c\u3070\u6210\u529f<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"json\" class=\"language-json\">{\n            \"ConversationID\": \"\",\n            \"OriginatorCoversationID\": \"\",\n            \"ResponseDescription\": \"success\"\n        }<\/code><\/pre>\n\n\n\n<ul>\n<li>URL\u306b\u300cmpesa\u300d\u304c\u5165\u3063\u3066\u3044\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30a8\u30e9\u30fc\u306b\u306a\u308b<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"json\" class=\"language-json\">{\n                    \"requestId\":\"28813-6618036-1\",\n                    \"errorCode\": \"400.003.02\",\n                    \"errorMessage\": \"Bad Request - Invalid ValidationURL - URL has the word MPESA\"\n}<\/code><\/pre>\n\n\n\n<h2><span class=\"ez-toc-section\" id=\"%E3%80%8CMpesa_API_URLs_simulator%E3%80%8D%E3%81%A7%E3%80%81%E6%93%AC%E4%BC%BC%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E6%B5%81%E3%81%97%E3%81%A6%E3%80%81%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B\"><\/span>\n\u300cMpesa API URLs simulator\u300d\u3067\u3001\u64ec\u4f3c\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u6d41\u3057\u3066\u3001\u52d5\u4f5c\u78ba\u8a8d\u3059\u308b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<ul>\n<li><p><a href=\"https:\/\/www.tekfansworld.com\/simulate\/mpesa-c2b-api-simulation.php\" rel=\"nofollow noopener\" target=\"_blank\">Mpesa API URLs simulator<\/a> \u3092\u958b\u304f<\/p><\/li>\n<li>\n<p><code>Validation URL<\/code>\u3001<code>Confirmation URL<\/code> \u3092\u5165\u529b\u3057\u3066\u3001\u300c<code>Send Sample Transaction<\/code>\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3059<\/p>\n\n<ul>\n<li>URL\u306b\u306f\u3001\u300c<code>?token=yourPU_RstrongPasswordSample$<\/code>\u300d\u3068\u3001\u30c8\u30fc\u30af\u30f3\u6587\u5b57\u5217\u3082\u5165\u308c\u308b<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u753b\u9762\u306e\u4e0b\u90e8\u306b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8868\u793a\u3055\u308c\u308c\u3070OK\u3002<\/p>\n\n<ul>\n<li>\u5224\u5b9a\u51e6\u7406\u304c\u5165\u3063\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u300c<code>Validation URL said :<\/code>\u300d\u304c\u300c<code>Failed<\/code>\u300d\u3068\u300c<code>Success<\/code>\u300d\u306e2\u3064\u8868\u793a\u3055\u308c\u307e\u3059\u304c\u3001DB\u306b\u306f\u5024\u304c\u5165\u308a\u307e\u3059\u3002\n\n<ul>\n<li>\u300c<code>You don't have permission to access this resource.<\/code>\u300d\u306e\u3088\u3046\u306b\u8868\u793a\u3055\u308c\u305f\u5834\u5408\u306f\u3001.htaccess\u306a\u3069\u3067\u30a2\u30af\u30bb\u30b9\u5236\u9650\u3092\u89e3\u9664\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/camo.qiitausercontent.com\/aff6a72cca9200a13dd1a83edc58bfeb2e212237\/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3134323537372f37366636316135342d393935312d306336362d623433332d3963323761326239366139642e706e67\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" width=\"1227\" alt=\"02_2_APITestingResults.png\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F142577%2F76f61a54-9951-0c66-b433-9c27a2b96a9d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=1082836cec4649cb81e5e8ec311bde22\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/142577\/76f61a54-9951-0c66-b433-9c27a2b96a9d.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F142577%2F76f61a54-9951-0c66-b433-9c27a2b96a9d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=5d55c60a6761bf5da6ee41f3d51d8b08 1x\" loading=\"lazy\"><\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"text\" class=\"language-text\">Mpesa PHP API Testing Results\nSample data sent :\n\n{ \"TransactionType\": \"Pay Bill\", \"TransID\": \"LUG8366JGC\", \"TransTime\": \"20200210093951\", \"TransAmount\": \"0.06\", \"BusinessShortCode\": \"999999\", \"BillRefNumber\": \"SAMPLE ACCOUNT 101\", \"InvoiceNumber\": \"\", \"OrgAccountBalance\": \"0.06\", \"ThirdPartyTransID\": \"\", \"MSISDN\": \"254000000000\", \"FirstName\": \"JOHN\", \"MiddleName\": \"M.\", \"LastName\": \"DOE\" }\n\nValidation URL said :\n\n{\"ResultCode\":1, \"ResultDesc\":\"Failed\", \"ThirdPartyTransID\": 0}{\"ResultCode\":0, \"ResultDesc\":\"Success\", \"ThirdPartyTransID\": 0}\n\nConfirmation URL said :\n\n{\"ResultCode\":0,\"ResultDesc\":\"Confirmation received successfully\"}<\/code><\/pre>\n\n\n\n<ul>\n<li>DB\u3082\u78ba\u8a8d\u3059\u308b\u30022\u30ec\u30b3\u30fc\u30c9\u5165\u308c\u3070OK\u3002\n\n<ul>\n<li>TransTime\u5217\u306b\u5b9f\u884c\u3057\u305f\u6642\u523b\u3001TransID\u306b\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3ID\u304c\u5165\u308b\n\n<ul>\n<li>\u30b1\u30cb\u30a2\u306fUTC+3\u306a\u306e\u3067\u3001\u5b9f\u884c\u3057\u305f\u6642\u523b\u306f\u65e5\u672c\u6642\u9593(UTC+9)\u3088\u308a6\u6642\u9593\u524d\u306e\u6642\u523b\u304c\u5165\u308b<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<ul>\n<li><a href=\"https:\/\/www.tekfansworld.com\/how-to-develop-mpesa-integration-to-website-using-c2b-api.html\" rel=\"nofollow noopener\" target=\"_blank\">How to Develop Mpesa Integration to Website Using Safaricom C2B API<\/a><\/li>\n<\/ul>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4175,4174],"tags":[4173,4172],"class_list":["post-6030","post","type-post","status-publish","format-standard","hentry","category-m-pesa","category-4174","tag-m-pesa","tag-4172"],"_links":{"self":[{"href":"https:\/\/blog.jansnap.com\/index.php?rest_route=\/wp\/v2\/posts\/6030","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jansnap.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jansnap.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jansnap.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jansnap.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6030"}],"version-history":[{"count":0,"href":"https:\/\/blog.jansnap.com\/index.php?rest_route=\/wp\/v2\/posts\/6030\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jansnap.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jansnap.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jansnap.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}