PHP 串接 AlipayHK 踩坑記錄

最近幫朋友串接 AlipayHK,一開始根本這什麼東西都不知道,只大概知道是串金流、支付寶,串接的過程真是千辛萬苦,這邊記錄下來給有需要的人。

AlipayHK?支付寶?

根據【教學】Alipay HK vs 支付寶中國版 常見香港用家 3 大錯誤,大概就像是香港版的支付寶,文章內提到

Alipay HK 跟「支付寶」的區別
如以上所說 Alipay HK 及支付寶中國版是兩套獨立的系統,就連 APP 也是兩個不同的版本。Alipay HK 是獨立的本地公司,方便為香港度身訂造各種不同的優惠及使用方法。

好,小蛙了解自己要串的東西是「香港版支付寶」後,開始吧!朋友 email 一些「線索」來:

  • Alipay Global Portal: https://globalprod.alipay.com/login/global.htm
  • Account Name (PID Email):
  • Default Login Password:
  • Default Payment Password:
  • AlipayHK – PC2Mobile: https://global.alipay.com/doc/website_hk/intro
  • Sandbox Guideline: http://offsite.dev-codpayment.com/sandbox_app/AlipayHK_Sandbox_Account.pdf
  • Sandbox APP Download Link: https://offsite.dev-codpayment.com/sandbox_app/sandboxapp.pdf

不知道是支付寶網站改版還是怎樣,很多查到的資料或是連結,都沒有辦法連到正確的網頁,連照著教學文件都面臨找不到選單或位置的窘境,真的是花了很多冤枉時間,估計如果沒有寫下這篇,三天後小蛙又忘記怎麼連到對應的頁面或功能了。

準備密鑰

首先一開始登入的頁面就怪怪的,從上面連結進去登入完之後,卻轉到這個頁面要再登入一次,嗯,也許是新舊首頁,就再登入一次吧!登入完之後,下面有兩個選項,Online Payment / In-store Payment 跟 Global Merchant Portal,好,看完敘述也不是很了解,不過「線上付款」選左邊的看看。

czX97PHX8kx VDxgDc57iKexCHZdrvf rS73jjf18 n3BqTISSt 9O0iekNmpjGh2GtBrk3X8bbAEzzrV3Q6ISqLpBtRE9TzZSIBJdOFx9CpC1WWEOVskh7n5J3yRtKChASZev6xsR6Odg0wDI1IHhIJa6vggxpVaz5Wn3 G9sP6biV BaJUiC7o1Z4aHyI4aT bJZa50IrIU3ZhyaeolwM45hx3nZ0SghdnKWBscOlNGWwPjk6zRekWVC13fpfFtqw8fErnjk8zWm5d3TCWmjtjFznreDtgMgsmP2YhF3tkkzTU8mXQqPNONys4mK9agnxCnTp1QEcNRDfRuQ26pnnMeBFK jQFvpUszChKNRJyvJP5cGeCOx I6vj4wv22oJHEMmQAL6hZybwW8BaZjJwg m0a0f Ht6SiL V6beQtFpYJtRO jCMNZibdP5q AXhsr78ihPmL ybs9Q6Lna2YNRcxrc3z8 8ppkeCydSkogsclWLd5iQsdvpSHX34dDC82fru70SXtACAbXu0NbQLvEXrTTmaWTCawQeTyb4vV6KbLRud33RF9OkyrDY6qAEbQ1xSKSZgimobkQs4om3SySIeJO6FYzI1nDOKpd345WLCGfNF2dINbq1EbBVTgnwbsnvS9AGG v0B4eOzBRFUzNRkUaOMQ1tB2y8XBQIi1bfcW rZ u1X E9xUDt5cNGyl6JEV3BoSLg2Oz0PFBAwQ=w1196 h288 no PHP 串接 AlipayHK 踩坑記錄

AlipayHK 簽署的方式有兩種

  • 使用 md5
  • 使用 RSA / DSA

後台介面就有 md5 的私鑰,小蛙直接使用這種方式,比較方便。進到管理頁面,切換到「My Technical Service」後右邊有「See Partner ID(PID)」跟「See Key」,先把 PID 跟 Key 記起來,等一下串接會用到。

