作為獨(dú)立開發(fā)者產(chǎn)品需要收款是非常麻煩的,注冊(cè)公司維護(hù)成本太高,市面上各種收款工具要么手續(xù)費(fèi)太高,要么到賬很慢,體驗(yàn)很不好。
看到 「BufPay.com 個(gè)人收款」 這個(gè)收款工具,挺有意思的。原理是監(jiān)控手機(jī)微信、支付寶的二維碼掃碼支付到賬通知并回調(diào)開發(fā)者應(yīng)用,通知開發(fā)者應(yīng)用訂單支付結(jié)果。
「BufPay.com 個(gè)人收款」的優(yōu)點(diǎn)是個(gè)人支付寶、微信就可以收款,不用簽約,不用公司資質(zhì),并且費(fèi)率非常低,接入速度非常快。一般人一個(gè)下午就可以搞定。

這樣用自己的微信和支付寶收款二維碼就可以用來給自己的產(chǎn)品收款了,收到款后「BufPay.com 個(gè)人收款」?會(huì)有回調(diào)。
收款即時(shí)到賬, 非常安全靠譜,費(fèi)率也挺低的, 最低千分之一。下面我們就來看怎么把「BufPay.com 個(gè)人收款」接入到我們的產(chǎn)品中。
根據(jù) 「BufPay.com 個(gè)人收款」的 接口文檔 接口非常簡(jiǎn)單,只有兩個(gè)接口,第一個(gè)是發(fā)起支付請(qǐng)求,一個(gè)是支付結(jié)果查詢請(qǐng)求,如果發(fā)起請(qǐng)求的時(shí)候是使用 BufPay 的默認(rèn)支付頁面的話,第二個(gè)支付查詢接口都可以不用要。
注意: 在接入之前,先需要用一個(gè)閑置的 Android 手機(jī)安裝 Bufpay 的監(jiān)控 App 哦,安裝步驟
接口地址:https://bufpay.com/api/pay/aid 這個(gè)地址在用戶后臺(tái)的配置頁面
調(diào)用方法:POST
調(diào)用參數(shù):
- name, 必填, 訂單銷售商品名稱
- pay_type, 必填, 支付方式(可選alipay/wechat)
- price, 必填, 訂單價(jià)格
- order_id, 必填, 訂單號(hào)
- order_uid, 選填, 訂單購買用戶(建議設(shè)置為購買用戶編號(hào),便于后續(xù)對(duì)賬)
- notify_url, 必填, 支付城后回調(diào)地址
- return_url, 選填, 支付城后前臺(tái)跳轉(zhuǎn)地址
- sign, 必填, 將參數(shù)按 name + pay_type + price + order_id + order_uid + notify_url + return_url + app secret 順序拼接后 MD5
注意:接口默認(rèn)直接跳轉(zhuǎn)支付頁面,如果 api 后面加 ?format=json 那么返回結(jié)果就是 json 格式的,需要開發(fā)者自己展示付款二維碼
json 格式接口返回:
{
? ? "status": "ok",
? ? "aoid": "cad5076f55834f5fadddcfc018cc4068",
? ? "pay_type": "wechat",
? ? "price": "35.00",
? ? "qr_price": "",
? ? "qr": "wxp://f2f0-vFHHDCw3L4kPne1JzXyQ0nO0QKpQK2e"
? ? "qr_img": "data:image/jpeg;base64,/9j/4AAQSk......Bxiv/2Q==",
? ? "expires_in": 270,
? ? "return_url": "http://v2ex.com/bufpay_return",
}
- status, 付款請(qǐng)求結(jié)果(只有為 ok 的時(shí)候才有其他的值)
- aoid, bufpay平臺(tái)訂單唯一標(biāo)示可用于查詢訂單狀態(tài)
- pay_type, 支付類型 alipay/wechat
- price, 訂單價(jià)格
- qr_price, 支付二維碼的金額,如果為空表示使用的是不固定金額二維碼,具體金額需要用戶輸入
- qr, 支付二維碼內(nèi)容
- qr_img, 支付二維碼圖片 base64 格式
- expire_in, 支付二維碼剩余有效秒數(shù)
- return_url, 支付成功跳轉(zhuǎn)地址
錯(cuò)誤代碼:
- {"status": "sign_error"}, 簽名錯(cuò)誤
- {"status": "order_payed"}, 訂單已支付
- {"status": "order_expire"}, 訂單已過期
- {"status": "qr_limit"}, 支付二維碼不足
這個(gè)是 Python 的簽名函數(shù)
import hashlib
def sign(*p):
? ? return hashlib.md5(u''.join(p).encode('utf8')).hexdigest().lower()
sign(
? ? u'內(nèi)容訂閱一年期',
? ? 'wechat',
? ? '50.00',
? ? '102',
? ? 'hi@sideidea.com',
? ? 'http://sideidea.com/bufpay_notify',
? ? 'http://sideidea.com',
? ? 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'? #app secret
)
下面用 Python 寫個(gè)完整的Demo
#!/usr/bin/env python
#coding: utf8
import requests
import json
import hashlib
def sign(*p):
? ? return hashlib.md5(u''.join(p).encode('utf8')).hexdigest().lower()
def pay():
? ? resp = requests.post(
? ? ? ? 'https://bufpay.com/api/pay/2?format=json',
? ? ? ? data={
? ? ? ? ? ? 'name': u'內(nèi)容訂閱一年期',
? ? ? ? ? ? 'pay_type': 'wechat',
? ? ? ? ? ? 'price': '50.00',
? ? ? ? ? ? 'order_id': '102',
? ? ? ? ? ? 'order_uid': 'hi@sideidea.com',
? ? ? ? ? ? 'notify_url': 'http://sideidea.com/bufpay_notify',
? ? ? ? ? ? 'return_url': 'http://sideidea.com',
? ? ? ? ? ? 'sign': sign(
? ? ? ? ? ? ? ? u'內(nèi)容訂閱一年期',
? ? ? ? ? ? ? ? 'wechat',
? ? ? ? ? ? ? ? '50.00',
? ? ? ? ? ? ? ? '102',
? ? ? ? ? ? ? ? 'hi@sideidea.com',
? ? ? ? ? ? ? ? 'http://sideidea.com/bufpay_notify',
? ? ? ? ? ? ? ? 'http://sideidea.com',
? ? ? ? ? ? ? ? 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' #app secret 在個(gè)人后臺(tái)的配置頁面
? ? ? ? ? ? )
? ? ? ? }
? ? )
? ? return json.loads(resp.text)
def query(aoid):
? ? resp = requests.get('https://bufpay.com/api/query/' + aoid)
? ? return json.loads(resp.text)
if __name__ == '__main__':
? ? resp = pay()
? ? print resp
? ? print query(resp['aoid'])
怎么樣?是不是很簡(jiǎn)單, 哦對(duì)了, 在正式接入之前,還需要去 BufPay.com 的后臺(tái),配置頁面配置一下自己的收款二維碼

接下來就可以收款啦。。。
現(xiàn)在 Bufpay.com 有四個(gè)套餐,免費(fèi)版的話可以每天三個(gè)回調(diào), 基礎(chǔ)版每月25, 標(biāo)準(zhǔn)版50, 高級(jí)版 90。需要在個(gè)人中心后臺(tái)充值開通。