微信支付的开发文档:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3
以下是交互时序图,统一下单API、支付结果通知API和查询订单API等都涉及签名过程,调用都必须在商户服务器端完成。如图8.6所示。
商户系统和微信支付系统主要交互说明:
步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。
步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。
步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay
步骤4:商户APP调起微信支付。
步骤5:商户后台接收支付通知。
步骤6:商户后台查询支付结果。
微信回调返回的xml数据格式如下:
<xml>
<appid><![CDATA[wxa7187bd65a683c0c]]></appid>
<attach><![CDATA[{"data1":"**","data2":"**"}]]></attach>
<bank_type><![CDATA[CFT]]></bank_type>
<cash_fee><![CDATA[1]]></cash_fee>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[N]]></is_subscribe>
<mch_id><![CDATA[1280893301]]></mch_id>
<nonce_str><![CDATA[APP]]></nonce_str>
<openid><![CDATA[oIt0TwupG9JlwX0V245-EYQUP_NU]]></openid>
<out_trade_no><![CDATA[201510301109214740]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[B88DB9BD171F49CE5DC78A409B9FF2BF]]></sign>
<time_end><![CDATA[20151030111000]]></time_end>
<total_fee>1</total_fee>
<trade_type><![CDATA[APP]]></trade_type>
<transaction_id><![CDATA[1000030326201874301386474701]]></transaction_id>
</xml>