oBX3nQoz lsn nO6zOExqEB8BMi3WCXoOtKPQryobihacmr6 KlyCoQirK71Kx5HLNVo8 e8qW vsgIMD3PKZK 36a5uCi8ffxcHLvJSTOwS il73Z8F8TX7QbkPH8CeYEN8X9K5SCPxRjgVp8n5NEu5ZkHjkLK61H4qMJySeVbV3kSUw PoR8xQbfBt EKxm2oiZspjvt2AssXUnd WFe3Ec n9Ic6hH MrJujmZ2TlO5 umUV9eqDOXzlIBMJjwD68soPnJ8dur9ayqRpSpaLWT1CkqJXE6YC4H7BBwtXFQsfDu g dez4t4dafQsKvA46HOtEGCR7niWw5w3cS5TCuI4N1re5LfwarPThNUIy2ZDzHT8U0TYMwsdeGmncMWX03DRJ4h0yK3VOkFQHjnzAIgd07extjcO1he 3ewwgl3xqntsmij8Y j6pjgUIsFmG3GJSYVCONCA hT66sMpiyzhYqUplMutxuPceUA aLT8Ffk2FRDjWTNkw3oDnejODKwomwV431yrTHZYPNbv dykOT6uoB5Hvs vcCsNkSzr6GyjXRzwRHTwRpKVVl0kccFyoTTrYH111JZEStkzR07QTgA9vApBLksGO91NgI8VuBFHU JNmyHNBSfeIL4iJ7j08Xu 12SyBznazZkVIj8TtWr5EqjSRZC0UKOiQj R8Y82wQNw7O8dffBhTs9yJ06qab91ZuhI4zRU5gj1PtA=w701 h376 no PHP 串接 AlipayHK 踩坑記錄

小蛙從來沒有用過支付寶及其相關產品,這個頁面 下有介紹整個流程,小蛙看完才對 AlipayHK 比較有概念,到 這邊 看說明文件吧!今天才發現有中文文檔!!!

下載範例

小蛙是要在 PHP 環境下串接「支付功能」,到這邊下載 PHP 範例。解壓縮之後裡面有一些比較重要的檔案:

alipay.config.php

這個檔案主要是環境變數上的設定,等等要修改 partner、key、notify_url 這些變數。

alipayapi.php

這支是搭配 index.php 送出的表單接到參數來產生 QRCode,因為小蛙付款時不需要讓使用者輸入 index.php 的內容,因此將這些的功能拉一些出來寫成 function,如此一來就可以在要付款的地方直接設定好固定及要接的參數。

notify_url.php

最後一支是用來接收付款成功之後的 callback,在這邊設定付款完成之後要做對應的動作。

小蛙改完上面這些東西之後,其實整個範例還是沒辦法動的,這後面會再提,一開始要測試範例當然沒辦法用正式的 key 及 partner id,接下來要先建立沙箱帳號,透過沙箱環境來測試付款。

使用沙箱測試

iOS 或 Android 到 這邊 下載沙箱 app。

Alipay Sandbox Portal 去新建沙箱測試帳號,小蛙這次要串的是 AlipayHK,要到 Hong Kong Wallet 下面建一個 Merchant 跟一個 Buyer 來測試。

H7u4zCZIT1QjH3ThzsWNF4GMry85QInN gF T7JWtEi Em57mHgh2wMnezZ 2XaSrd BgzbKwX8CPp5vA6DlimhpvIw1EjY5UiG75g4rChPz1hhuk ZN8GAXmEg967WKB 3pbfzmqBRVccFo8n2wDDzkpQMZgbqjhJE70WSfsWStuGWwCkNJTYEaQ0y4DsONEe8gozGtl35M953me8jk1Xodx5UdmKeVhKaB4rmmuNJzbuqdEIDSHbxXqHBU15s F10cPU ixk9qPM64mxcmlt6Sx9J gTniU4ATthOPceotrey D PmSfJ8o3ytDJD2FmBPV Rxdk1qWkZFK58r6FjFTEN4KhaAr5sFYds7nHcxjTmk NhT55GLZTtJ4BTfSgHEWslgAmzPnkCy1FxfEoC0GZPD4VxBTdtpt46zuB9r0xHZYzH7eQhQ3cTMEi kCeY93txY6r23fXcojkwynNDYVmqO9RmlJw2ajqyoLT88OTKvhQxTp4bpE9Q2i k VjETiwTeBebAwMtJQOse6u5A5tA9wAwZXnRKzGo256tT8iXnllvuxRF9NXFkf4nysR dDJWFTmY ZDLBz9M68prNBcQl0wYyHyAQO0asCMqscIvxCkSvgk8e6upO4jkx5lOfYY8EDRMHwn71vJYxRIY kE91Lov82ZdLHtDgFKCV2wZK1c2hUe5ayEWJupvhwFnTqPTNBUqlG8xQXkP3BCZVky18BAtp7ZTF1ja1 WbaLMx0=w214 h332 no PHP 串接 AlipayHK 踩坑記錄

建好之後記下 Merchant 右邊的 Merchant UID\/PID 及 MD5 Signature key,記下 Buyer 的 Buyer account 及 Login password。

