澳洲支付服务商RoyalPay微信支付宝APP支付对接

article/2025/11/6 9:49:32

最近项目中需要开发澳洲那边的微信支付宝支付,所以去研究了一下微信境外支付,发现境外只支持服务商模式,即客户需要去与澳洲本地服务商合作,由客户提供材料,服务商帮客户申请支付相关账号,然后调用服务商提供的接口去获得调起支付所需的参数。客户选择了RoyalPay这家微信支付服务商,于是我照着服务商的提供的接口文档进行对接,实现了下单、查询订单状态、退款、查询退款状态接口。接口文档地址

<?phpnamespace App\Components\AustraliaPay;use App\Components\Common\DateTool;
use App\Components\Common\Utils;class AustraliaPay
{/*** 支付接口** by xh** 2020/4/8 13:28* @param array $data  trade_no:订单号  price:订单金额   description:订单描述   currency:支付币种(只支持人民币与澳元) channel:支付通道(Wechat微信支付  Alipay支付宝支付)  notify_url:回调url* @return mixed*/public static function payOrder(array $data){$data["appid"] = env('WECHAT_PAYMENT_APPID_HW');$sign_data = self::getSign();$url = "https://mpay.royalpay.com.au/api/v1.0/gateway/partners/".$sign_data['partner_code']."/app_orders/".$data['trade_no']."?time=".$sign_data['now_millisecond']."&nonce_str=".$sign_data['nonce_str']."&sign=".$sign_data['sign'];$response = self::put_curl($url,json_encode($data));Utils::processLog(__METHOD__,'测试支付----------------',json_encode($response));return json_decode($response);}/*** 查询订单状态** by xh** 2020/4/8 10:29* @param  $trade_no //商户订单号* @return mixed*/public static function queryOrderStatus($trade_no){$sign_data = self::getSign();$url = "https://mpay.royalpay.com.au/api/v1.0/gateway/partners/".$sign_data['partner_code']."/orders/".$trade_no."?time=".$sign_data['now_millisecond']."&nonce_str=".$sign_data['nonce_str']."&sign=".$sign_data['sign'];$result = Utils::curl($url,false,0,1);return json_decode($result);}/*** 查询退款状态** by xh** 2020/4/8 10:29* @param  $trade_no //商户订单号* @return mixed*/public static function queryRefundStatus($trade_no,$refund_trade_no){$sign_data = self::getSign();$url = "https://mpay.royalpay.com.au/api/v1.0/gateway/partners/".$sign_data['partner_code']."/orders/".$trade_no."/refunds/".$refund_trade_no."?time=".$sign_data['now_millisecond']."&nonce_str=".$sign_data['nonce_str']."&sign=".$sign_data['sign'];$result = Utils::curl($url,false,0,1);return json_decode($result);}/*** 申请退款** by xh** 2020/4/8 11:54* @param $trade_no  //订单单号* @param $refund_trade_no  //退款单号* @param $refund_fee //退款金额* @return mixed*/public static function refund($trade_no,$refund_trade_no,$refund_fee){$sign_data = self::getSign();$url = "https://mpay.royalpay.com.au/api/v1.0/gateway/partners/".$sign_data['partner_code']."/orders/".$trade_no."/refunds/".$refund_trade_no."?time=".$sign_data['now_millisecond']."&nonce_str=".$sign_data['nonce_str']."&sign=".$sign_data['sign'];$result = self::put_curl($url,json_encode(['fee'=>$refund_fee]));return json_decode($result);}/*** 获取签名** by xh** 2020/4/7 18:01* @return array*/public static function getSign(){$nonce_str = Utils::getRandomString(10);  //:随机字符串,无长度限制,请使用URL安全字符(避开&,=等符号),请注意HTTP URL的最大长度限制,建议长度在10到30位$partner_code = env('PARTNER_CODE');    //商户编码,由4位大写字母或数字构成$now_millisecond = DateTool::getMillisecond();  //当前毫秒,UTC毫秒时间戳,取当前UTC时间的毫秒数时间戳,Long类型,5分钟内有效$credential_code = env('CREDENTIAL_CODE');  //系统为商户分配的开发校验码,请妥善保管,不要在公开场合泄露//验证字符串$valid_string = $partner_code."&".$now_millisecond."&".$nonce_str."&".$credential_code;//签名算法 sha256加密验证字符串然后转成十六进制最后再转小写$sign = hash('sha256',$valid_string,false);$sign_data = ['nonce_str' => $nonce_str,'partner_code' => $partner_code,'now_millisecond' => $now_millisecond,'sign' => $sign];return $sign_data;}/*** 发送put请求,传json参数** by xh** 2020/4/8 9:04* @param $url* @param $json_data* @return bool|string*/public static function put_curl($url, $json_data){$ch = curl_init();$header = array('Content-Type: application/json; charset=utf-8','Content-Length: ' . strlen($json_data));//定义header,可以加多个curl_setopt($ch, CURLOPT_URL, $url); //定义请求地址curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); //定义请求类型,当然那个提交类型那一句就不需要了curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//定义headercurl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//定义是否直接输出返回流?curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); //定义提交的数据curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在$res = curl_exec($ch);curl_close($ch);//关闭return $res;}}

curl方法内容。日志类替换成你们自己用的日志类就行了

/*** 调取外部接口方法* @param $url 请求网址* @param bool $params 请求参数* @param int $ispost 请求方式* @param int $https https协议* @return bool|mixed*/public static function curl($url, $params = false, $ispost = 0, $https = 0, $header = null){Utils::processLog(__METHOD__, '', " " . "url:" . $url);$httpInfo = array();$ch = curl_init();//2019-10-07进行优化,可以设置header信息if ($header == null) {$header = array('Content-Type: application/json; charset=utf-8');}curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);curl_setopt($ch, CURLOPT_TIMEOUT, 30);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);if ($https) {curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在}if ($ispost) {Utils::processLog(__METHOD__, "", "POST请求的params:" . json_encode($params));curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));curl_setopt($ch, CURLOPT_URL, $url);} else {if ($params) {if (is_array($params)) {$params = http_build_query($params);}curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);} else {curl_setopt($ch, CURLOPT_URL, $url);}}$response = curl_exec($ch);if ($response === FALSE) {//echo "cURL Error: " . curl_error($ch);return false;}$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);$httpInfo = array_merge($httpInfo, curl_getinfo($ch));curl_close($ch);return $response;}

调用下单接口

//进行业务测试
public function test()
{$pay_data = ['trade_no' => $trade_no = Utils::generateTradeNo(),        //订单号'price' => 100,                 //支付金额,单位为分'description'=>'1澳元支付成功',  //订单描述'currency' => 'AUD',            //货币种类'notify_url' => ''http://xxx.com/payNotify'',    //支付回调'channel' => 'Wechat'           //支付通道  Wechat:微信支付   Alipay:支付宝支付];$result = AustraliaPay::payOrder($pay_data)->sdk_params;return ApiResponse::makeResponse(true,bcmul(1.11,100),ApiResponse::SUCCESS_CODE);
}

下单接口返回内容

微信

支付宝


http://chatgpt.dhexx.cn/article/1a706bFU.shtml

相关文章

聚合支付平台排名

随着时代的发展&#xff0c;聚合支付对于商家来说越来越重要&#xff0c;虽说有刷脸支付的噱头&#xff0c;但是聚合支付在支付史上的地位越来越重要。再加上银联、支付宝、微信官方这两年在聚合支付上的发力&#xff0c;和国家层面对聚合支付的政策扶持&#xff0c;聚合支付已…

聚合支付排名前十的平台有哪些?

很多行业都有自己的排名&#xff0c;在某种程度上&#xff0c;排名的位置&#xff0c;决定着企业能力的强弱&#xff0c;越是排名靠前的企业&#xff0c;越是彰显着不菲的能力。 所以&#xff0c;很多时候&#xff0c;我们想寻找某个行业里优秀的企业&#xff0c;看一下排名数…

第三方支付平台排行!

第三方支付平台排行&#xff01; 2023年第三方支付十大品牌 口碑投票榜 人气品牌榜 2023年榜单规则依据:第三方支付十大品牌榜数据由CNPP品牌榜中榜大数据 研究院和CN10排排榜技术|研究院通过资料收集整理&#xff0c;并基于大数据统计及人为根据市场和参数条件变化的分析研究…

海外本地支付—Payssion

Payssion&#xff08;全球本地支付&#xff09;&#xff1a;成立于2013年1月15日&#xff0c;致力于为客户提供一站式全球在线支付解决方案。通过Payssion一个API可以快速接入全球300多种本地支付&#xff0c;覆盖欧洲、拉美、中东、东南亚等全球200多个国家/地区。 1、提供什么…

PHP 对接paypal支付平台

对接paypal支付平台 【前言】:最近公司需要做一款海外股票的app,其中有需要购买会员权益的一个模块&#xff0c;这里需要国际类型的支付。支付宝及微信在国内比较活跃&#xff0c;国外的话可能不太理想&#xff0c;所以就用了paypal. 准备工作 1.首先在paypal平台创建账号&…

国内平台使用国外支付的可行性?

国内平台使用国外支付的情况&#xff1f; 产品做数据互通&#xff0c;H5与二维码海报作为入口。 个人中心&#xff0c;App下载做老用户入口转化。 用境外自动转化费率的支付&#xff0c;有朋友用过&#xff1f; 风控如何&#xff1f; 比如一些拼单项目&#xff0c;并不违规&…

跨境支付与业务流程介绍

跨境支付业务 跨境支付与人民币跨境支付的不同通俗的来讲&#xff0c;跨境支付就是中国消费者在网上购买国外商家产品或国外消费者购买中国商家产品时&#xff0c;由于币种的不一样&#xff0c;就需要通过一定的结算工具和支付系统实现两个国家或地区之间的资金转换&#xff0…

跨境第三方支付有什么,怎么进行跨境支付?

亚马逊收款银行账户一般是采用第三方收款平台提供的外汇账户。只需免费注册第三方收款平台账号即可获得亚马逊银行收款账号。常用的第三方收款平台&#xff0c;如派安盈Payoneer(通称p卡)。万里汇款Worldfirst(通称wf卡..LianLianPay(连续支付).PingPong支付(等)。这些第三方收…

海外支付大战

文章经授权转载自中国企业家杂志&#xff08;ID&#xff1a;iceo-com-cn&#xff09; 插画 | 郭埙 从支付服务链的角度来看&#xff0c;随着跨境贸易的繁荣&#xff0c;对外出口消费的需求增加&#xff0c;B端商户和C端用户都有巨大的市场潜力。 自2015年进入移动支付元年以来&…

Stripe支付,国外支付Stripe、跨境支付

好记星不如烂笔头&#xff0c;这里记录平时工作中用到的东西&#xff0c;不喜可以留言。 美国跨境支付stripe 测试说明&#xff0c;你需要办理至少一张国际信用卡&#xff0c; 比如visa、master、AE(American Express credit 卡)都可以&#xff0c;国内的银联卡不支持的。 eg:…

国外十大在线支付服务网站

1、 贝宝 贝宝&#xff08;PayPal&#xff09;是一个在1998年首次推出的在线支付服务。贝宝在全球200多个国家运营&#xff0c;支持26种货币&#xff0c;允许用户在网站上进行结帐。贝宝通过浏览器&#xff0c;应用程序或阅读器处理付款&#xff0c;并为客户提供信贷服务。 2、…

基于ASP.NET/C#开发国外支付平台(Paypal)学习心得。

最近一直在研究Paypal的支付平台&#xff0c;因为本人之前没有接触过接口这一块&#xff0c;新来一家公司比较不清楚流程就要求开发两个支付平台一个是支付宝&#xff08;这边就不再这篇文章里面赘述了&#xff09;&#xff0c;但还是花了2-3天的时间通过自己研究和借鉴别人的文…

国外支付(Paypal,Cybersource)

前言 Paypal是全球在线支付的领导者&#xff0c;2002年被eBay收购&#xff0c;2015年又戏剧性的从eBay分离&#xff0c;以500亿美元市值反超eBay。创始人 Elon Musk 同时是Paypal、空间探索技术公司、以及特斯拉汽车三家公司的CEO&#xff0c;电影“钢铁侠”的人物原型就是这哥…

第13章 管理身份和身份验证

13.1 控制对资产的访问 资产包括&#xff1a;信息&#xff0c;系统、设备、设施和人员。 •信息 组织的信息包括其所有数据。 数据可存储在服务器、计算机和较小设备上的简单文件中&#xff0c;还可存储在服务器场中的大型数据库中。 访问控制尝试阻止信息的未授权访问。 …

多视角人脸正面化生成综述:Multi-view Frontal Face Image Generation: A Survey

多视角人脸正面化生成综述&#xff1a;Multi-view Frontal Face Image Generation: A Survey 本文首发于极市平台 作者&#xff1a;宁欣1,2,3&#xff0c;南方哲2,3&#xff0c;许少辉2,3&#xff0c;于丽娜1&#xff0c;张丽萍1,2,3 单位信息&#xff1a;1、中国科学院半导体…

如何入门多视角人脸正面化生成?不得不看的超详细最新综述!

作者丨宁欣&#xff0c;南方哲&#xff0c;许少辉&#xff0c;于丽娜&#xff0c;张丽萍 审稿丨邓富城 编辑丨极市平台 导读 本文将重点对近些年来基于3D模型和深度学习模型的人脸正面化生成方法的主要进展和部分具有代表性的研究成果进行介绍&#xff0c;并通过实验对比和分析…

MYSQL错误:Error Code: 1175解决办法

MYSQL错误&#xff1a;Error Code: 1175解决办法 今天对视图进行更新&#xff0c;发现修改不了数据&#xff0c;报错如下&#xff1a; Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disabl…

关于error code 1175的成因和解决办法

事情起源于些课后习题p89页的操作 &#xff08;5&#xff09;在teacherinfo1表中&#xff0c;将性别为“男”的记录的家庭住址都改为“上海市浦东新区”。 update teacherinfo1 set tadress上海市浦东新区 where tcsex男; select *from teacherinfo1; 出现了以下截图的错误 …

洛谷P1175 表达式的转换(栈的应用)

洛谷 P1175 表达式的转换 链接. 难度&#xff1a;提高/省选- 标签&#xff1a;模拟&#xff0c;字符串&#xff0c;线性结构&#xff0c;栈 题意&#xff1a; 给定一个中缀表达式&#xff0c;让我们输出转化为后缀表达式后计算的每一步。 题解&#xff1a; 1.将中缀表达式…

如何解决MySQL Workbench中的错误Error Code: 1175

错误描述&#xff1a; 在MySQL Workbench8.0中练习SQL语句时&#xff0c;执行一条update语句&#xff0c;总是提示如下错误&#xff1a; Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY columnTo disab…