小程序支付功能開通、支付流程等
2017年6月14日,小程序支付功能開通已經(jīng)是當(dāng)下最熱門的話題,下面將從多方面來談?wù)勑〕绦蛑Ц豆δ荛_通、支付流程等相關(guān)的內(nèi)容。
6月14日消息,據(jù)彭博社報道,為了與新東家沃爾瑪(Walmart)融合得更加順暢,Jet.com(去年8月被沃爾瑪以33億美元收購)正計劃逐步剔除自己平臺上所售的Costco旗下品牌產(chǎn)品。
6月18日,永輝將在福州開出第一家永輝生活店。值得注意的是,這也是永輝首家24小時營業(yè)門店。據(jù)了解,這家24小時門店商品由永輝物流統(tǒng)一配送,沒有熟食但提供蔬菜水果以及冷凍冰鮮類商品。
支付步驟邏輯:
1. 小程序發(fā)起請求預(yù)支付
2. 服務(wù)端調(diào)用接口發(fā)起預(yù)支付信息
3. 微信小程序調(diào)起支付完成支付
1. 小程序發(fā)起請求預(yù)支付
2. 服務(wù)端調(diào)用接口發(fā)起預(yù)支付信息
服務(wù)端接收到請求后,調(diào)用微信的api接口,調(diào)用成功會得到一個prepay_id 這個就是相當(dāng)于小程序的預(yù)支付id 過程中會生成簽名,按照官方文檔的實例參數(shù)生成即可,如果非必填可選擇不填,然后向 api 發(fā)送一個xml
參數(shù)講解官方文檔地址:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1eg:
<xml>
<appid>wx2421b1c4370ec43b</appid>
<attach>支付測試</attach>
<body>JSAPI支付測試</body>
<mch_id>10000100</mch_id>
<detail><![CDATA[{ "goods_detail":[ { "goods_id":"iphone6s_16G", "wxpay_goods_id":"1001", "goods_name":"iPhone6s 16G", "quantity":1, "price":528800, "goods_category":"123456", "body":"蘋果手機" }, { "goods_id":"iphone6s_32G", "wxpay_goods_id":"1002", "goods_name":"iPhone6s 32G", "quantity":1, "price":608800, "goods_category":"123789", "body":"蘋果手機" } ] }]]></detail>
<nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
<notify_url>[url]http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>[/url]
<openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
<out_trade_no>1415659990</out_trade_no>
<spbill_create_ip>14.23.150.211</spbill_create_ip>
<total_fee>1</total_fee>
<trade_type>JSAPI</trade_type>
<sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>
需要注意sign 生成方式和公眾號生成方式一致,下面是PHP生成簽名方法, 可根據(jù)不同的框架修改,記得修改 key
/**
* 生成簽名
* @return 簽名,本函數(shù)不覆蓋sign成員變量,如要設(shè)置簽名需要調(diào)用SetSign方法賦值
*/
public function MakeSign()
{
//簽名步驟一:按字典序排序參數(shù)
ksort($this->_prepay);
$string = $this->ToUrlParams();
//簽名步驟二:在string后加入KEY
$string = $string . "&key=".WxPayConfig::KEY;
//簽名步驟三:MD5加密
$string = md5($string);
//簽名步驟四:所有字符轉(zhuǎn)為大寫
$result = strtoupper($string);
return $result;
}
/**
* 格式化參數(shù)格式化成url參數(shù)
*/
public function ToUrlParams()
{
$buff = "";
foreach ($this->values as $k => $v)
{
if($k != "sign" && $v != "" && !is_array($v)){
$buff .= $k . "=" . $v . "&";
}
}
$buff = trim($buff, "&");
return $buff;
}
調(diào)用統(tǒng)一下單api
/**
* 統(tǒng)一下單調(diào)取返回值
* @return mixed
* $output['return_code'] 狀態(tài)碼 SUCCESS/FAIL
* $output['return_msg'] 返回信息,如非空,為錯誤原因 簽名失敗 參數(shù)格式校驗錯誤
* $output['time'] 當(dāng)前時間戳
* $output['nonceStr'] 隨機字符串
* $output['prepay_id'] 預(yù)支付id
* $output['sign'] 簽名
* */
public function pay_place_order()
{
$xml = '<xml>
<appid>'.$this->_prepay['appid'].'</appid>
<body>'.$this->_prepay['body'].'</body>
<mch_id>'.$this->_prepay['mch_id'].'</mch_id>
<nonce_str>'.$this->_prepay['nonce_str'].'</nonce_str>
<notify_url>'.$this->_prepay['notify_url'].'</notify_url>
<openid>'.$this->_prepay['openid'].'</openid>
<out_trade_no>'.$this->_prepay['out_trade_no'].'</out_trade_no>
<spbill_create_ip>'.$this->_prepay['spbill_create_ip'].'</spbill_create_ip>
<total_fee>'.$this->_prepay['total_fee'].'</total_fee>
<trade_type>'.$this->_prepay['trade_type'].'</trade_type>
<sign>'.$this->MakeSign().'</sign>
</xml>';
//調(diào)用api,自定義對參數(shù)進行處理,改請求方式是自定義方式
$xml_result = post_request_https('https://api.mch.weixin.qq.com/pay/unifiedorder', $xml);
對返回的參數(shù)從新生成sign,得到一個新的sign,返回小程序
注意: 生成返回小程序簽的名參與生成的簽名的字段有下圖,記得拼接key ,使用的是調(diào)取api 返回的值
參數(shù)詳解:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=3
3. 微信小程序調(diào)起支付完成支付
參數(shù)詳解:
https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.html?t=20161122
注意: 支付成功后微信回調(diào)通知簽名驗證,需要的參數(shù)是所有返回的參數(shù)字段除去sign字段,生成簽名 = 返回字段中的sign(簽名)
參數(shù)詳解:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7
-
微信小程序商城系統(tǒng)開發(fā)其實很簡單
微信小程序商城系統(tǒng)開發(fā)其實很簡單,只需要五步就可以完成,整個過程包括開發(fā)、上線、發(fā)布都可以輕松搞定...詳情
-
微信小程序商城系統(tǒng)免費注冊體驗
微信小程序商城系統(tǒng)免費注冊體驗,接下來是微信小程序的時代,這一波紅利在不抓住互聯(lián)網(wǎng)就再也沒什么機會了...詳情
想了解更多微信小程序開發(fā)和微信小程序大全都可以進入微信小程序商城系統(tǒng)開發(fā)了解。
第二部分:如何開通一個小商店