vBkCxawrgALVGEA 73AzM9Cncde5jyUbZmh5n28zTtsQ00xRR9rt28QapLTjFiLMz37PGvWwD338vo2DnaiE5X9lz49Sc0EKR zuX9QTcxcr2NGmzyL2bIHH63de0TxjOIGZXpyya2qNmVutFGoqE9urue4xuiTmx PVKBqRfg3k3uY 5bOw8h0EHevRkw u QWKI7NjtobOpaHs2A6vf7u z4bHnXtGovChr31nY1ZuTtYTfGY IlHKYi3x4pOE Ida R5552DYT8thzf7H eGcp6JSj5M19XK9rS61jQgBEei8scbUfSOHFBc0NOsBHcCgSw0YAD Az0S YiLxkLpm3RPcfwxwNtoSvEnzh 3tvxGCXoA3 lfaSKmrdjSWqBovKKYYQ VgitqM9ECniWr nBNGyXaUMjWb3GNLSXyU9sYomBINILUxc9v6gz7fj4 6 6qWp0B5Y0XlWOVyN eN6lFfj3hgNjopK9btvwrdKIo eywF5yGw5V3iQ5YssVUjSjeCraqUcw0WYCBXTv6BTFN6yGc92Bm65T5 9XHOdD9KAN1rLtUat7mhYTu0tZUNGRtDHJC2 cqBCB6Ia304UKmZGtYMoqQgxBdhA9qUdDrtaUnYwUUshObs7puFSdZwwi6OUFV6nzxIvPqCFqHoQHDzB d6NAHCGOBB8LbfkqT2w0jFwop5l58xODY0 s1ASnwYfeKeAGtOctI5pD6B7I8k0d C 1XBrnf3s5X7KW3=w499 h443 no PHP 串接 AlipayHK 踩坑記錄
IY w 9e7UvaY6qZDbC INKgC1LHQLB N5 wse8ePHZ34uVaqvRp2BWUD3w4aYhsCOwokE k57PurT4ermxlOq g0Up70Kcp7vx8DP3ERiMSM5gjP16lpR r7Nuv9WfCfLp bncb8 IQre5rl G5xpxwA5bNfGLlqfd oY5Wl08OhL2ApxbmleEjm0BnUYXLw0fpUTQRgI7qgWFuxSreTDrog1jebMgZNqCx4pYOyIrGqIyM bDK1H2xeW9dzmLf8nMU I8VxTnlRmC4N6xAsY4r9XkPo N9zQlaFM bkPlbDKA6Ar5M8jrRSuNt5BiNXIrsLB3qRopLC8upA1KeTCuHV YiWblgWpOk1diEJM6eIbpEPfS9 u466hJ7yLAzZCkNAc90yAwMno6b2DEGDgWKDCh0ACew4Z4UyNPCUBmGtIqiRtsrqcAMy9NGoVnU1PNCEox6ZStnfSKkhus8r0DSSxnCT8aWObeBgdyDjX8jjZ1BpZaD1Kpc0v30SeqnSgMbO0xyLX EAg6DzwvNBxo59N7GQLKG20mnhtBClw1Hpnj W jDi f8YUf4FxejuQSvcskprcGI2M6wwzz7J0qsS 2p62lWI lWZZEt9a3vmPonwIQQ DoJGWQd9XGJu6nuBuKPqjtPHJXwVQzGg9s6aVHJFVpKyxVutJcd2KW0TdiJiWUL483eJ629HMZAGjioor8cEXLLtRaEokHbejLu CtjB0 bDYymDXRxWWI3APk =w433 h325 no PHP 串接 AlipayHK 踩坑記錄

沙箱測試

把上面記下來的 Merchant UID\/PID 及 MD5 Signature key 分別填入 alipay.config.php,以及修改 notify_url 位址,一定要確定這個頁面可以存取,付款完成之後 AlipayHK 會送一個 POST 過來這裡,如果無法存取會收不到付款完成通知。

$alipay_config['partner']    = 'PID 填到這裡';
$alipay_config['key']        = 'MD5 Signature key 填到這裡';
$alipay_config['notify_url'] = 'https://xxxx.xxx/notify_url.php';

修改完成之後連到付款首頁,https://your_domain/alipayHK/index.php,可以看到一個表單,這表單是讓人測試用的,可以測試不同參數產生的 QRCode,送出之後會送到 alipayapi.php。

等等,跳出一堆錯誤訊息

小蛙記得有兩三個問題,這範例程式有點不是很嚴謹 …

  • alipayapi.php 這支的第 73 行就出現一個奇怪符號,刪掉就好了。
  • notify_url.php 這支的第 23 行,註解符號沒有放好。

還有一個最後再說吧~最後一個也是小蛙花了最多時間去找出來的,修正完上面兩個錯誤後,應該這個範例程式就能運行了。

測試流程

連到 https://your_domain/alipayHK/index.php 會看到以下畫面

