هذه الصفحة متاحة بالإنجليزية فقط حاليًا.

WebMoney

WebMoney Merchant (Web Merchant Interface). WebMoney payments into a Z (USD) or E (EUR) purse; the purse letter fixes the currency.

What you need

merchant.webmoney.com → Settings → the row of the purse you accept payments into:

  • merchant_id: the purse number (a letter + 12 digits, e.g. Z123456789012)
  • secret_key: that purse's Secret Key (up to 50 characters, case sensitive)
  • test_mode: tick it while the purse is in test mode on the WebMoney side (see below)

In your panel choose Settings → Payments → Add method → WebMoney and enter the values.

On the same settings page:

  • Result URL: https://<your-panel-domain>/payments/webmoney/callback
  • Success URL: https://<your-panel-domain>/payments/webmoney/return, Fail URL: https://<your-panel-domain>/payments/webmoney/return?fail=1; request method LINK for both
  • Tick Allow URLs transmitted in the form. The panel attaches its own Result/Success/Fail URLs to every payment; with this on, the customer comes back to the right page with the payment reference. With it off, the fixed URLs above are used and the payment still works.
  • Method of generating the payment notification control signature: SHA256. SIGN needs WMSigner and cannot be verified by the panel; if you want to stay on SIGN, enable "Send the Secret Key to the Result URL" (the Result URL is https) and the panel compares the posted Secret Key instead of the signature, this only works while URL overriding in the form is off.
  • Transmit the parameters in prerequest may stay on; the panel answers the pre-request with the YES WebMoney expects.

Currency

WebMoney has no currency field: the purse letter decides it, Z = USD, E = EUR (T = USDT). Your panel currency must equal the purse's unit; otherwise no payment starts and you see the (Turkish) error "WebMoney Z… cüzdanı USD taşır; panel para birimi TRY". Gold (G), crypto (X, H, L, F, M) and credit (D) purses are refused. The amount is sent in LMI_PAYMENT_AMOUNT with two decimals and a dot.

Flow

  1. The customer enters an amount and picks WebMoney. Their browser POSTs a form of LMI_ fields to https://merchant.webmoney.com/lmi/payment_utf.asp. LMI_PAYMENT_NO is the payment's panel number; the panel reference travels in the custom field PAYMENT_REF and as (REF) inside the description.
  2. Right before the payment WebMoney may send a pre-request (LMI_PREREQUEST=1) to the Result URL. The panel marks the payment pending and replies YES; if the purse or the test/live mode does not match, it refuses and WebMoney cancels the payment.
  3. When the payment completes, WebMoney POSTs the notification server-to-server. The panel recomputes the LMI_HASH2 (or LMI_HASH) control signature with the Secret Key; when the signature, the purse number and the mode check out, the balance is credited. LMI_SYS_TRANS_NO is stored as the transaction id; a second notification with the same id is ignored.
  4. The customer returns to "Add funds" through the Success/Fail URL. That return only redirects; it never credits.

Statuses

  • Completed: signed notification, LMI_MODE=0 (live) and an amount that matches what was expected.
  • Pending: the pre-request arrived but the notification has not; or WebMoney (if enabled in your settings) sent an LMI_FAILREQUEST=1 failure notice. The failure notice is unsigned, so the payment is not closed, only the LMI_ERR code is written to the payment memo and the customer may retry.
  • Hold: the notification carries LMI_HOLD: the transfer is time-protected. Accept the funds on merchant.webmoney.com, then complete the payment under Admin → Payments.
  • Underpaid: the notified amount is below 99% of the expected one.

Test mode

In WebMoney, test mode is a purse setting. While the purse is in test mode, notifications come with LMI_MODE=1 and move no real money. The panel accepts those only while test_mode is ticked on the method; with it off, a test notification is rejected, so a purse accidentally left in test mode on the WebMoney side cannot produce free balance. With test_mode on, the form sends LMI_SIM_MODE=0 (every test payment succeeds). Going live, switch the purse to working mode in WebMoney and untick the box in the panel.

Common problems

  • "Z… cüzdanı USD taşır; panel para birimi …": the purse letter and the panel currency differ. Enter a purse of that currency or change the panel currency.
  • Payment succeeded but no balance: if the record stays "pending" under Admin → Payments, the notification did not arrive or its signature did not match. Check that the Result URL is exactly as above, the signature method is SHA256 and the Secret Key was entered verbatim.
  • The customer sees "invalid signature" on WebMoney: the pre-request was refused: the purse in it is not merchant_id, or the purse is in test mode while test_mode is off in the panel.
  • The customer lands on a page without the reference after paying: "Allow URLs transmitted in the form" is off; harmless, the balance is credited by the notification.