韩博深-批量退款查询接口(refund_fastpay_query)(1)
基于thinkphp5框架实现微信小程序支付退款订单查询退款查询操作

基于thinkphp5框架实现微信⼩程序⽀付退款订单查询退款查询操作微信⼩程序或微信⽀付相关操作⽀付退款订单查询退款查询⽀付成功,进⾏回调退款成功进⾏回调⽤到的⽅法⽀付/*** 预⽀付请求接⼝(POST)* @param string $openid openid* @param string $body 商品简单描述* @param string $order_sn 订单编号* @param string $total_fee ⾦额* @return json的数据*/public function prepay(){tp_log('预⽀付请求数据===>' . json_encode($_POST), 'prepay', request()->controller());$goods_user = db('tf_goods_user')->where(array('order_no' => $_POST['order_no']))->find();$goods = db('tf_goods')->where(array('id' => $goods_user['goods_id']))->find();//判断产品的数量if (($goods['sales_initial'] - $goods['sales_actual']) <= 0) {$return['status'] = 0;$return['info'] = '此产品已售完';exit(json_encode($return));}$order_no = $_POST['order_no']; //订单号$is_sale = $_POST['is_sale'];$openid = $_POST['openid'];$goods_name = $_POST['goods_name'];$pay_price = $_POST['price'];$attach['is_sale'] = $_POST['is_sale'];$attach['sale_id'] = $_POST['sale_id'];$nonce_str = $this->nonce_str();//随机字符串$order_no_ssh = $this->get_orderssh(); //商户订单号//组装⽀付数据$data = ['appid' => config('pay.APPID'),'mch_id' => config('pay.MCHID'),'nonce_str' => $nonce_str,'body' => $goods_name, //商品名称组合'attach' => json_encode($attach),'out_trade_no' => $order_no_ssh,//$order_no, //订单号商户订单号'total_fee' => intval($pay_price * 100),'spbill_create_ip' => $_SERVER['REMOTE_ADDR'],'notify_url' => config('pay.NOTIFY_URL'),'trade_type' => 'JSAPI','openid' => $openid];//订单⽀付表创建订单⽀付数据$p_o_data['createtime'] = time();$p_o_data['order_no'] = $order_no;$p_o_data['order_no_ssh'] = $order_no_ssh;$p_o_data['ready'] = json_encode($data);$p_o_return = db('tf_pay_order')->insert($p_o_data);if(!$p_o_return){//失败$return['status'] = -1;$return['info'] = $p_o_data;exit(json_encode($return));}// 获取签名$sign = $this->makeSign($data);$data['sign'] = $sign;$xml = $this->toXml($data);$url = 'https:///pay/unifiedorder'; //发起⽀付接⼝链接//发起预⽀付请求$prepay_return_reslut_xml = $this->http_request($url, $xml);$xml_to_arr = $this->fromXml($prepay_return_reslut_xml);$return_result = json_encode($xml_to_arr, true);tp_log('预⽀付请求返回数据array===>' .$return_result , 'prepay', request()->controller());//记录预⽀付返回信息db('tf_goods_order')->where(array('order_no' => $order_no))->update(array('go_pay' => $return_result,'updatetime' => time(),'updateuser' => $openid));if($xml_to_arr['return_code'] == 'SUCCESS' && $xml_to_arr['result_code'] == 'SUCCESS'){//成功$time = time();//临时数组⽤于签名$tmp = ['appId' => config('pay.APPID'),'nonceStr' => $nonce_str,'package' => 'prepay_id='.$xml_to_arr['prepay_id'],'signType' => 'MD5','timeStamp' => "$time",];$data['timeStamp'] = "$time";//时间戳$data['nonceStr'] = $nonce_str;//随机字符串$data['signType'] = 'MD5';//签名算法,暂⽀持 MD5$data['package'] = 'prepay_id='.$xml_to_arr['prepay_id'];//统⼀下单接⼝返回的 prepay_id 参数值,提交格式如:prepay_id=*$data['paySign'] = $this->makeSign($tmp);//签名,具体签名⽅案参见微信公众号⽀付帮助⽂档;$data['out_trade_no'] = $out_trade_no; $return['status'] = 1;$return['info'] = $data;}else{//失败$return['status'] = -1;$return['info'] = $xml_to_arr;}exit(json_encode($return));}//curl请求public function http_request($url, $data = null, $headers = array()){$curl = curl_init();if (count($headers) >= 1) {curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);}curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);if (!empty($data)) {curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);}curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($curl);curl_close($curl);return $output;}退款/*** 申请退款API* @param $transaction_id* @param double $total_fee 账单总⾦额* @param double $refund_fee 退款⾦额* @return bool* @throws BaseException*/public function refund(){$transaction_id = '4200000712202007274705432240';$total_fee = '0.01';$refund_fee = '0.01';// 当前时间$time = time();// ⽣成随机字符串$nonceStr = md5($time . $transaction_id . $total_fee . $refund_fee);// API参数$params = ['appid' => config('pay.APPID'),'mch_id' => config('pay.MCHID'),'nonce_str' => $nonceStr,'transaction_id' => $transaction_id,'out_refund_no' => $time,'total_fee' => $total_fee * 100,'refund_fee' => $refund_fee * 100,'notify_url' => config('pay.NOTIFY_URL_REFUND'),//退款回调地址];// ⽣成签名$params['sign'] = $this->makeSign($params);tp_log('退款请求数据===>' . json_encode($params), 'refund', request()->controller()); // 请求API$url = 'https:///secapi/pay/refund';$result = $this->post($url, $this->toXml($params), true, $this->getCertPem());$prepay = $this->fromXml($result);// 请求失败if (empty($result)) {throw new BaseException(['msg' => '微信退款api请求失败']);}// 格式化返回结果$prepay = $this->fromXml($result);tp_log('退款返回数据===>' . json_encode($prepay), 'refund', request()->controller()); // 请求失败// if ($prepay['return_code'] === 'FAIL') {// throw new BaseException(['msg' => 'return_msg: ' . $prepay['return_msg']]);// }// if ($prepay['result_code'] === 'FAIL') {// throw new BaseException(['msg' => 'err_code_des: ' . $prepay['err_code_des']]); // }return true;}/*** 模拟POST请求* @param $url* @param array $data* @param bool $useCert* @param array $sslCert* @return mixed*/public function post($url, $data = [], $useCert = false, $sslCert = []){$header = ['Content-type: application/json;'];$curl = curl_init();//如果有配置代理这⾥就设置代理// if(WxPayConfig::CURL_PROXY_HOST != "0.0.0.0"// && WxPayConfig::CURL_PROXY_PORT != 0){// curl_setopt($ch,CURLOPT_PROXY, WxPayConfig::CURL_PROXY_HOST);// curl_setopt($ch,CURLOPT_PROXYPORT, WxPayConfig::CURL_PROXY_PORT); // }curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HTTPHEADER, $header);curl_setopt($curl, CURLOPT_HEADER, false);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_POST, TRUE);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);if ($useCert == true) {// 设置证书:cert 与 key 分别属于两个.pem⽂件curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM');curl_setopt($curl, CURLOPT_SSLCERT, $sslCert['certPem']);curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');curl_setopt($curl, CURLOPT_SSLKEY, $sslCert['keyPem']);}$result = curl_exec($curl);curl_close($curl);return $result;}订单查询/*** 订单查询* @param $out_trade_no* @return mixed* @throws BaseException*/public function orderquery(){$transaction_id = '4200000712202007274705432240';//微信订单号// 当前时间$time = time();// ⽣成随机字符串$nonce_str = md5($time . mt_rand(00000,99999));//API参数$params = ['appid' => config('pay.APPID'), //公众号ID'mch_id' => config('pay.MCHID'), //商户号'transaction_id' => $transaction_id, //商户订单号'nonce_str' => $nonce_str, // 随机字符串];//⽣成签名$params['sign'] = $this->makeSign($params);//请求API$url = 'https:///pay/orderquery';$result = $this->post($url, $this->toXml($params));$prepay = $this->fromXml($result);// 请求失败if ($prepay['return_code'] === 'FAIL') {throw new BaseException(['msg' => $prepay['return_msg'], 'code' => 0]);}if ($prepay['result_code'] === 'FAIL') {throw new BaseException(['msg' => $prepay['err_code_des'], 'code' => 0]);}return $prepay;}退款查询/*** 退款查询* @param $out_trade_no* @return mixed* @throws BaseException*/public function refundquery(){$transaction_id = '4200000712202007274705432240';//微信订单号// 当前时间$time = time();// ⽣成随机字符串$nonce_str = md5($time . mt_rand(00000,99999));//API参数$params = ['appid' => config('pay.APPID'), //公众号ID'mch_id' => config('pay.MCHID'), //商户号'transaction_id' => $transaction_id, //商户订单号'nonce_str' => $nonce_str, // 随机字符串];//⽣成签名$params['sign'] = $this->makeSign($params);//请求API$url = 'https:///pay/refundquery';$result = $this->post($url, $this->toXml($params));$prepay = $this->fromXml($result);dump($prepay);die;// 请求失败if ($prepay['return_code'] === 'FAIL') {throw new BaseException(['msg' => $prepay['return_msg'], 'code' => 0]);}if ($prepay['result_code'] === 'FAIL') {throw new BaseException(['msg' => $prepay['err_code_des'], 'code' => 0]);}return $prepay;}⽀付成功,进⾏回调public function index(){$data = file_get_contents('php://input');$data = $this->FromXml($data);tp_log('⽀付回调数据===>' . json_encode($data), 'index', request()->controller());// 保存微信服务器返回的签名sign$data_sign = $data['sign'];// sign不参与签名算法unset($data['sign']);$sign = $this->makeSign($data);//回调验证签名$str_success = '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'; $str_error = '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名失败]]></return_msg></xml>';if (($sign === $data_sign) && ($data['return_code'] == 'SUCCESS') && ($data['result_code'] == 'SUCCESS')) {// ⽀付成功进⾏你的逻辑处理}echo $str_success;//str_error 告知微信你已的逻辑处理完毕不⽤再推送或再次推送你结果}退款成功进⾏回调/** ⼩程序退款结果通知*/public function refund(){$data = file_get_contents('php://input');$data = $this->FromXml($data);tp_log('退款回调数据===>' . json_encode($data), 'refund', request()->controller());//对加密的字符串解密$req_info_xml = openssl_decrypt(base64_decode($data['req_info']), 'aes-256-ecb', md5(config('pay.KEY')),OPENSSL_RAW_DATA); $req_info = $this->FromXml($req_info_xml);// // 保存微信服务器返回的签名sign// $data_sign = $data['sign'];// // sign不参与签名算法// unset($data['sign']);// $sign = $this->makeSign($data);//回调验证签名//// $str_success = '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'; // $str_error = '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名失败]]></return_msg></xml>';//////// if (($sign === $data_sign) && ($data['return_code'] == 'SUCCESS') && ($data['result_code'] == 'SUCCESS')) {// tp_log('退款成功===>', 'refund', request()->controller());// //去修改订单的状态和⽀付回调的⼀样修改成功告知微信不在推送// }}⽤到的⽅法/*** ⽣成签名* @param $values* @return string 本函数不覆盖sign成员变量,如要设置签名需要调⽤SetSign⽅法赋值*/private function makeSign($values){//签名步骤⼀:按字典序排序参数ksort($values);$string = $this->toUrlParams($values);//签名步骤⼆:在string后加⼊KEY$string = $string . '&key=' . config('pay.KEY');//签名步骤三:MD5加密$string = md5($string);//签名步骤四:所有字符转为⼤写$result = strtoupper($string);return $result;}private function ToUrlParams($array){$buff = "";foreach ($array as $k => $v) {if ($k != "sign" && $v != "" && !is_array($v)) {$buff .= $k . "=" . $v . "&";}}$buff = trim($buff, "&");return $buff;}/*** 输出xml字符* @param $values* @return bool|string*/private function toXml($values){if (!is_array($values)|| count($values) <= 0) {return false;}$xml = "<xml>";foreach ($values as $key => $val) {if (is_numeric($val)) {$xml .= "<" . $key . ">" . $val . "</" . $key . ">";} else {$xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";}}$xml .= "</xml>";return $xml;}/*** 将xml转为array* @param $xml* @return mixed*/private function fromXml($xml){// 禁⽌引⽤外部xml实体libxml_disable_entity_loader(true);return json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); }/*** 获取cert证书⽂件* @return array* @throws BaseException*/private function getCertPem(){// if (empty($this->config['cert_pem']) || empty($this->config['key_pem'])) {// throw new BaseException(['msg' => '请先到后台⼩程序设置填写微信⽀付证书⽂件']);// }// cert⽬录$filePath = EXTEND_PATH.'wxpay/cert/';return ['certPem' => $filePath . 'apiclient_cert.pem','keyPem' => $filePath . 'apiclient_key.pem'];}/*** ⽣成商户订单号*/public function get_orderssh(){return date("YmdHis") . mt_rand(10000000, 99999999);}证书路径config配置总结到此这篇关于基于thinkphp5框架实现微信⼩程序⽀付退款订单查询退款查询的⽂章就介绍到这了,更多相关微信⼩程序⽀付退款订单查询退款查询内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
stripe afterpay支付失败返回的参数

stripe afterpay支付失败返回的参数
当Stripe与Afterpay集成的支付请求失败时,Stripe会返回以
下参数:
1. id: 付款对象的唯一标识符。
2. object: 类型为payment_intent。
3. amount: 请求支付的金额,以最小货币单位表示。
4. attempted: 指示是否尝试了付款。
5. status: 支付的当前状态。
可能的值包括:
requires_payment_method(需要付款方式)、
requires_confirmation(需要确认)、requires_action(需要采
取进一步操作,如验证)、processing(处理中)、succeeded (成功)、canceled(已取消)等。
6. error: 描述发生错误的原因。
包括类型和消息字段。
- type: 错误类型,例如"card_error"(卡错误)或"api_error"(API错误)。
- message: 错误消息,提供有关错误的详细信息。
这些参数将通过回调或异步Webhook通知提供给你的服务器。
请注意,每个支付对象的具体参数可能会有所不同,具体取决于Afterpay和Stripe的集成配置。
您可以通过查阅Stripe和Afterpay的文档以了解更多详细信息。
商户后台使用手册说明书

商户后台使用手册—境内业务修订记录目录1境内收单 (4)1.1订单及退款 (4)1.2子订单查询 (6)1.3退款查询 (7)1.4批量通知 (8)1.5批量退款 (9)1.6异常退款处理 (11)1.6.1取消退款 (12)1.6.2发起线下退款 (13)1.7线下退款查询 (15)1.8补贴订单查询 (17)1.9补贴退款查询 (18)2提现 (19)2.1发起提现 (19)2.2提现记录 (20)2.3退票查询 (21)3结算 (22)3.1发起结算 (22)3.2结算查询 (23)3.3结算信息 (24)4代付 (25)4.1发起代付 (25)4.2代付审核 (27)4.3批次查询 (28)4.4代付查询 (30)4.5退款查询 (31)4.6退票查询 (32)4.7批量通知 (33)5充值 (34)5.1普通充值 (34)5.2备用账户充值 (35)1境内收单境内收单,即境内的收单业务。
1.1订单及退款在【境内收单】-【订单及退款】可以查询境内收单交易订单以及订单的退款情况。
(1)查询条件⚫订单状态:境内收单交易的订单状态,分为未付、已付、取消。
⚫订单类型:境内收单交易订单的类型,分为标准版、申报版、海淘版。
⚫商户订单号:发起境内收单交易时使用的订单号。
⚫订单流水号:境内收单交易在首信易系统内的订单号。
⚫银行订单号:境内收单交易在银行系统内的订单号。
⚫支付方式:境内收单交易使用的支付方式,可以选择已开通的支付方式。
⚫完成时间:境内收单交易完成的时间。
⚫下单时间:境内收单交易创建的时间。
(2)统计统计查询出的所有的境内收单订单的总金额、总手续费。
(3)下载下载查询出的所有的订单。
(4)操作⚫详情:点击“详情”,显示该笔订单详情。
⚫退款:对于已付状态的订单,可以发起退款。
点击“退款”进入退款发起页面,输入退款金额、退款原因,点击“提交”,即可发起退款。
一笔订单可以发起多次退款。
⚫补发通知:对于已经完成的订单,若系统未收到首信易系统的异步通知,可以点击“补发通知”,首信易系统会再次发送异步通知。
最新中国工商银行银企互联系统接口说明Version42

中国工商银行银企互联系统接口说明V e r s i o n42中国工商银行银企互联系统接口说明Version 4.2中国工商银行电子银行部中国工商银行北京软件研发部2005年07月目录1帐户查询 (1)1.1单帐户余额查询 (1)提交包 (1)返回包 (1)1.2多帐户余额查询 (2)提交包 (2)返回包 (3)1.3当日明细查询 (4)提交包 (4)返回包 (5)1.4历史明细查询 (6)提交包 (6)返回包 (7)1.5现金管理户当日明细查询 (8)提交包 (9)返回包 (9)1.6现金管理户历史明细查询 (11)提交包 (11)返回包 (11)2转帐支付(逐笔) (13)支付提交包 (13)支付返回包 (15)逐笔支付查询提交包 (15)逐笔支付查询返回包 (16)3企业财务室 (17)3.1财务室批量指令 (17)提交包 (17)返回包 (19)3.2财务室批量指令查询 (19)提交包 (19)返回包 (20)4收费站 (22)4.1批量扣个人指令 (22)提交包 (22)返回包 (23)4.2批量扣个人指令查询 (24)提交包 (24)返回包 (24)4.3缴费个人信息查询 (25)提交包 (26)4.4批量扣企业指令 (27)提交包 (27)返回包 (29)4.5批量扣企业指令查询 (29)提交包 (29)返回包 (30)4.6缴费企业信息查询(只查已签订协议的) (31)提交包 (31)返回包 (32)5批量代理汇兑 (33)5.1代理汇兑指令提交 (33)提交包 (33)返回包 (35)5.2代理汇兑指令查询 (35)提交包 (35)返回包 (36)5.3网点信息下载 (37)提交包 (38)返回包 (38)6批量外汇汇款 (39)6.1集团内外汇资金调拨指令提交 (39)提交包 (39)返回包 (40)6.2集团内外汇资金调拨指令查询 (41)提交包 (41)返回包 (41)6.3B股资金清算指令提交 (43)提交包 (43)返回包 (44)6.4B股资金清算指令查询 (45)提交包 (45)返回包 (45)6.5国内外汇汇款指令提交 (47)提交包 (47)返回包 (48)6.6国内外汇汇款指令查询 (49)提交包 (49)返回包 (49)7电子商务 (51)7.1B2C订购指令查询 (51)提交包 (51)返回包 (52)7.2B2C退货、返还、转付指令查询 (53)返回包 (54)7.3B2B订购指令查询 (56)提交包 (56)返回包 (57)7.4B2B退货、返还指令查询 (59)提交包 (59)返回包 (60)7.5C2C订购指令查询 (61)提交包 (61)返回包 (62)7.6B2B/B2C退货、返还、转付指令提交 (64)提交包 (64)返回包 (65)7.7个人联名卡签权指令 (66)提交包 (66)返回包 (67)8工资单 (67)8.1工资单文件上传 (67)提交包 (67)返回包 (69)8.2工资单文件查询 (70)提交包 (70)返回包 (70)8.3工资单文件删除 (71)提交包 (72)返回包 (72)9附录错误代码 (73)9.1明文返回的错误代码 (73)9.2xml中retCode的错误代码 (73)1帐户查询1.1 单帐户余额查询提交包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opReq><opName>NCQueryBalanceOp</opName><ReqParam><Area_code>地区代码</Area_code><Account_num>帐号</Account_num> ---必输项<Account_cur>币种</Account_cur><userID>企业代码(和证书里的一致)</userID> ---必输项<PackageID>包序列ID</PackageID> ---必输项<ReqReserved1>请求包备用字段1</ReqReserved1><ReqReserved2>请求包备用字段2</ReqReserved2></ReqParam></opReq></ICBCYH>返回包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opRep><opName>NCQueryBalanceOp</opName><opResult><Account_num>帐号</Account_num><Account_cur>币种</Account_cur>例:RMB<retCode>错误返回码错误描述在errMsg 中</retCode><errMsg>错误描述</errMsg><Acc_balance>昨日余额</Acc_balance><Balance>余额</Balance><Usable_balance>可用余额</Usable_balance><Acct_property>帐户属性</Acct_property> 中文<PackageID>包序列ID</PackageID><userID>企业代码</userID><RepReserved1>返回包备用字段1</RepReserved1><RepReserved2>返回包备用字段2</RepReserved2></opResult></opRep></ICBCYH>1.2 多帐户余额查询提交包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opReq><opName>NCQueryBalanceListOp</opName><ReqParam><userID>企业代码(和证书里的一致)</userID> ---必输项<PackageID>包序列ID</PackageID> ---必输项<ReqReserved1>请求包备用字段1</ReqReserved1><ReqReserved2>请求包备用字段2</ReqReserved2></ReqParam><ReqParamSet><ReqParam><Area_code>地区代码</Area_code><Account_num>帐号</Account_num> ---必输项<Account_cur>币种</Account_cur><ReqReserved3>请求包备用字段3</ReqReserved3><ReqReserved4>请求包备用字段4</ReqReserved4></ReqParam></ReqParamSet></opReq></ICBCYH>返回包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opRep><opName>NCQueryBalanceListOp</opName><opResult><retCode>错误返回码错误描述在errMsg 中</retCode><errMsg>错误描述</errMsg><PackageID>包序列ID</PackageID><userID>企业代码</userID><RepReserved1>返回包备用字段1</RepReserved1><RepReserved2>返回包备用字段2</RepReserved2></opResult><opResultSet><opResult><Account_num>帐号</Account_num><Account_cur>币种</Account_cur><Acc_balance>昨日余额</Acc_balance><Balance>余额</Balance><Usable_balance>可用余额</Usable_balance><Acct_property>帐户属性</Acct_property>中文<RepReserved3>返回包备用字段3</RepReserved3><RepReserved4>返回包备用字段4</RepReserved4></opResult></opResultSet><ErrSet><Err><Account_num>账号</Account_num><errMessage>出错信息</errMessage></Err></ErrSet></opRep></ICBCYH>1.3 当日明细查询提交包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opReq><opName>NCCurDetailOp</opName><ReqParam><Area_code>地区代码</Area_code><Account_num>帐号</Account_num> ---必输项<Account_cur>币种</Account_cur><userID>企业代码(和证书里的一致)</userID> ---必输项<PackageID>包序列ID</PackageID> ---必输项<ReqReserved1>请求包备用字段1</ReqReserved1><ReqReserved2>请求包备用字段2</ReqReserved2></ReqParam></opReq></ICBCYH>返回包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opRep><opName>NCCurDetailOp</opName><opResult><retCode>错误返回码错误描述在errMsg 中</retCode><errMsg>错误描述</errMsg><Account_num>本方帐号</Account_num><PackageID>包序列ID</PackageID><userID>企业代码</userID><RepReserved1>返回包备用字段1</RepReserved1><RepReserved2>返回包备用字段2</RepReserved2></opResult><opResultSet><opResult><Trans_date>交易日期</Trans_date>(例:yyyy-MM-dd-HH:mm:ss:6位毫秒)共26位<Check_num>凭证号</Check_num><Bank1_code>对方行行号</Bank1_code><Rec_Account_num>对方账号</Rec_Account_num><Amount>发生额</Amount><Yt>用途</Yt><Trans_type>业务种类</Trans_type> 中文<PostScript>附言</PostScript><Rec_Account_name>对方户名</Rec_Account_name><sign>借贷标志</sign> 中文<Trans_abstr>摘要</Trans_abstr><RepReserved3>返回包备用字段3</RepReserved3><RepReserved4>返回包备用字段4</RepReserved4></opResult></opResultSet></opRep></ICBCYH>1.4 历史明细查询提交包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opReq><opName>NCHisDetailOp</opName><ReqParam><Area_code>地区代码</Area_code><Account_num>帐号</Account_num><Begin_date>起始日期</Begin_date> ---必输项(例:yyyyMMdd)<End_date>终止日期</End_date> ---必输项<Max_amount>最大金额</Max_amount> ---必输项(以分为单位,不带小数点)<Min_amount>最小金额</Min_amount> ---必输项<userID>企业代码(和证书里的一致)</userID> ---必输项<PackageID>包序列ID</PackageID> ---必输项<ReqReserved1>请求包备用字段1</ReqReserved1><ReqReserved2>请求包备用字段2</ReqReserved2></ReqParam></opReq></ICBCYH>返回包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opRep><opName>NCHisDetailOp</opName><opResult><retCode>错误返回码错误描述在errMsg 中</retCode><errMsg>错误描述</errMsg><PackageID>包序列ID</PackageID><userID>企业代码</userID><RepReserved1>返回包备用字段1</RepReserved1><RepReserved2>返回包备用字段2</RepReserved2></opResult><opResultSet><opResult><Area_code>地区代码</Area_code><Account_num>帐号</Account_num><Trans_date>交易日期</Trans_date> (例:yyyyMMdd)<Check_num>凭证号</Check_num><Trans_abstr>摘要</Trans_abstr><Debit_Amount>借方发生额</Debit_Amount><Crebit_Amount>贷方发生额</Crebit_Amount><Balance>余额</Balance><Rec_Account_num>对方账号</Rec_Account_num><Bank_name>开户行名称</Bank_name><Bank1_name>对方行行名</Bank1_name><Unit1_name>对方单位名称</Unit1_name><Trans_type>业务种类</Trans_type> 中文<Yt>用途</Yt><Trans_time>交易时间</Trans_time>(例:yyyy-MM-dd-HH:mm:ss:6位毫秒)共26位其值与当日明细中“交易日期”字段值一致<sign>借贷标志</sign> 中文<RepReserved3>返回包备用字段3</RepReserved3><RepReserved4>返回包备用字段4</RepReserved4></opResult></opResultSet></opRep></ICBCYH>1.5 现金管理户当日明细查询提交包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opReq><opName>NCCashManageAccCurDetailOp</opName><ReqParam><Area_code>地区代码</Area_code><Account_num>帐号</Account_num> ---必输项<Account_cur>币种</Account_cur><userID>企业代码(和证书里的一致)</userID> ---必输项<PackageID>包序列ID</PackageID> ---必输项<ReqReserved1>请求包备用字段1</ReqReserved1><ReqReserved2>请求包备用字段2</ReqReserved2></ReqParam></opReq></ICBCYH>返回包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opRep><opName>NCCashManageAccCurDetailOp</opName><opResult><retCode>错误返回码错误描述在errMsg 中</retCode><errMsg>错误描述</errMsg><Account_num>本方帐号</Account_num><PackageID>包序列ID</PackageID><userID>企业代码</userID><RepReserved1>返回包备用字段1</RepReserved1><RepReserved2>返回包备用字段2</RepReserved2></opResult><opResultSet><opResult><Trans_time>交易时间</Trans_time> HH:mm:ss<Bank1_code>对方行行号</Bank1_code><Rec_Account_num>对方账号</Rec_Account_num><Amount>发生额</Amount><Yt>用途</Yt><Trans_type>业务种类</Trans_type> 中文<PostScript>附言</PostScript><Rec_Account_name>对方户名</Rec_Account_name><sign>借贷标志</sign> 中文<Trans_abstr>摘要</Trans_abstr><REF>业务编号</REF><OREF>相关业务编号</OREF><BUSCODE>业务代码</BUSCODE><ENSUMMRY>英文备注</ENSUMMRY><CVOUHTYPE>凭证种类</CVOUHTYPE><CVOUHNO>凭证号</CVOUHNO><ADDINFO>附加信息</ADDINFO><RepReserved3>返回包备用字段3</RepReserved3><RepReserved4>返回包备用字段4</RepReserved4></opResult></opResultSet></opRep></ICBCYH>1.6 现金管理户历史明细查询提交包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opReq><opName>NCCashManageAccHisDetailOp</opName><ReqParam><Area_code>地区代码</Area_code><Account_num>帐号</Account_num><Begin_date>起始日期</Begin_date> ---必输项(例:yyyyMMdd)<End_date>终止日期</End_date> ---必输项<Max_amount>最大金额</Max_amount> ---必输项(以分为单位,不带小数点)<Min_amount>最小金额</Min_amount> ---必输项<userID>企业代码(和证书里的一致)</userID> ---必输项<PackageID>包序列ID</PackageID> ---必输项<ReqReserved1>请求包备用字段1</ReqReserved1><ReqReserved2>请求包备用字段2</ReqReserved2></ReqParam></opReq></ICBCYH>返回包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opRep><opName>NCCashManageAccHisDetailOp</opName><opResult><retCode>错误返回码错误描述在errMsg 中</retCode><errMsg>错误描述</errMsg><PackageID>包序列ID</PackageID><userID>企业代码</userID><RepReserved1>返回包备用字段1</RepReserved1><RepReserved2>返回包备用字段2</RepReserved2></opResult><opResultSet><opResult><TRXTYPE>交易类型</TRXTYPE> 中文<BUSIDATE>交易日期</BUSIDATE> yyyyMMdd<BUSITIME>交易时间</BUSITIME> HH:mm:ss<Account_num>交易帐号</Account_num><Bank_name>本方行名</Bank_name><Trans_type>业务种类</Trans_type> 中文<sign>借贷标志</sign> 中文<Debit_Amount>借方发生额</Debit_Amount><Crebit_Amount>贷方发生额</Crebit_Amount><Balance>余额</Balance><Yt>用途</Yt><CVOUHTYPE>凭证种类</CVOUHTYPE><CVOUHNO>凭证号</CVOUHNO><RECIPACT>对方帐号</RECIPACT><RECIPNAME>对方户名</RECIPNAME><RECIPBNA>对方行名</RECIPBNA><REF>业务编号</REF><OREF>相关业务编号</OREF><BUSCODE>业务代码</BUSCODE><ENSUMMRY>英文备注</ENSUMMRY><ADDINFO>附加信息</ADDINFO><RepReserved3>返回包备用字段3</RepReserved3><RepReserved4>返回包备用字段4</RepReserved4></opResult></opResultSet></opRep></ICBCYH>2转帐支付(逐笔)支付提交包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opReq><opName>NCpaySubmitOp</opName><ReqParam><Pay_Dep_name>汇款单位</Pay_Dep_name><Pay_Dep_Acc>汇款帐号</Pay_Dep_Acc> (35位)---必输项<Area_code>地区代码</Area_code><Pay_Dep_branch>汇款单位开户行</Pay_Dep_branch><Rec_Dep_name>收款单位</Rec_Dep_name> (60位) ---必输项<Rec_Dep_Acc>收款帐号</Rec_Dep_Acc> (35位) ---必输项<Rec_Area_Code>收款人地区代码</Rec_Area_Code> 0:它行 1:工行<Rec_Dep_branch>收款单位开户行</Rec_Dep_branch>(60位)--必输项<Trans_time>交易时间</Trans_time><Serial_no>指令序号</Serial_no><PayAmt>金额</PayAmt> (18位) ---必输项以分为单位<Account_cur>币种</Account_cur><Pay_Use>用途</Pay_Use> (20位)<Pay_type>汇款速度</Pay_type> 0:普通 1:加急<Author_log_id_1>授权人ID</Author_log_id_1><Author_log_id_2>二次授权人ID</Author_log_id_2><Submit_Log_id>提交人ID</Submit_Log_id> ---必输项 <Area_name>付款人账户地区名(付款人所在地) </Area_name><Rec_Area_name>收款人账户地区名(收款人所在地) </Rec_Area_name>---必输项收方如果是工行,以《信息对照表》中的地区代码对照表为准<Branch_code>账户分理处号</Branch_code><Pay_Password>支付密码</Pay_Password><User_Rem>备注栏(用户备注) </User_Rem><Pay_NetCode>付款行网点号</Pay_NetCode><Pay_BranchNo>付款行行号</Pay_BranchNo><Pay_BranchId>付款行行标识</Pay_BranchId><Pay_DispsNo>付款行分签号</Pay_DispsNo><Rec_BranchNo>对方行号</Rec_BranchNo><Rec_BranchId>对方行标识</Rec_BranchId><Rec_DispsNo>对方分签号</Rec_DispsNo><PostScript>附言</PostScript><PostScriptFlag>附言标志</PostScriptFlag><Transfer_Type>转帐类型</Transfer_Type><userID>企业代码(和证书里的一致)</userID> ---必输项<PackageID>包序列ID(15位)</PackageID> ---必输项<SignTime>签名时间(yyyyMMddhhmmssSSS)</SignTime> ---必输项<ReqReserved1>请求包备用字段1</ReqReserved1><ReqReserved2>请求包备用字段2</ReqReserved2></ReqParam></opReq></ICBCYH>支付返回包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opRep><opName>NCpaySubmitOp</opName><opResult><retCode>返回码</retCode>0-成功1-可疑其他为失败,错误描述在errMsg 中<errMsg>错误描述</errMsg><TranFlag>成功描述</TranFlag><PackageID>包序列ID</PackageID><userID>企业代码</userID><RepReserved1>返回包备用字段1</RepReserved1><RepReserved2>返回包备用字段2</RepReserved2></opResult></opRep></ICBCYH>逐笔支付查询提交包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opReq><opName>NCQueryPayOrderDetailOp</opName><ReqParam><userID>企业代码(和证书里的一致)</userID> ---必输项<PackageID>包序列ID</PackageID> ---必输项(提交指令中的包ID)<ReqReserved1>请求包备用字段1</ReqReserved1><ReqReserved2>请求包备用字段2</ReqReserved2></ReqParam></opReq></ICBCYH>逐笔支付查询返回包<?xml version="1.0" encoding = "GB2312"?><ICBCYH><opRep><opName>NCQueryPayOrderDetailOp</opName><opResult><retCode>错误返回码错误描述在errMsg 中</retCode>此值只表示该交易是否执行成功,并不代表此笔支付是否成功或失败(非空表示交易执行失败,失败原因见errMsg)。
深圳跨境贸易电子商务通关服务平台进口统一版企业对接数据标准

深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接数据标准1 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接(1)数据流转:企业→平台→海关、检验检疫、市场监管(2)报文命名:CEB_CEB311_[senderId]_EPORT_[yyyyMMddHHmmssSSS+4位流水号].xml。
3 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接3.支付凭证(1)数据流转:企业→平台→海关、检验检疫(2)报文命名:CEB_CEB411_[senderId]_EPORT_[yyyyMMddHHmmssSSS+4位流水号].xml。
7 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接13 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接6.入库明细单(1)数据流转:企业→平台→海关、检验检疫14 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接7.撤消单(1)数据流转:企业→平台→海关(2)报文命名:CEB_CEB623_[senderId]_EPORT_[yyyyMMddHHmmssSSS+4位流水号].xml。
15 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接16 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接8.退货单(1)数据流转:企业→平台→海关深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接18 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接19 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接20 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接21 / 39深圳市跨境贸易电子商务通关服务平台(进口统一版)企业对接9.入仓单(1)数据流转:企业→平台→检验检疫(2)报文命名:CEB_CEB701_[senderId]_EPORT_[yyyyMMddHHmmssSSS+4位流水号].xml。
微信退款API的操作方法

微信退款API的操作⽅法⾸先我们需要申请到商户的key密钥这个是在账号关联(AppID绑定)应⽤场景当交易发⽣之后⼀段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接⼝将⽀付款退还给买家,微信⽀付将在收到退款请求并且验证成功之后,按照退款规则将⽀付款按原路退到买家账号上。
注意:1、交易时间超过⼀年的订单⽆法提交退款2、微信⽀付退款⽀持单笔交易分多次退款,多次退款需要提交原⽀付订单的商户订单号和设置不同的退款单号。
申请退款总⾦额不能超过订单⾦额。
⼀笔退款失败后重新提交,请不要更换退款单号,请使⽤原商户退款单号3、请求频率限制:150qps,即每秒钟正常的申请退款请求次数不超过150次4、每个⽀付订单的部分退款次数不能超过50次5、如果同⼀个⽤户有多笔退款,建议分不同批次进⾏退款,避免并发退款导致退款失败6、申请退款接⼝的返回仅代表业务的受理情况,具体退款是否成功,需要通过退款查询接⼝获取结果。
7、⼀个⽉之前的订单申请退款频率限制为:5000/min接⼝地址我们退款的时候需要注意要准备证书使⽤,在⽀付的时候不是必要条件需要证书请求需要双向证书。
⼀、超级管理员扫码登录微信⽀付商户平台后,进⼊账户中⼼找到API安全;点击申请证书,跳出⽣成API证书界⾯。
点击“允许访问”,同意⽹页访问剪切板;三、下载证书⼯具,在证书⼯具中点击“申请证书”按钮;四、按照要求填写商户信息,点击下⼀步;五、复制请求串到剪切板,在之前的⽣成API证书界⾯粘贴,输⼊“短信验证码”和“登录密码”;点击下⼀步,进⼊复制证书串界⾯。
六、复制证书串到剪切板,在证书⼯具的粘贴证书串界⾯,点击粘贴按钮。
然后进⼊下⼀步,⽣成证书。
七、⽣成证书之后,找到下载到电脑的证书⽂件,改个好认的名字发给技术⼈员,记得保留⼀个备份。
技术⼈员获得证书之后将证书部署到服务器上。
也就完成了微信⽀付与微信公众号等平台的对接了。
下⾯是请求时需要的参字段名变量名必填类型⽰例值描述公众账号ID appid是String(32)wx8888888888888888微信分配的公众账号ID(企业号corpid即为此appid)商户号mch_id是String(32)1900000109微信⽀付分配的商户号随机字符串nonce_str是String(32)5K8264ILTKCH16CQ2502SI8ZNMTM67VS随机字符串,不长于32位。
java使用AES-256-ECB(PKCS7Padding)解密——微信支付退款通知接口。。。

java使⽤AES-256-ECB(PKCS7Padding)解密——微信⽀付退款通知接⼝。
1.场景 在做微信⽀付退款通知接⼝时,微信对通知的内容做了加密,并且指定⽤ AES256 解密,官⽅指定的解密⽅式如下:2.导包<!-- https:///artifact/org.bouncycastle/bcprov-jdk15on --><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.60</version></dependency><!-- https:///artifact/org.jasypt/jasypt --><dependency><groupId>org.jasypt</groupId><artifactId>jasypt</artifactId><version>1.9.3</version></dependency>3.解密 说明:⽅法中参数 reqInfo 就是退款结果通知接⼝中的 req_info 字段值private String descrypt(String reqInfo) throws NoSuchPaddingException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException { byte[] reqInfoB = Base64.decodeBase64(reqInfo);String key_ = DigestUtils.md5Hex(WXPayConfig.getInstance().getKey()).toLowerCase();if (Security.getProvider("BC") == null){Security.addProvider(new BouncyCastleProvider());}Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");SecretKeySpec secretKeySpec = new SecretKeySpec(key_.getBytes(), "AES");cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);return new String(cipher.doFinal(reqInfoB));}4.结果5.上述过程之后在win本地运⾏没问题了,但是放到 linux 之后报错如下: java.security.InvalidKeyException: Illegal key size or default parameters 最终还是按⽹友的⽅法解决:替换jre包:local_policy.jar,US_export_policy.jar 5.1.下载 需要注意的是:替换的jar包版本需要与jre版本⼀致,各个版本包连接 jdk8: jdk7: jdk6: jdk5: 5.2.替换路径 %JAVE_HOME%\jre\lib\security6.参考 解密⽅式: 报错解决(报错内容“No such provider: BC”): 替换包参考:。
批量查询交易接口

输入参数表
字段名
变量名
类型
说明
可空
协议参数
接口名称 service
String
query_trade_list_partner
N
合 作 伙 伴 partner ID
String(16)
合作伙伴在支付宝的用户 N ID
签名
sign
String
见签名机制
N
签名方式 sign_type
String
交易的子元素
N
总金额
total_fee
交易的子元素
N
交易号
trade_no
交易的子元素
N
交易状态 trade_status
交易的子元素
N
输出格式
<trade> <buyer_login_email>bean.yangb@</buyer_login_email> <gathering_type>1</gathering_type> <gmt_create>2007-09-04 15:00:21</gmt_create> <gmt_last_modified_dt>2007-09-04 15:04:19</gmt_last_modified_dt> <out_trade_no>bean09041502</out_trade_no> <seller_login_email>testsale0001@</seller_login_email> <total_fee>15.00</total_fee> <trade_no>2007090402568913</trade_no> <trade_status>TRADE_FINISHED</trade_status> </trade>
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.1 生成待签名的字符串........................................................................................................... 10 6.1.1 需要参与签名的参数 ................................................................................................ 10 6.1.2 生成待签名字符串.................................................................................................... 10
第4页
批量退款查询接口
1.3 阅读对象
支付宝批量退款查询接口技术文档是面向具有一定的网站开发能力,了解 ASP、 PHP、JAVA、 等开发语言中的一种及 SQL 数据库语言的网站开发、维 护和管理人员。
2 数据交互
本接口采用同步请求返回的方式,只需要一次系统交互即可,一般采用 HTTPCLIENT 技术。
商户系统将退交易、退分润、退收费请求批量提交到支付宝系统,支付宝根据商户请求完 成处理。
通过 HTTP 协议把需要传输的数据发送给接收方的过程。
将分润的转账资金退回分润账户。
将交易资金从卖家账户退收费账户。
将子交易的金额从卖家账户退还到补款账户。
支付宝(中国)网络技术有限公司 版权所有| 版本:1.9
图2-1 商户系统请求/支付宝响应交互模式
(1) 构造请求数据 商户根据支付宝提供的接口规则,通过程序生成得到签名结果及要传输给支付宝的 数据集合。 (2) 发送请求数据 把构造完成的数据集合,以服务器表单提交的方式传递给支付宝。 (3) 支付宝对请求数据进行处理 支付宝得到这些集合后,会先进行安全校验等验证,一系列验证通过后便会处理这 次发送过来的数据请求。 (4) 返回处理的结果数据 支付宝将退款查询结果以 HTML 格式同步返回。 (5) 商户处理支付宝返回的结果 商户收到支付宝 HTML 返回后,对返回参数进行解析处理。
3.1 含义 ...................................................................................................................................... 6 3.2 列表 ...................................................................................................................................... 6 3.3 样例 ...................................................................................................................................... 7
2 数据交互 .............................................................................................................. 5 3 请求参数说明....................................................................................................... 6
1.1 功能描述 ............................................................................................................................... 4 1.2 业务术语 ............................................................................................................................... 4 1.3 阅读对象 ............................................................................................................................... 5
4.3.1 格式说明 .................................................................................................................... 8 4.3.2 样例 ........................................................................................................................... 9 4.4 解冻结果明细说明 ................................................................................................................ 9 4.4.1 格式说明 .................................................................................................................... 9 4.4.2 样例 ........................................................................................................................... 9 4.5 样例 ...................................................................................................................................... 9
4 HTML 同步返回参数说明...................................................................................... 7
4.1 含义 ...................................................................................................................................... 7 4.2 列表 ...................................................................................................................................... 7 4.3 退款结果明细说明 ................................................................................................................ 8
批量退款查询接口
服务名称:refund_fastpay_query
版本号:1.9
支付宝(中国)网络技术有限公司 版权所有
批量退款查询接口
目录
1 文档说明 .............................................................................................................. 4
商户在签约产品时指定的支付宝账号。
页面跳转同步通知。支付宝根据得到的数据处理完成后,当前页面从支付宝的页面自动跳 转回商户的网站,同时携带处理完成的结果信息反馈给商户网站。
分润是指将交易金额中的一部分转账给其它账户。
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能 丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 详情请参考:/httpclient-3.x/
支付宝(中国)网络技术有限公司 版权所有| 版本:1.9
第2页
批量退款查询接口
5 商户业务处理注意事项 ...................................................................................... 10 6 签名机制 ............................................................................................................ 10