gJs9q5gOdKzjqNglw41sdBTLZ9s7vUVqCR0WgHNv xJjFOtXhosfkxJVTKG3 et8OPGCuvWfq3eco pV2ImqU31FV7b9JVwWcYlnjUaFMdmQCGM78OiHWbdZl7KLJTSu9FGuhQBxtIwOfkHYXSgbKBx dSg4q9vH9HnaKzJHZ1A7p5tHfAB1MqxLXEKRJgtrH3iA1yjolctFswrDJqsGO4 SADwxXwMMMl8LYzhZU HKxMuzXwtJPq 1ReknYUWT2tr5kNiF7qpRjcAk3glWDh2P5TBZJRjH5SUzUc0EUic1j orhH8t8lWhdARCq4WsWUQ7B0Uycv tRefEtDWVQw7lGtDvImuSur3hl3ETF2OrZ XFdhYFJ VV4txPPG4vtylJhzlz pRF5uozgBY3ec5 SvnryGlIlAgAHQfLLGiV sPM1iBDlcdtSM9BVcWGp k9Dy3mF4 uVhM bNCUCq5RJCU7GHut89Pj3waQ4FEHpdfd1b4r3SlhPw fJZTqqgUZHgQHEFvA2pmzXpTIqjARzPC0BunK6V7cGtpCy1K3AMNEr51UsiCEQ4n3TArvnwbWU KCsSqpFQM4UnYbxSwBWZuE2OtCmsZVdbieI8n2QCCPQMCrDm9BOEe0FNZim6O9f248QkP751WuLGImTgxjN7ARgcP4ZlCsewkODci WV Z9 xsOVcRoUjVxXp2iiTjeht8fXz3 s4RRUdEwrh6EX5zz3 H16rVcdUye1NDSQ9N=w825 h999 no PHP 串接 AlipayHK 踩坑記錄

直接按 Play 後會產生 QRCode

DCmiHnQIp2jzdwWtcmZI cnrjPodRBxaRbEn2LAq bYH6UQVepA7vIGl77oxQ734rbGXSFswRZMzwdV2Z8CQvKucHpxSHJ4GE NbnHvhV2nXxbTTHH9VuJYDOZyyqcPGkdeTS0ot1GZRK3D4cS 800xWUONbBjbh1IXw7AsLN0COoyvlBY WUJuz9Xa2nD4Wk9WPenbgTch9ZdHnON3hmAZh5yeRiCQ MSGldEKf42gUx3dGu8533b8kzNZ2njyz8WduUjDs5jZsv5Vw3zgMSi6X6ll IA2wx8S9JjGYeFAWz6iZ3V6WlIC0zDiXYJmobeeVMjyJuZs kT15YkKldEDcQklIOruVwpUYH58Hk8gKqOsEKud0QvXSjn Nhr6D5H e XF16Wzhl hLWepu6FDVZeVnNqlZksH7EC dWnM9Udy734JSDuge3PEw07J4V5GK7SxAVR7TuBu1wgpJtEzL4fVXYt8tFblRLyo5w IZ HwOtqBGHJ5cvirm7cqPyNK1AGa4fR27vDPTZQTSUgTI2O9MSQQzpsfSGO3Dh7DDqv4MLYGYaX jOFF5zF8BoyzwDwHMUqdMBMSejslfEIlIqlj1EV6FzwmdaAPWEdDQmwesJiLnBVQ3yE6IgOxFvffprxdfaQO3lDIHL7Q9E8 D32qByw WBxOukKUrB1s2hNXJNSDpDsXa0pRdQZPSyNYMC8VyJ GCTFVb5MMu1BoNmKjOo2vRXqI DOKOhvgtyiiH=s201 no PHP 串接 AlipayHK 踩坑記錄

沙箱 app 掃描上面的 QRCode,在用上面的 Buyer account 跟 Login password 登入進行沙箱付款,付款完成之後 AlipayHK 會 POST 資料到上面的 notify_url.php,接著做後續處理。

付款完成後處理

最後一個動作就是讓 Sever 知道付款完成了,AlipayHK 發送一個 POST 到 notify_url.php,小蛙卡在不管怎樣回來的結果都是「驗證錯誤」,小蛙試了很久,也看了很多官方文件、其他網友分享的過程,都沒有找到解法。

然後小蛙就一步一步 trace code,發現通通都過了,驗證方法都一樣卻出來不一樣的東西,最後發現是這行在搞鬼 … 真不知道怎麼說,AlipayHK 都好心放出範例檔了,卻如此不嚴謹 … (也可能是小蛙自己太笨,說不定只有小蛙一個人卡在這)

到 alipay.config.php 裡面找到

$alipay_config['cacert']    = getcwd().'\\cacert.pem'; 

改成

$alipay_config['cacert']    = getcwd().'/cacert.pem';

打完收工~

串金流系列:

    2 個回應

    1. Anthony表示:

      Thank you so much. Very helpful !!!!!!

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料