`

支付宝支付与微信支付服务端回调notify_url数据的区别

阅读更多
支付宝和微信的回调地址

notifyUrl = RequestUrl.BASE_URL+"order/order_payment"+"?order_code="+orderCode;
服务器端是PHP开发,因此此处以PHP为例:

支付宝接收回调的方法

/**

* sCreater

* function:订单支付完成后回写数据库(支付宝支付回调)

* @return json

*/

public function actionOrder_payment(){

$getData = $this->_requestData;

parent::write_log('order/order_payment',$getData);

if (empty($getData['order_code'])){

$data = array(

'error_code' => 1,

'error_msg' => '参数错误',

'data' => ''

);

parent::json_encode($data);

}

if (!empty($getData['trade_status']) || $getData['trade_status'] =='TRADE_SUCCESS') {

LinshiOrderMaster::confirmPayment($getData['order_code'],$getData['price'],'2',$getData['trade_no']);

$data = array(

'error_code' => 0,

'error_msg' => '支付成功',

'data' => ''

);

parent::json_encode($data);

}

}

支付宝服务器返回的数据

{

"_id": ObjectId("55ec4550c6fdc2f03d8b48c5"),

"name": "order/order_payment",

"server_url": "http://api.xxx.**/v1.5.4/order/order_payment",

"accept_data": {

"order_code": "15090604451164",

"discount": "0.00",

"payment_type": "1",

"subject": "陈*梅",

"trade_no": "2015090600001000310060229256",

"buyer_email": "*********@qq.com",

"gmt_create": "2015-09-06 18:29:13",

"notify_type": "trade_status_sync",

"quantity": "1",

"out_trade_no": "090618284176257",

"seller_id": "2088021159681245",

"notify_time": "2015-09-06 21:53:20",

"body": "课程支付",

"trade_status": "WAIT_BUYER_PAY",

"is_total_fee_adjust": "Y",

"total_fee": "0.01",

"seller_email": "xxxpay@xxx.biz",

"price": "0.01",

"buyer_id": "2088302454945312",

"notify_id": "4e25737fd44a50070bbaa6f2eac2c39e3q",

"use_coupon": "N",

"sign_type": "RSA",

"sign": "******4GyXJaugFZqoiRQ4DE5VOn/EQjohiCulI5jRuogGiFb7ncZv/FjgZVD00QrnDGxYT8+XUAKThAQ01kCEHJJMLKHMxix9NXdeh8thXcDRBX/MJOnc4C/J8tk+U1D4VwkL1c [...]"

},

"header": [

],

"time": "21:53:20"

}

微信接收回调方法

/**

* sCreater: miki

* function:订单支付完成后回写数据库(微信支付回调)

* @return json

*/

public function actionOrder_wx_payment(){

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

$getData = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

parent::write_log('order/order_wx_payment',$getData);

if (empty($getData['order_code'])){

$data = array(

'error_code' => 1,

'error_msg' => '参数错误',

'data' => ''

);

parent::json_encode($data);

}

if (!empty($getData['result_code']) || $getData['result_code'] =='SUCCESS') {

LinshiOrderMaster::confirmPayment($getData['order_code'],$getData['total_fee']/100,'1',$getData['transaction_id']);

$data = array(

'error_code' => 0,

'error_msg' => '支付成功',

'data' => ''

);

parent::json_encode($data);

}

}

微信接口返回的数据

{

"_id": ObjectId("55ed2bcdc6fdc2c83d8b4e79"),

"name": "order/order_payment",

"server_url": "http://api.xxx.***/v1.5.4/order/order_payment",

"accept_data": {

"appid": "wx8be381be5d594578",

"bank_type": "COMM_DEBIT",

"cash_fee": "1",

"fee_type": "CNY",

"is_subscribe": "N",

"mch_id": "1240212802",

"nonce_str": "9a3d458322d70046f63dfd8b0153ece4",

"openid": "*********YfgoQPliYWg",

"order_code": "15090604453558",

"out_trade_no": "5d79099fcdf499f12b79770834c0164a",

"result_code": "SUCCESS",

"return_code": "SUCCESS",

"sign": "D2AD1EE0F4890FA23B424AC2A94E0CE4",

"time_end": "20150907141237",

"total_fee": "1",

"trade_type": "APP",

"transaction_id": "1006410556201509070811059912"

},

"header": [

],

"time": "14:16:45"

}

注:

1、回调地址之所以加了order_code="+orderCode,主要是便于更新订单的状态,并且支付宝和微信都会自动将我们带的参数插入到原生数据一起返回给我们的服务端;

2、支付宝回调的方法只是普通的post接收即可;

3、微信回调的方法用的关键代码在 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

(1)支付成功通知的内容可以使用 $_GET 获取订单信息

(2)接收微信后台发送过来的消息,该消息数据结构为XML,不是php默认的数据类型

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

(3)使用simplexml_load_string() 函数将接收到的XML消息数据载入对象$postStr中。 $getData = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
分享到:
评论

相关推荐

    微信支付java服务端实现-weixinpay.zip

    4. **支付回调处理**:微信支付有两种回调方式——同步回调(result_code)和异步回调(notify_url)。同步回调发生在用户支付成功后立即返回的结果,而异步回调则可能在稍后发送。服务端需要处理这两种回调,验证...

    C++ 支付宝付款对接,支持回调url,实测可用!

    在本文中,我们将深入探讨如何使用C++与支付宝接口进行集成,实现支付功能,并支持回调URL。这个项目名为"AlipayOpenapiCpp-master",它是一个C++版本的支付宝开放API客户端,经过实测,已经可以成功对接支付宝的...

    微信支付-Java服务端代码

    当用户完成支付后,微信服务器会发送异步通知(Notify)到商户指定的回调URL。商户服务端需要监听这个接口,接收到通知后,验证通知的签名有效性、订单状态等信息,防止恶意篡改。验证无误后,根据通知内容更新订单...

    微信支付v2/v3服务端native代码

    4. **微信支付回调通知**:支付完成后,微信服务器会向商户服务器发送支付结果通知(Notify),商户需要验证通知的真实性,并根据结果更新订单状态。 在V2版本中,微信支付服务端接口主要使用HTTP/HTTPS协议,XML...

    最新微信支付DEMO 统一下单服务端客户端完整代码示例

    7. **异步回调通知**:微信支付在交易成功或失败后,会通过异步通知(notify_url)回调到商户服务器,服务端需要处理这些通知,进行订单状态更新、库存管理等业务逻辑。 8. **订单查询与退款**:除了统一下单,DEMO...

    第三方支付相关关系梳理索引

    - 微信支付完成支付后会主动回调服务端提供的`notify_url`。 - 服务端接收到回调后,解析XML数据,检查`result_code`是否为`SUCCESS`,进而验证其他必要信息。 - 如果支付成功且验证无误,服务端继续处理业务逻辑...

    微信app支付java服务端源码

    使用的时候注意修改资源文件中的 resources/sys.properties #weixin apy appid=你们的appid mch_id=你们的mch_id notify_url=你们的回调地址

    微信小程序后端开发demo包括获取openid微信支付

    3. **支付回调**:支付完成后,微信服务器会通过异步通知(notify_url)将支付结果推送给后端。后端需要验证回调信息的真伪,并更新订单状态,如确认支付成功、处理退款请求等。 4. **企业付款**:对于某些业务场景...

    基于BaaS开发微信支付小程序.pdf

    开发者必须在LeanCloud平台上设置AppId和支付商户号,同时也需要配置微信支付密钥和通知回调地址(notify_url)。这样配置后,小程序端可以利用LeanCloud提供的SDK实现一键登录等功能。 在小程序支付的业务流程中,...

    java实现微信扫码支付功能

    用户扫描二维码支付后,微信会回调你指定的异步通知地址。你需要在服务端处理这个通知,验证签名,确认支付状态,并更新订单状态。 ```java @PostMapping("/notify") public void handleNotify(@RequestBody ...

Global site tag (gtag.js) - Google Analytics