生成待签名字符串

除去signsign_type两个参数外,其他参数都是需要签名的参数。

生成请求待签名字符串

对于如下的参数数组:

copy
key-----------------------value
total_fee-----------------0.01
trade_information---------{"business_type":"4","goods_info":"Macbook 12 inch M3 8G 256G SSD^1|Apple iPad Pro 11 inch^1","total_quantity":"2"}
_input_charset------------UTF-8
currency------------------USD
out_trade_no--------------out_trade_no_20200109_175140
partner-------------------2088021017666931
product_code--------------NEW_OVERSEAS_SELLER
service-------------------create_forex_trade
subject-------------------Mika's coffee shop
timeout_rule--------------12h

将数组按照参数的首字母从a到z的顺序排序。排序完成之后,组合成“key=value”的格式,再把所有数组值以“&”字符连接起来,如:                  

_input_charset=UTF-8&currency=USD&out_trade_no=out_trade_no_20200109_175140&partner=2088021017666931&product_code=NEW_OVERSEAS_SELLER&service=create_forex_trade&subject=Mika's coffee shop&timeout_rule=12h&total_fee=0.01&trade_information={"business_type":"4","goods_info":"Macbook 12 inch M3 8G 256G SSD^1|Apple iPad Pro 11 inch^1","total_quantity":"2"}

生成同步通知待签名字符串

同步通知示例:

resultStatus={9000};memo={};result={partner="2088101568358171"&seller_id="xxx@alipay.com"&out_trade_no="0819145412-6177"&subject="test"&body="testtest"&total_fee="0.01"&notify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&show_url="m.alipay.com"&success="true"&sign_type="RSA"&sign="hkFZr+zE9499nuqDNLZEF7W75RFFPsly876QuRSeN8WMaUgcdR00IKy5ZyBJ4eldhoJ/2zghqrD4E2G2mNjs3aE+HCLiBXrPDNdLKCZgSOIqmv46TfPTEqopYfhs+o5fZzXxt34fwdrzN4mX6S13cr3UwmEV4L3Ffir/02RBVtU="}

取出result部分,除去 signsign_type 参数:

partner="2088101568358171"&seller_id="xxx@alipay.com"&out_trade_no="0819145412-6177"&subject="test"&body="testtest"&total_fee="0.01"&notify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&show_url="m.alipay.com"&success="true"

生成异步通知待签名字符串

异步通知示例:

http://0ee96cd2.ngrok.io/notify.htm? buyer_id=208812287878****&currency=HKD&forex_rate=0.85420000&notify_id=e5f5c6a77034fcd111e373e7e61dcbegdy&notify_type=trade_status_sync&notify_time=2017-08-11 17:31:39&out_trade_no=0811172929-1013&rmb_fee=0.09&seller_id=208861122157****&trade_no=2017081121001003050274536539&total_fee=0.10&trade_status=TRADE_FINISHED&sign_type=RSA&sign=$$$

除去signsign_type 参数,将其他参数按照从a到z的顺序排序,再把所有数组值以“&”字符连接起来:

buyer_id=208812287878****&currency=HKD&forex_rate=0.85420000&notify_id=e5f5c6a77034fcd111e373e7e61dcbegdy&notify_type=trade_status_sync&notify_time=2017-08-11 17:31:39&out_trade_no=0811172929-1013&rmb_fee=0.09&seller_id=208861122157****&trade_no=2017081121001003050274536539&total_fee=0.10&trade_status=TRADE_FINISHED

注意:

  • 没有值的参数无需传递,也无需包含到待签名数据中。
  • 签名时,将字符转化成字节流时指定的字符集与_input_charset保持一致。
  • 如果传递了_input_charset参数,这个参数也应该包含在待签名数据中。