此文档专为Asiabill支付平台的合作商户提供手机 App 接入Asiabill支付服务。本文主要描述 SDK 支付接口的使用方法,目的是帮助商户的技术人员快速开发相关的接入程序。
Asiabill SDK 支持信用卡支付、银联卡支付。
此文档面向具有一定 Android/iOS 客户端开发能力,了解 Android/iOS 客户端的开发和管理人员。
名称 |
说明 |
商户号 |
签约后,为商家分配的唯一标识,相当于在我司用于交易的账号。 |
网关接入号 |
商户号下的子网关号,一个商户号可分配多个网关号,每个网关号可进行独立设置各种信息,例如扣率,风控和支付页面样式等。 |
Signkey |
1 个网关接入号对应 1 个用于加密的 Signkey,默认由 8 位随机字母数字组成。 |
返回地址 |
Asiabill根据得到的数据处理完成后,当前页面从Asiabill的页面自动跳转回商户的网站,同时携带处理完成的结果信息反馈给商户网站。 |
推送 |
是服务器到服务器之间的数据返回。 |
Q:同步返回是什么?
A:Asiabill服务器处理完支付请求后将结果信息返回给 SDK,商户客户端从 SDK 中获取结果数据后进行验证签名,之后商户根据结果数据进行下一步处理。
Q:异步通知是什么?
A:Asiabill服务器直接发起请求到商户服务器,支付状态需以异步通知结果为准。
Q:商户未收到异步通知怎么办?
A:对于不能确定支付状态的订单,可以调用订单查询接口获取最新状态。
Q:有无可能有重复的异步通知?
A:异步通知有可能重复通知,商户需要做去重处理,避免多次发货。建议在数据进行状态检查和处理之前,采用数据锁进行并发控制。
Q:如何保证通知是来自Asiabill的合法报文?
A:为保证报文数据的真实性,商户接收到返回报文后,应通过Asiabill颁发的 Signkey 验证报文的真实性和合法性,以确认数据返回是从Asiabill服务器发出的。具体验证的方法请见加密机制。
应用场景:处理支付接口参数 signInfo、交易查询。
商户与Asiabill服务器进行数据传输时,应对关键数据进行摘要加密,Asiabill服务器会对此签名进行验证。同理,当商户收到Asiabill返回的返回结果后,也应对签名字段进行验证,以确保数据是从Asiabill服务器返回。
明文加密结构:merNo + gatewayNo + orderNo + orderCurrency+ orderAmount + returnUrl+ signkey
在SHA-256 签名时,需要加盐。其盐值 signkey 以及商户号,网关接入号都是由Asiabill提供。
如下是数据拼接示例:
"20161" + "20202016" + "1601011431330" + “USD” + “0.01” + "http://192.168.1.1:8080/ PayResult.jsp" + "12345678"
如下是代码示例:
注:若 returnUrl 中带有& “ „<>请将 html 转码之后再进行加密。
Java 加密方式:
signInfo=sha256(merNo+gatewayNo+orderNo+orderCurrency+orderAmount+returnUr l+signkey);
PHP 加密方式:
$signInfo=hash("sha256",$merNo.$gatewayNo.$orderNo.$orderCurrency.$orderAmou nt.$returnUrl.$signkey);
C#加密方式:
public string GetSHA256(string strData) //使用 SHA256 加密算法: System.Security.Cryptography.SHA256 sha256 = new Sys-tem.Security.Cryptography.SHA256Managed(); byte[] sha256Bytes = System.Text.Encoding.Default.GetBytes(strData); byte[] cryString = sha256.ComputeHash(sha256Bytes); string sha256Str = string.Empty; for (int i=0;i