微信開放平臺手機APP支付

技術小胖子發表於2017-11-07

            PHP對接APP微信支付


微信開放平臺手機APP支付總結

1. 微信開放平臺手機APP支付總結

支付功能連結https://pay.weixin.qq.com/wiki/doc/api/index.html

APP支付功能文件https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

Demo下載地址https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

    首先了解微信手機APP開放平臺文件支付流程, 雖然個人感覺微信給出的文件沒有支付寶官方給出的文件詳細, 但是認真研究還是可以克服困難的, 有的問題在網上也是可以找到解決方案的. 微信開放平臺和微信公眾平臺的所使用的demo使用的都是同一個JsApi的demo,業務流程是一樣的, 只要服務端做好處理將業務引數傳給客戶端即可. 還有一個要注意的問題, 是在退款時需要用到商戶的證照. 


2.  傳遞商戶交易號和價格去微信進行生成預支付訂單

利用微信統一下單方法生成預申請id

1
2
3
4
5
6
7
8
9
10
11
$input new WxPayUnifiedOrder();
$input->SetBody($body);  
$input->SetAttach(``test”);    
$input->SetOut_trade_no($order_sn);  
$input->SetTotal_fee($price); 
$input->SetTime_start(date("YmdHis"));  
$input->SetTime_expire(date("YmdHis", time() + 60*10));    //訂單失效時間,報錯可不寫
$input->SetGoods_tag("tag");       //設定商品標記,說明詳見代金券或立減優惠
$input->SetNotify_url($notify_url);   //設定接收微信支付非同步通知回撥地址
$input->SetTrade_type("APP");      //設定型別如下:JSAPI,NATIVE,APP
$order_data = WxPayApi::unifiedOrder($input);  //統一下單


註釋:$order_data 為微信返回的訂單生成結果。如下所示

appid    mch_id    nonce_str    prepay_id   result_code   return_code    return_msg

sign (簽名,此時返回的簽名不能給APP端呼叫,需要重新生成簽名) 

trade_type      prepay_id (資料最重要。)


3.  將微信返回的prepay_id資料再次簽名,再返回給APP端。 

獲取到 prepay_id 後,將引數 appid、noncestr、package(注意:Sign=WXPay)、partnerid、prepayid、timestamp 簽名後返回給 APP。

1
2
3
4
$order_data[`timestamp`] = time();
$str `appid=`.$order_data[`appid`].`&noncestr=`.$order_data[`nonce_str`].`&package=Sign=WXPay&partnerid=`.WxPayConfig::MCHID.`&prepayid=`.$order_data[`prepay_id`].`&timestamp=`.$order_data[`timestamp`];
$order_data[`sign`] = strtoupper(md5($str.`&key=`.WxPayConfig::KEY));
echo json_encode($order_data);

4.  支付完成回撥處理

可參考demo回撥處理方法notify.php進行業務邏輯處理即可.



支付完成!  可根據自己的業務流程修改業務邏輯 .



參考連結: http://blog.csdn.net/shihunzhe/article/details/53535838



      本文轉自噼裡啪啦啦 51CTO部落格,原文連結:http://blog.51cto.com/pilipala/1917634,如需轉載請自行聯絡原作者







相關文章