本文共 1684 字,大约阅读时间需要 5 分钟。
PHP对接APP微信支付
微信开放平台手机APP支付总结
1. 微信开放平台手机APP支付总结
支付功能链接:
APP支付功能文档:
Demo下载地址:
首先了解微信手机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' ]. '×tamp=' . $order_data [ 'timestamp' ]; $order_data [ 'sign' ] = strtoupper (md5( $str . '&key=' .WxPayConfig::KEY)); echo json_encode( $order_data ); |
4. 支付完成回调处理
可参考demo回调处理方法notify.php进行业务逻辑处理即可.
支付完成! 可根据自己的业务流程修改业务逻辑 .
参考链接:
本文转自噼里啪啦啦 51CTO博客,原文链接:http://blog.51cto.com/pilipala/1917634,如需转载请自行联系原作者