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